Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add instructions/aviator-coding/home-ops/agents-mdgit clone --depth 1 https://github.com/Aviator-Coding/home-opsWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.24881 | $0.24881 |
| Opus 5 | $0.12441 | $0.12441 |
| Sonnet 5 | $0.04976 | $0.04976 |
| Haiku 4.5 | $0.02488 | $0.02488 |
Grade A, and why
home-ops AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 203 lines — stays where its author put it; the contents beside it link to each section on GitHub.
PROJECT KNOWLEDGE BASE
Home-ops GitOps repo for a 3-node Talos Linux Kubernetes cluster managed by Flux v2. CLAUDE.md is a symlink to this file. For narrower operator detail see talos/AGENTS.md and bootstrap/AGENTS.md.
Core stack: Talos Linux (immutable OS) + Flux v2 (GitOps) + Cilium (CNI, BGP LoadBalancer, kube-proxy replacement, no L2 announcements) + Rook-Ceph (storage) + External Secrets Operator/1Password (secrets) + Cloudflare Tunnel (external access) + External-DNS (split DNS: network/cloudflare-dns public, network/unifi-dns internal) + VolSync (triple-destination backup). Gateway API HTTPRoutes front envoy-internal/envoy-external gateways in network. Monitoring: kube-prometheus-stack + Loki + Promtail + Tempo + Grafana + Alertmanager + Gatus + kromgo + KEDA + unpoller, all in monitoring.
STRUCTURE
.
├── kubernetes/
│ ├── apps/ # 19 namespaces at apps/base/<ns> + overlay apps/main/<ns> (see NOTES)
│ ├── clusters/main/ # Flux entry point: meta.yaml + apps.yaml (see NOTES)
│ └── components/ # alerts, common, dragonfly, volsync, kopiur (Stage 3 parallel)
├── talos/ # minijinja templates (see talos/AGENTS.md)
├── bootstrap/ # just bootstrap stages (see bootstrap/AGENTS.md)
├── .taskfiles/ # included: 1password, k8s, flux, rook, network, actions-runner
├── terraform/ # OpenTofu stacks for config outside Flux's reach (see NOTES)
├── docs/ # runbooks, incident history, ceph/network notes
└── .renovate/ # Renovate presets
Gatus is an app under kubernetes/apps/base/monitoring/gatus, not a component. Endpoints come from the gatus.home-operations.com/endpoint HTTPRoute annotation (auto-discovered) or hand-written entries in app/resources/config.yaml for non-HTTPRoute checks - not the dead gatus.io/enabled ConfigMap pattern (see NOTES).
WHERE TO LOOK
| Task | Location | Notes |
|---|---|---|
| Add new app | kubernetes/apps/base/{namespace}/{app}/ + overlay kubernetes/apps/main/{namespace}/{app}.yaml |
Overlay is a Flux Kustomization CR (one yaml per former ks.yaml). All 19 namespaces are on this layout. See NOTES. |
| Add app to namespace | kubernetes/apps/main/{namespace}/kustomization.yaml |
Add - ./{app}.yaml |
| Enable backups | overlay kubernetes/apps/main/{ns}/{app}.yaml |
VolSync: spec.components + dependsOn: volsync (namespace system) + VOLSYNC_* keys (example: media/seerr.yaml). Stage 3 dual-engine also adds components/kopiur + measured KOPIUR_* keys - owner: kubernetes/components/kopiur/Readme.md |
| App secrets | kubernetes/apps/base/{ns}/{app}/app/externalsecret.yaml |
OnePassword via ClusterSecretStore onepassword |
| Bootstrap secrets | bootstrap/kustomize/apps/security/ |
vals injects ref+op://Home-Lab/1password/* |
| Flux entry point | kubernetes/clusters/main/{meta,apps}.yaml |
cluster-meta -> cluster-apps dependency chain |
| Helm/OCI repos | kubernetes/apps/base/flux-system/meta/repos/ |
3 repo yaml files plus kustomization.yaml |
| Talos node config | talos/machineconfig.yaml.j2 + talos/nodes/*.yaml.j2 + talos/schematic.yaml.j2 |
Rendered by just talos, not Flux |
| Task commands | Taskfile.yaml + .taskfiles/{domain}/ |
task --list-all. Split with just: see UNIQUE STYLES |
| CI workflows | .github/workflows/ |
flate, renovate, codeql, image-pull, label-sync, validate, terraform-diff, terraform-publish, ai-pr-review, plus build-talosctl-busybox, labeler, tag, test-runner |
| Branch protection | GitHub ruleset on main, applied via gh api (not in Git) |
docs/branch-protection.md. Only Labeler - Labeler is a required status check today - flate/image-pull/validate all path-filter at the on: pull_request: trigger level, so they never post a check outside their paths and are unsafe to require as-is (see doc for the live-measured proof and the follow-up needed to close the gap) |
| Renovate config | .renovaterc.json5 + .renovate/ |
Presets/config (extends Aviator-Coding/mortyops + local, incl. .renovate/talos.json5). Live writer is the in-cluster CronJob (kubernetes/apps/base/renovate/); GHA .github/workflows/renovate.yaml schedule is commented out as two-minute rollback. Owner: kubernetes/apps/base/renovate/README.md |
| Tool versions | .mise.toml |
kubectl, flux, talos, helm, kustomize, vals, 1password-cli, just, minijinja, etc. Resolve with mise which <cli> / mise exec (see NOTES). |
| Authentik SSO config | terraform/authentik/ (OpenTofu) |
Adopted apps/providers via import blocks, plus stack-created LiteLLM OIDC (litellm.tofu). Other flows/stages/mappings stay Authentik-blueprint data sources. Never tofu apply without an explicit go-ahead. Runbook: docs/authentik/terraform.md |
| AI stack | kubernetes/apps/main/ai/ (Flux Kustomizations) + kubernetes/apps/base/ai/ (manifests) |
Hermes + ToolHive (toolhive.stacklok.dev/v1alpha1 MCPServer) + agentgateway + LiteLLM (governance + fallback chains; internal route only since 2026-08-26, never the public listener; delivered by litellm.home-operations.com/v1alpha1 CRs from ai/litellm-operator - docs/ai-system/litellm/{README,fallbacks}.md). kagent/kmcp tombstones: docs/ai-system/{kagent,kmcp}. Retired 2026-08-22: docs/ai-system/retired-2026-08-22.md |
| konflate (PR review UI) | kubernetes/apps/base/flux-system/konflate/ |
Read-only Flux PR-review UI, internal HTTPRoute only. Write-back is off and no GitHub credential is in-cluster (public-repo anonymous reads). Do not copy the reference repo's write-back / shared GitHub App wiring. |
| PVC write-access check | kubernetes/apps/base/system/pvc-writable-check/ |
CronJob (every 6h) execs test -w <mountPath> in every PVC-mounting container and alerts via PrometheusRule on genuine failure - the check that would have caught the autobrr/rsshub-playwright empty-volume bugs (2026-08-30). Cluster-wide pods get/list plus per-namespace pods/exec: create RoleBindings that deliberately omit rook-ceph, database, and security (API-server denial, not script-only); design rationale and that RBAC tradeoff are in the app's README. Prefer volumeMounts[].readOnly: true for expected read-only (headlamp); the pod-wide skip annotation is an unused escape hatch. |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 203 lines · 24,881 tokens per session scan A 3e0bba4467ce
home-ops AGENTS.md is an instructions file published in the GitHub repository Aviator-Coding/home-ops (2 stars, last pushed yesterday), licensed MIT. It adds 24,881 tokens to every session, about $0.1244 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
codex AGENTS.md
AGENTS.md instructions for openai/codex, covering rust/codex-rs, the codex-core crate, code review rules, crate api surface and model visible context.
buildNext
Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).
next.js AGENTS.md
Instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.
vscode oss-third-party-notices.instructions.md
Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, applying the notice (cutover) and fallback chain (never fail the build).
spec-kit AGENTS.md
Instructions for github/spec-kit, covering agents.md, about spec kit and specify, quickstart — add a new integration in 5 steps, integration architecture and integrationmanifest — file tracking.
langchain AGENTS.md
Instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.