Files
oikos/.agents/NOMOS.md
dtoro d80a394b7f
Some checks failed
ci / build-test (push) Has been cancelled
ci / docker-build (push) Has been cancelled
docs: fix plan/repo drift, retire dead Goose+Nomos and Caveman tooling
Documentation and repo-hygiene pass following the client/server split:

Plan drift (audited all other active plans against current code):
- oikos-gaps-and-improvements.md: mark Section C and D.5 resolved (both
  described cmd/hermes, renamed to cmd/nomos with a real LLM loop since);
  refresh ~10 stale file:line citations; fix tool-count (33, not 28).
- liveness-drift-and-ux-cohesion.md: fix stale default-model claim (now
  deepseek-v4-pro since 2026-07-10) and "not yet deployed" status.
- nomos-agent-code-review.md: fix C1's citation (one unauthenticated route
  to nomos now, not two, after the client/server split).
- wails-desktop-app.md: record the production deploy outcome.

Repo structure: added missing directories to README/CONTRIBUTING layout
tables (checks/, tools/, cmd/webhook/, docs/operations/), fixed a broken
link, added ADR 0015 documenting the auth/CORS/client-split model (there
wasn't one despite CONTRIBUTING's own process requiring it), normalized
ADR 0013/0014's format drift, added an Authentication section to
AGENTS.md/CLIENTS.md (every example call was missing the now-required
bearer header).

Retired the Goose+Nomos workstation flow (bootstrap.sh --with-nomos,
tools/setup-nomos-soul.sh, .agents/operations/nomos-agent.md) and the
Caveman auto-install tooling (tools/setup-caveman.sh, tools/caveman/) —
both superseded by the production containerized Nomos agent, which has
never used either. Kept .agents/shared/caveman.md itself (the terse
writing-style convention agents still follow by reading it).

Deleted the orphaned legacy Python oikos/ directory — nothing imports it,
and bin/homelab (the CLI it was kept for) no longer exists in the repo.

Rewrote .agents/operations/agent-enrollment.md (365 -> ~110 lines) and
commands.md to match the current architecture instead of the retired
`homelab` CLI; migrated the still-true networking prerequisites (Netbird,
split-horizon DNS, SSH key distribution) into the knowledge base as a
runbook via upsert_knowledge rather than duplicating them in markdown.
Updated all 10 .agents/skills/ runbooks referencing the dead CLI with
their real MCP tool / REST API equivalents, or flagged them as needing
verification where no equivalent is confirmed yet.

Two real bugs found and fixed, not just docs:
- The tools/setup-*.sh auto-setup glob was tools/*.setup.sh in THREE
  places (tools/post-pull.sh, bootstrap.sh, and internal/httpapi/impl.go's
  GetClientContext handler) since the mechanism's introduction on
  2026-06-02 — never matched any real filename, so no client has ever
  picked up an auto-setup script via git-pull or the context-poller sync.
  Fixed all three; the Go server-side fix is the one that actually matters
  since it's what the current context-poller mechanism depends on.
- bootstrap.sh removed dead vestigial --gitea-token/--gitea-user flags
  (parsed, never consumed) left over from an earlier clone-based model.

Also flagged, not fixed (documented as an open gap in
client-enrollment/SKILL.md): bootstrap.sh tells a freshly-enrolled client
to call POST /api/v1/clients/{slug}/activate to finish enrollment, but
that route doesn't exist in api/openapi.yaml — EnrollClient sets entities
to provisioning and nothing currently transitions them to active.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-12 18:19:41 +02:00

1.9 KiB

NOMOS.md — Agent persona for homelab clients

This file is the canonical agent persona for AI agents running on machines in the hubris homelab (Claude Code, Codex, or similar). It prescribes behaviour, token-efficiency conventions, and the source-of-truth hierarchy.

The production Nomos agent (cmd/nomos, the containerized MCP client gateway everyone actually talks to) uses a separate, code-adjacent persona — nomos/SOUL.md, baked into its Docker image at build time (compose/nomos/Dockerfile). This file is unrelated to that one; it's for AI coding agents working on a homelab client machine, not the Nomos service itself.

Source of truth

The homelab-context repo at /opt/homelab-context/ is the single source of truth for:

  • Fleet topology (inventory.yaml)
  • Agent behaviour and conventions
  • Everything in this file

When in doubt, check /opt/homelab-context/ first, or query the Oikos API/MCP server directly (see AGENTS.md §3-4) — the database is authoritative at runtime.

Runbooks — load, don't rediscover

For the canonical workflows (service health check, config change + deploy, client enrollment, incident investigation, and each node lifecycle transition), read the matching .agents/skills/<name>/SKILL.md before acting. Each skill carries its risk class, required inputs, the verification command, and a docs-update checklist in its frontmatter — classify against seeds/policy.yaml using that risk class before any mutation. Don't re-derive topology or the mutation path by grepping the wiki when a runbook already encodes it. See OIKOS.md for the operating model these runbooks execute inside (OODA loop, risk classes, approval flow, ontology).

Token efficiency

Apply caveman.md — terse, fragment-heavy chat responses (not committed documentation). There's no separate tool to install for this; it's a response-style convention any agent follows by reading the file.