hypeman

package module
v0.0.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 3, 2026 License: MIT Imports: 1 Imported by: 0

README

 ██╗  ██╗  ██╗   ██╗  ██████╗   ███████╗  ███╗   ███╗   █████╗   ███╗   ██╗
 ██║  ██║  ╚██╗ ██╔╝  ██╔══██╗  ██╔════╝  ████╗ ████║  ██╔══██╗  ████╗  ██║
 ███████║   ╚████╔╝   ██████╔╝  █████╗    ██╔████╔██║  ███████║  ██╔██╗ ██║
 ██╔══██║    ╚██╔╝    ██╔═══╝   ██╔══╝    ██║╚██╔╝██║  ██╔══██║  ██║╚██╗██║
 ██║  ██║     ██║     ██║       ███████╗  ██║ ╚═╝ ██║  ██║  ██║  ██║ ╚████║
 ╚═╝  ╚═╝     ╚═╝     ╚═╝       ╚══════╝  ╚═╝     ╚═╝  ╚═╝  ╚═╝  ╚═╝  ╚═══╝

Run containerized workloads in VMs, powered by Cloud Hypervisor, Firecracker, QEMU, and Apple Virtualization.framework. GitHub License Discord


Requirements

Linux

KVM virtualization support required. Supports Cloud Hypervisor, Firecracker, and QEMU as hypervisors.

macOS

macOS 11.0+ on Apple Silicon. Uses Apple's Virtualization.framework via the vz hypervisor.

Quick Start

Install Hypeman (Linux and macOS supported):

curl -fsSL https://get.hypeman.sh | bash

This installs the Hypeman server, CLI, and token tool. The installer:

  • Generates a YAML config file with a random JWT secret
  • Starts the server as a system service (launchd on macOS, systemd on Linux)
  • Creates a CLI config file (~/.config/hypeman/cli.yaml) with a pre-authenticated token

No environment variables needed -- just run hypeman commands immediately after install.

Remote CLI Access

To use the Hypeman CLI from a different machine than the server:

Homebrew (macOS):

brew install kernel/tap/hypeman

Linux:

curl -fsSL https://get.hypeman.sh/cli | bash

Go:

go install 'github.com/kernel/hypeman-cli/cmd/hypeman@latest'

Then create a CLI config file at ~/.config/hypeman/cli.yaml:

base_url: http://<server-host>:8080
api_key: "<token>"

To generate a token, run hypeman-token on the server:

hypeman-token -user-id "my-user" -duration 8760h

Environment variables (HYPEMAN_BASE_URL, HYPEMAN_API_KEY) and CLI flags (--base-url) also work and take precedence over the config file.

Configuration

Hypeman is configured via YAML config files.

Component Config File
Server /etc/hypeman/config.yaml (Linux) or ~/.config/hypeman/config.yaml (macOS)
CLI ~/.config/hypeman/cli.yaml

See config.example.yaml (Linux) and config.example.darwin.yaml (macOS) for all available server options.

Usage

# Pull an image
hypeman pull nginx:alpine

# Boot a new VM (auto-pulls image if needed)
hypeman run --name my-app nginx:alpine

# List running VMs
hypeman ps

# Show all VMs
hypeman ps -a

# View logs (supports VM name, ID, or partial ID)
hypeman logs my-app
hypeman logs -f my-app

# Execute a command in a running VM
hypeman exec my-app whoami

# Shell into the VM
hypeman exec -it my-app /bin/sh

VM Lifecycle

# Stop the VM
hypeman stop my-app

# Start a stopped VM
hypeman start my-app

# Put the VM in standby (snapshot to disk, stop hypervisor)
hypeman standby my-app

# Restore the VM from standby
hypeman restore my-app

# Delete all VMs
hypeman rm --force --all

Ingress (Reverse Proxy)

Create a reverse proxy from the host to your VM:

# Create an ingress
hypeman ingress create --name my-ingress my-app --hostname my-nginx-app --port 80 --host-port 8081

# List ingresses
hypeman ingress list

# Test it
curl --header "Host: my-nginx-app" http://127.0.0.1:8081

# Delete an ingress
hypeman ingress delete my-ingress

TLS & Subdomain Routing

