box/templates/staging/box.env
claude-hdb 1d6ce0e51a feat(templates): staging — server-class VM, docker + rig, creds-free
Debian 13 cloud image, user 'ops', build-sized resources (the control
plane builds on the target), BOX_REQUIRE_VM + BOX_AUTOSTART. cloud-init
installs docker, rig and tmux and stops: tailscale, openssh-server and
every credential are deliberately absent — rig installs and hardens those
at bootstrap time ('box shell' → 'sudo rig bootstrap workload'), and box
never sees the auth key. No agent, no agent-context file: a server, not
an agent devbox. tmux rides along because 'box tmux' is a contract every
template honors (#65), staging included.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 14:50:43 +00:00

18 lines
903 B
Bash

# The staging template — a server-class box: docker + rig, no agent, no creds.
# KEY="value" only. Parsed against an allowlist, never sourced; there is no
# key for a network or a security flag, on purpose — the shared box-net
# profile is the placement contract and no template can weaken it.
# BOX_USER must match the user user-data.yaml creates.
#
# BOX_REQUIRE_VM: no container fallback — the VM is the staging trust
# boundary, and the guest runs docker. BOX_AUTOSTART: a staging server must
# come back on its own after a host reboot. Resources are build-sized: the
# control plane builds on the target.
BOX_DESCRIPTION="Server-class staging VM: docker + rig preinstalled; converge with 'rig bootstrap workload' inside, then register in the control plane"
BOX_IMAGE="images:debian/13/cloud"
BOX_USER="ops"
BOX_CPU="4"
BOX_MEMORY="8GiB"
BOX_DISK="100GiB"
BOX_REQUIRE_VM="1"
BOX_AUTOSTART="1"