5.3 KiB
5.3 KiB
AGENTS.md
Note
Infrapuzzle is the monorepo for my personal infrastructure, encompassing Kubernetes cluster provisioning, workload deployment, DNS management, and IoT monitoring.
Repository Structure & Documentation
This repository is divided into distinct domains, each with its own AGENTS.md or specialized documentation.
1. Bootstrap (bootstrap/)
- Purpose: Provisioning the single-node Kubernetes cluster (Haumdaucher).
- Tool: Kubespray (Ansible).
- Key File:
init.sh(Source of Truth for versioning). - Read: bootstrap/AGENTS.md
2. Kubernetes Workloads (k8s/)
- Purpose: Deploying applications and services to the cluster.
- Method: GitOps-style directory structure (Namespace = Folder).
- Constraints: Enforces
ingress-nginx,cert-manager(Let's Encrypt), andgit-cryptfor secrets. - OpenClaw: For OpenClaw AI agent deployment and troubleshooting, see k8s/openclaw/AGENTS.md and k8s/openclaw/TROUBLESHOOTING.md.
- Read: k8s/AGENTS.md
3. Terraform (terraform/)
- Purpose: Infrastructure as Code for external resources, primarily DNS.
- Provider: OVH (
ovh/ovh). - Scope:
- DNS Zones:
haumdaucher.de,moritzgraf.de,ameliegraf.de, and others. - Mail Config: Google Workspace MX/SPF/DKIM records.
- Cluster IP: Points domains to the Haumdaucher node IP (
136.243.23.215).
- DNS Zones:
- Usage:
cd terraform terraform init terraform apply
4. Monitoring (monitoring/)
- Purpose: IoT and physical device monitoring, separate from K8s metrics.
- Tool: ESPHome.
- Devices: Temperature sensors, plant monitors (Xiaomi/BLE), ESP32 bridges.
- Usage:
cd monitoring # Flash or update a device esphome run config/<device>.secret.yml - Network: Devices typically operate on static IPs in the
192.168.x.xrange.
5. Knowledge Wiki & OpenClaw Tasks (knowledge-wiki/)
- Purpose: Shared personal knowledge wiki and task dispatch between OpenClaw (mobile/Telegram concierge) and Antigravity (local pair programming agent).
- Location: Git submodule
knowledge-wiki/at root ofinfrapuzzle(Git repo:https://git.moritzgraf.de/moritz/knowledge-wiki.git, branchmain). - Queue File:
knowledge-wiki/tasks/antigravity.md. - Workflow for Antigravity:
- When the user asks to check tasks or pick up work from OpenClaw:
- Pull latest:
git submodule update --remote knowledge-wiki(orgit -C knowledge-wiki pull --rebase origin main) - Read
knowledge-wiki/tasks/antigravity.mdto see pending items. - Implement the chosen task in the appropriate repository files.
- Move the task to
## ✅ Completed Taskswith completion details and commit info. - Push back:
git -C knowledge-wiki commit -am "chore(tasks): complete <task>" && git -C knowledge-wiki push origin main.
- Pull latest:
- When Antigravity needs knowledge about family, home, servers, or setup:
- When the user asks to check tasks or pick up work from OpenClaw:
6. Architecture Decision Records (docs/adr/)
- Purpose: Formal record of architectural decisions, technical trade-offs, and design standards across the monorepo.
- Format: MADR (Markdown Architectural Decision Records).
- Consulting ADRs: AI agents MUST consult
docs/adr/before designing or altering system architecture, agent topologies, or tool integration patterns. - Key Records:
7. Saschas Kronkorken Kreuzzug (projects/sasch40/)
- Purpose: Mobile-first 2.5D retro birthday adventure game for King Sascha's 40th jubilee (
https://sasch40.haumdaucher.de). - Key Rules: Prequel landing screen for QR codes, dynamic GameBoy arcade vs RPG layouts, real-photo character portraits, pure Web Audio synthesizer, competitive certificate scoring.
- Read: projects/sasch40/AGENTS.md
8. Moritz Graf Personal Website (projects/moritzgrafde/)
- Purpose: Personal homepage and portfolio for Moritz Graf (
https://moritzgraf.de). - Manifest:
k8s/web/moritzgrafde.yaml(Namespace:web). - Image:
registry.haumdaucher.de/moritzgrafde:latest. - Key Rules: Static Hugo website using
hugo-goatheme served via Nginx. Migrated from standalonemoritzgrafrepository into this monorepo. - Read: projects/moritzgrafde/AGENTS.md
Global Constraints
- Secrets:
git-cryptis used extensively. Ensure you have the unlock key before editing*.secretfiles. - Identity:
- Cluster:
haumdaucher - Primary Domain:
haumdaucher.de - User Identity:
moritzgraf.de
- Cluster: