This directory contains container templates for the stapeln container ecosystem. The stapeln stack provides verified container packaging, edge gateway policies, runtime monitoring, and supply-chain signing for Podman-based deployments using Chainguard Wolfi base images.
All files use {{PLACEHOLDER}} tokens that are replaced by just container-init
(or by the top-level just init during project bootstrap).
The stapeln container ecosystem comprises six interconnected tools:
- selur (compose)
-
Container orchestration with zero-copy IPC for co-located services. Reads
compose.tomlfiles. Falls back to standard Podman Compose when the selur driver is unavailable. - cerro-torre (bundles and signing)
-
Verified container packaging. Produces
.ctpbundles from OCI images, signs them with Ed25519, and verifies the full chain. Tools:ct pack,ct sign,ct verify,ct push,ct explain. - svalinn (edge gateway)
-
Policy-driven reverse proxy. Enforces authentication, rate limiting, CORS, and container trust policies defined in
.gatekeeper.yaml. - vordr (monitoring)
-
Runtime container monitoring. Watches health endpoints, detects crashes, tracks resource usage, and emits structured logs.
- rokur (secrets)
-
Secrets management for container deployments. Injects secrets at runtime without baking them into images. Currently a stub/placeholder.
- k9-svc (deployment components)
-
Nickel-based deployment specification. Components declare their pedigree (identity, target, security, validation, recipes) and execute at one of three trust levels: Kennel (data only), Yard (evaluation), Hunt (full execution with cryptographic handshake).
# Option 1: During project bootstrap (includes all placeholders)
just init
# Option 2: Container-specific initialisation
just container-initThe container-init recipe prompts for container-specific values
(service name, port, registry) and substitutes all {{PLACEHOLDER}}
tokens in the container/ directory.
# 1. Build the container image
just container-build
# 2. Verify the compose configuration
just container-verify
# 3. Start the stack locally
just container-up --detach
# 4. Check logs
podman compose --file container/compose.toml logs -f
# 5. Stop the stack
just container-down# 1. Build, sign, and verify the .ctp bundle
just container-sign
# 2. Push the signed bundle to the registry
just container-push
# 3. Deploy on the target host
selur-compose up --detachFor k9-svc managed deployments:
# Validate the deployment component
nickel typecheck container/deploy.k9.ncl
# Deploy (requires Hunt-level authorisation)
k9-svc deploy container/deploy.k9.ncl --env productionAll Containerfiles use Chainguard Wolfi base images:
-
Builder stage:
cgr.dev/chainguard/wolfi-base:latest -
Runtime stage:
cgr.dev/chainguard/wolfi-base:latest(orcgr.dev/chainguard/static:latestfor statically-linked binaries)
Chainguard images are minimal, CVE-free, and rebuilt daily. They use the
apk package manager (Alpine-compatible).