# TLS-terminating ingress (requires DNS credentials in server config)
hypeman ingress create --name my-tls-ingress my-app \
  --hostname hello.example.com -p 80 --host-port 7443 --tls

# Test TLS
curl --resolve hello.example.com:7443:127.0.0.1 https://hello.example.com:7443

# Subdomain-based routing
hypeman ingress create --name subdomain-ingress '{instance}' \
  --hostname '{instance}.example.com' -p 80 --host-port 8443 --tls

# Delete all ingresses
hypeman ingress delete --all

Advanced Logging

# View Cloud Hypervisor logs
hypeman logs --source vmm my-app

# View Hypeman operational logs
hypeman logs --source hypeman my-app

For all available commands, run hypeman --help.

Development

See DEVELOPMENT.md for build instructions, configuration options, and contributing guidelines.

License

See LICENSE.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var OpenAPIYAML []byte

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
cmd
api command
gen-jwt command
vz-shim command
Package main implements hypeman-vz-shim, a subprocess that hosts vz VMs.
Package main implements hypeman-vz-shim, a subprocess that hosts vz VMs.
lib
builds
Package builds implements registry token generation for secure builder VM authentication.
Package builds implements registry token generation for secure builder VM authentication.
builds/builder_agent command
Package main implements the builder agent that runs inside builder microVMs.
Package main implements the builder agent that runs inside builder microVMs.
dns
Package dns provides a local DNS server for dynamic instance resolution.
Package dns provides a local DNS server for dynamic instance resolution.
hypervisor
Package hypervisor provides an abstraction layer for virtual machine managers.
Package hypervisor provides an abstraction layer for virtual machine managers.
hypervisor/cloudhypervisor
Package cloudhypervisor implements the hypervisor.Hypervisor interface for Cloud Hypervisor VMM.
Package cloudhypervisor implements the hypervisor.Hypervisor interface for Cloud Hypervisor VMM.
hypervisor/qemu
Package qemu implements the hypervisor.Hypervisor interface for QEMU.
Package qemu implements the hypervisor.Hypervisor interface for QEMU.
hypervisor/vz
Package vz implements the hypervisor.Hypervisor interface for Apple's Virtualization.framework on macOS via the vz-shim subprocess.
Package vz implements the hypervisor.Hypervisor interface for Apple's Virtualization.framework on macOS via the vz-shim subprocess.
hypervisor/vz/shimconfig
Package shimconfig defines the configuration types shared between the hypeman API server and the vz-shim subprocess.
Package shimconfig defines the configuration types shared between the hypeman API server and the vz-shim subprocess.
logger
Package logger provides structured logging with subsystem-specific levels and OpenTelemetry trace context integration.
Package logger provides structured logging with subsystem-specific levels and OpenTelemetry trace context integration.
middleware
Package middleware provides HTTP middleware for the hypeman API.
Package middleware provides HTTP middleware for the hypeman API.
oapi
Package oapi provides primitives to interact with the openapi HTTP API.
Package oapi provides primitives to interact with the openapi HTTP API.
otel
Package otel provides OpenTelemetry initialization and configuration.
Package otel provides OpenTelemetry initialization and configuration.
paths
Package paths provides centralized path construction for hypeman data directory.
Package paths provides centralized path construction for hypeman data directory.
registry
Package registry implements an OCI Distribution Spec registry that accepts pushed images and triggers conversion to hypeman's disk format.
Package registry implements an OCI Distribution Spec registry that accepts pushed images and triggers conversion to hypeman's disk format.
resources
Package resources provides host resource discovery, capacity tracking, and oversubscription-aware allocation management for CPU, memory, disk, and network.
Package resources provides host resource discovery, capacity tracking, and oversubscription-aware allocation management for CPU, memory, disk, and network.
system/init command
Package main implements the hypeman init binary that runs as PID 1 in guest VMs.
Package main implements the hypeman init binary that runs as PID 1 in guest VMs.
vm_metrics
Package vm_metrics provides real-time resource utilization metrics for VMs.
Package vm_metrics provides real-time resource utilization metrics for VMs.
vmconfig
Package vmconfig defines the configuration schema passed from host to guest VM.
Package vmconfig defines the configuration schema passed from host to guest VM.
vmm
Package vmm provides primitives to interact with the openapi HTTP API.
Package vmm provides primitives to interact with the openapi HTTP API.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL