"The man in black fled across the desert, and the gunslinger followed."
A modern, daemonless OCI container manager built in Go. Rootless by default, with native OCI v1.1 artifact support and a security-first architecture.
Made by garnizeH labs - 2026.
Status: Pre-implementation (design and specification phase complete)
Maestro aims to be the container tool developers reach for when they want Docker-level UX with Podman-level security, plus native OCI v1.1 artifact support that no existing tool does well out of the box.
Key design decisions:
- Daemonless — no long-running daemon; each CLI invocation is self-contained
- Rootless by default — all operations run without root (Calla mode)
- OCI v1.1 native — first-class support for artifacts, referrers API, and supply chain security
- Pluggable runtimes — runc, crun, youki, gVisor, and Kata via the Eld interface
- Library-first — core logic as Go libraries; CLI is a thin wrapper
All internal components are named after Stephen King's The Dark Tower mythology:
| Component | Dark Tower Name | Role |
|---|---|---|
| Core engine | Tower | Orchestrates all subsystems |
| Image manager | Maturin | Content-addressable store, pull/push |
| Container lifecycle | Gan | Create, start, stop, kill, exec |
| Runtime abstraction | Eld | Interface for runc/crun/youki/gVisor/Kata |
| Network manager | Beam | CNI integration, DNS, port mapping |
| Storage manager | Prim | Snapshotter abstraction, volumes |
| Registry client | Shardik | OCI Distribution Spec v1.1.0 |
| Security | White | Seccomp, capabilities, rootless, signing |
| Artifact manager | Rose | OCI artifacts via ORAS |
| State store | Waystation | File-based state with flock locking |
| API server | Positronics | Optional gRPC/REST socket mode |
| TUI dashboard | Glass | Terminal UI with bubbletea |
| CLI layer | Dinh | cobra-based command interface |
See docs/dark-tower-naming-map.md for the full naming reference with justifications.
maestro/
├── cmd/maestro/ # Application entry point
├── internal/
│ ├── tower/ # Core engine
│ ├── maturin/ # Image management
│ ├── gan/ # Container lifecycle
│ ├── eld/ # Runtime abstraction
│ ├── beam/ # Network management
│ ├── prim/ # Storage management
│ ├── shardik/ # Registry client
│ ├── white/ # Security subsystem
│ ├── rose/ # Artifact management
│ ├── waystation/ # State management
│ ├── positronics/ # API server (socket mode)
│ ├── glass/ # TUI dashboard
│ └── cli/ # CLI commands (Dinh)
├── pkg/
│ ├── types/ # Shared type definitions
│ ├── client/ # Positronics API client
│ └── specgen/ # OCI spec generator
├── configs/ # Default configs (seccomp, CNI, katet.toml)
├── openspec/ # OpenSpec behavioral specifications
│ ├── config.yaml # Project config
│ ├── specs/ # Source of truth (13 component specs)
│ ├── changes/ # Active changes
│ └── schemas/maestro/ # Custom schema + templates
├── docs/
│ ├── design-document.md # Full architecture design
│ ├── roadmap.md # Implementation roadmap (209 tasks)
│ ├── agent-protocol.md # Development protocol
│ ├── dark-tower-naming-map.md
│ └── oci-ecosystem-research.md
├── test/
│ ├── integration/ # Integration tests
│ ├── e2e/ # End-to-end tests
│ └── testutil/ # Test helpers
├── go.mod
├── Makefile
├── CHANGELOG.md
└── README.md
- Go 1.26.2+
- Git
- An OCI runtime: crun (recommended), runc, or youki
- conmon-rs (container monitor)
- CNI plugins: containernetworking/plugins
- For rootless:
newuidmap/newgidmap, entries in/etc/subuidand/etc/subgid - For rootless networking: pasta (recommended) or slirp4netns
Implementation has not started yet. The commands below represent the target UX.
# Build
make build
# Run a container (rootless by default)
maestro run -d -p 8080:80 --name web nginx:latest
# List containers
maestro ps
# View logs
maestro logs -f web
# Stop and remove
maestro stop web
maestro rm web
# Pull an image
maestro pull alpine:latest
# TUI dashboard
maestro dashboard
# System diagnostics
maestro system checkMaestro uses TOML configuration at ~/.config/maestro/katet.toml:
[runtime]
default = "crun"
[storage]
driver = "overlay"
max_size = "50GB"
[network]
default_subnet = "10.99.0.0/16"
dns_enabled = true
[security]
rootless = true
default_seccomp = "builtin"See configs/katet.toml.example for the full reference.
make build # Compile binary
make test # Unit tests (with -race)
make test-integration # Integration tests
make test-e2e # End-to-end tests
make lint # golangci-lint
make fmt # gofumpt
make clean # Remove build artifactsThis project follows a strict development protocol. The four laws:
- Tests Passing — writing tests is sine qua non; 70% coverage minimum
- Documentation Updated — specs, help text, README
- Commit on Task Branch — conventional commits, never commit to main
- Roadmap is Source of Truth — docs/roadmap.md reflects reality at all times
p<phase>/<milestone>-<description>
Examples: p1/1.2-drawing-image-pull, p1/3.1-dinh-root-command
<type>(<component>): <description>
Roadmap #N, <change-name>
Types: feat, fix, test, refactor, docs, chore, perf
Components: tower, maturin, gan, eld, beam, prim, shardik, white, rose, waystation, positronics, glass, dinh
The implementation is organized in three phases:
Pull and run a container rootless on Linux. 87 tasks, 243 requirements, 992 scenarios.
- 1.1 The Tower rises (scaffold, CLI, config, state store)
- 1.2 Drawing of the Three (image pull from registries)
- 1.3 Gan creates (container run with OCI runtime)
- 1.4 The Beam connects (networking with CNI)
- 1.5 The Calla stands (rootless mode, security defaults)
Feature-complete for daily development. 66 tasks.
- 2.1 Maturin grows (push, tag, save, load, GC)
- 2.2 Roland's arsenal (exec, logs, stats, pause, cp)
- 2.3 The Dogans persist (volumes)
- 2.4 Beams multiply (custom networks, DNS)
- 2.5 Eld's lineage (multi-runtime support)
- 2.6 Maerlyn's Rainbow (TUI dashboard)
Supply chain security, artifacts, API server. 39 tasks.
- 3.1 The Eld Mark (image signing, verification)
- 3.2 The Rose blooms (OCI artifact management)
- 3.3 Positronics awakens (gRPC API server)
- 3.4 Systemd integration
- 3.5 Lazy Drawing (eStargz lazy pull)
- 3.6 Other worlds (macOS/Windows via VM)
Full details: docs/roadmap.md
| Document | Description |
|---|---|
| Design Document | Full architecture with component design, data models, and API |
| Roadmap | 209 tasks with dependencies, complexity, and acceptance criteria |
| OCI Research | Comprehensive OCI ecosystem research |
| Dark Tower Naming | Component-to-mythology mapping with justifications |
| Category | Choice |
|---|---|
| Language | Go 1.26.2+ |
| CLI | cobra v1.10+ |
| TUI | bubbletea v2 + lipgloss v2 |
| Registry | go-containerregistry v0.21+ |
| Artifacts | oras-go v2 |
| Networking | CNI v1.3 + plugins v1.9 |
| Config | TOML via go-toml v2 |
| Logging | zerolog |
| API | gRPC + grpc-gateway |
"Go then, there are other worlds than these." — Jake Chambers