31 lines
1.7 KiB
Markdown
31 lines
1.7 KiB
Markdown
|
|
# 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/tg` it 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 `homelab` verb surface AND the
|
||
|
|
in-cluster `infra-cli` webhook image. `main()` front-dispatches homelab verbs
|
||
|
|
and falls through to the legacy `-use-case` path verbatim.
|
||
|
|
- Distribution: built from source to `/usr/local/bin/homelab` during devvm
|
||
|
|
provisioning (`t3-dispatch` precedent), refreshed by `t3-autoupdate`.
|