Files
infrapuzzle/AGENTS.md
T

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), and git-crypt for 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).
  • 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.x range.

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 of infrapuzzle (Git repo: https://git.moritzgraf.de/moritz/knowledge-wiki.git, branch main).
  • Queue File: knowledge-wiki/tasks/antigravity.md.
  • Workflow for Antigravity:
    • When the user asks to check tasks or pick up work from OpenClaw:
      1. Pull latest: git submodule update --remote knowledge-wiki (or git -C knowledge-wiki pull --rebase origin main)
      2. Read knowledge-wiki/tasks/antigravity.md to see pending items.
      3. Implement the chosen task in the appropriate repository files.
      4. Move the task to ## ✅ Completed Tasks with completion details and commit info.
      5. Push back: git -C knowledge-wiki commit -am "chore(tasks): complete <task>" && git -C knowledge-wiki push origin main.
    • When Antigravity needs knowledge about family, home, servers, or setup:

6. Architecture Decision Records (docs/adr/)

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-goa theme served via Nginx. Migrated from standalone moritzgraf repository into this monorepo.
  • Read: projects/moritzgrafde/AGENTS.md

Global Constraints

  • Secrets: git-crypt is used extensively. Ensure you have the unlock key before editing *.secret files.
  • Identity:
    • Cluster: haumdaucher
    • Primary Domain: haumdaucher.de
    • User Identity: moritzgraf.de