Completes v0.1: documentation, build/install path, and version stamping. - cli/VERSION (v0.1.0) stamped into the binary via ldflags. - cli/README.md rewritten as the homelab overview (verbs + tiers, manifest, build, the preserved legacy webhook use-cases). - docs/adr/0004-0006: why homelab exists (grown in place from infra/cli, not a separate repo), v0.1 scope + everything-allowed/tiers-recorded, and the work/tf behaviour (native worktree entry, verification-gated auto-land, presence-coupled apply). - setup-devvm.sh builds cli/ -> /usr/local/bin/homelab each provisioning run (t3-dispatch pattern), so every devvm user gets the current binary. - AGENTS.md: discovery pointer under Common Operations. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.7 KiB
1.7 KiB
homelab: a unified infra-ops CLI grown in place from infra/cli
Agents re-derive the same operational command boilerplate every session — mining
51,116 bash commands across 2,225 past sessions showed dense, repeated patterns
(the infra inner-loop alone is ~29%). We are building homelab, one CLI encoding
the deterministic, repeated actions (not judgment) agents run — composable in
bash, JSON-capable, and discovered progressively via homelab manifest. It is
grown in place in cli/ (the existing infra-cli), absorbing new verb-groups
alongside the preserved legacy webhook use-cases. Versioned with a cli/VERSION
file (the infra repo deploys continuously and does not cut semver tags).
Considered options
- Its own top-level repo (the original plan) — rejected in favour of keeping
it where the Terraform/Terragrunt and
scripts/tgit drives already live; the Go source isn't git-crypt-encrypted and a provision-time build is unaffected by GitOps continuous-deploy. - A fresh CLI ignoring infra-cli — rejected: strands the VPN/DNS/email webhook use-cases.
- Raw kubectl/tg/ssh + skills + MCP only — kept for everything outside the recurring action surface (methodology skills; third-party/owned MCP such as phpIPAM, which homelab does NOT duplicate).
Consequences
- The binary is dual-purpose: the agent-facing
homelabverb surface AND the in-clusterinfra-cliwebhook image.main()front-dispatches homelab verbs and falls through to the legacy-use-casepath verbatim. - Distribution: built from source to
/usr/local/bin/homelabduring devvm provisioning (t3-dispatchprecedent), refreshed byt3-autoupdate.