Skip to content

Conversation

@rgarcia
Copy link
Contributor

@rgarcia rgarcia commented Dec 2, 2025

Summary

Adds new hypeman push command that loads images from the local Docker daemon and pushes them to the hypeman server's OCI registry.

Features

  • Load images from local Docker daemon via go-containerregistry
  • Push to hypeman server's /v2 OCI Distribution endpoints
  • Automatic digest reference conversion (ensures server triggers image conversion)
  • JWT authentication via HYPEMAN_API_KEY or HYPEMAN_BEARER_TOKEN

Usage

# Push with original name
hypeman push alpine:latest

# Push with custom target name  
hypeman push myimage:v1 custom-name

New Files

  • pkg/cmd/push.go - Push command implementation

Modified Files

  • pkg/cmd/cmd.go - Register push command
  • go.mod / go.sum - Add go-containerregistry dependency

Test Plan

  • Build succeeds
  • Manual test: hypeman push alpine:latest successfully pushes to local server
  • Layer caching works (second push skips blob uploads)

Related

Add new `hypeman push` command that loads images from the local Docker
daemon and pushes them to the hypeman server's OCI registry endpoint.

Features:
- Load images from local Docker daemon
- Push to hypeman server at /v2 endpoints
- Automatic digest reference conversion for reliable conversion trigger
- JWT authentication via HYPEMAN_API_KEY or HYPEMAN_BEARER_TOKEN

Usage:
  hypeman push alpine:latest           # Push with original name
  hypeman push myimage:v1 custom-name  # Push with custom target name
@mesa-dot-dev
Copy link

mesa-dot-dev bot commented Dec 2, 2025

Mesa Description

Summary

Adds new hypeman push command that loads images from the local Docker daemon and pushes them to the hypeman server's OCI registry.

Features

  • Load images from local Docker daemon via go-containerregistry
  • Push to hypeman server's /v2 OCI Distribution endpoints
  • Automatic digest reference conversion (ensures server triggers image conversion)
  • JWT authentication via HYPEMAN_API_KEY or HYPEMAN_BEARER_TOKEN

Usage

# Push with original name
hypeman push alpine:latest

# Push with custom target name  
hypeman push myimage:v1 custom-name

New Files

  • pkg/cmd/push.go - Push command implementation

Modified Files

  • pkg/cmd/cmd.go - Register push command
  • go.mod / go.sum - Add go-containerregistry dependency

Test Plan

  • Build succeeds
  • Manual test: hypeman push alpine:latest successfully pushes to local server
  • Layer caching works (second push skips blob uploads)

Related

Description generated by Mesa. Update settings

Copy link

@mesa-dot-dev mesa-dot-dev bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Performed full review of 9d7cf81...e120ec6

Analysis

  1. Authentication Inconsistency: The push command silently allows unauthenticated pushes while other commands (like exec) require HYPEMAN_API_KEY, potentially causing confusing 401/403 errors without clear error messages.

  2. Hardcoded Insecure Registry: The implementation uses hardcoded name.Insecure which is inappropriate for production deployments and should be configurable based on URL scheme.

  3. Limited Error Handling: Server response validation is minimal, potentially obscuring the root cause when pushes fail due to authentication or authorization issues.

  4. Missing Progress Feedback: No progress indication is provided for large image uploads, which could lead to poor user experience.

Tip

Help

Slash Commands:

  • /review - Request a full code review
  • /review latest - Review only changes since the last review
  • /describe - Generate PR description. This will update the PR body or issue comment depending on your configuration
  • /help - Get help with Mesa commands and configuration options

4 files reviewed | 0 comments | Edit Agent SettingsRead Docs

All commands now check HYPEMAN_BASE_URL env var as fallback when
--base-url flag is not provided. Precedence: flag > env var > default.

This makes it easier to configure the CLI for different environments
without passing --base-url on every command.
@rgarcia rgarcia merged commit 7a633ef into main Dec 4, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants