Files
edgeguard-native/agent.md
Debian 914538eed1 feat(configgen): Phase 2 Config-Generator + nginx → HAProxy-only Pivot
Architektur-Pivot: nginx fällt komplett weg. HAProxy 2.8+ übernimmt
TLS-Termination, L7-Routing per Host-Header und LB. ACME-Webroot
und Management-UI werden von edgeguard-api ausgeliefert (Phase 3
implementiert die zugehörigen Handler); HAProxy proxied
/.well-known/acme-challenge/* und Management-FQDN-Traffic an
127.0.0.1:9443. Eine Distro-Abhängigkeit weniger, ein Renderer
weniger, sauberere Trennung.

Renderer (alle mit Embed-Templates + Tests):
* internal/configgen/  — atomic write + systemctl reload helpers
* internal/haproxy/    — :80 + :443, ACME-ACL, Host-Header-Routing,
                         Stats-Frontend, api_backend Fallback
* internal/firewall/   — default-deny input, stateful baseline,
                         SSH-Rate-Limit, :80/:443 accept,
                         Cluster-Peer-Set für mTLS :8443,
                         Custom-Rules aus PG
* internal/{squid,wireguard,unbound}/ — Stubs (ErrNotImplemented)

Orchestrator + CLI:
* internal/services/configorch/  — fester Reihenfolge-Run, Stubs
                                   sind soft-skip statt fatal
* cmd/edgeguard-ctl render-config [--no-reload] [--only=svc1,svc2]

Packaging:
* postinst: /etc/edgeguard/nginx raus, /var/lib/edgeguard/acme rein,
  self-signed _default.pem via openssl req (damit HAProxy startet
  bevor certbot etwas issuet hat)
* control: Depends nginx raus, openssl rein
* edgeguard-ui: dependency auf nginx weg, "Served by edgeguard-api
  gin StaticFS"

Live-Smoke: render-config gegen lokale PG schreibt /etc/edgeguard/
haproxy/haproxy.cfg + nftables.d/ruleset.nft korrekt; CRUD-Test aus
Phase 2 läuft weiter unverändert.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 10:59:52 +02:00

4.1 KiB

agent.md — EdgeGuard Native: Agent-Factory Pipeline

Dieses Dokument beschreibt wie das Projekt über den Architect Center Orchestrator mit spezialisierten Agenten aufgebaut wird. Jeder Agent hat einen klar abgegrenzten Scope und kann parallel zu anderen arbeiten.


Idee

Der Architect Center Orchestrator dispatcht mehrere Claude Code Agenten, jeder spezialisiert auf eine Schicht des Projekts. Alle Agenten haben Zugriff auf:

  • RAG (Qdrant): Code-Index von mail-gateway (project_id=6) und netcell-webpanel (project_id=5) als Referenz
  • MCP-Server architect: ac_search_code, ac_send_instruction, ac_read_file
  • Session: eigene tmux-Session pro Agent (EdgeGuardNative-1 … N)

Agent-Rollen

Agent Scope Referenz-Projekt
DB-Architect Datenbankschema, goose-Migrations, GORM-Models mail-gateway models/
API-Engineer Gin-Router, alle Handler, Middleware (Auth/JWT/RBAC) mail-gateway handlers/
Config-Generator HAProxy, Squid, WireGuard, Unbound, nftables Templates + Renderer mail-gateway config/
Cluster-Engineer KeyDB AA, PG Streaming Replication, Join/Promote, Write-Proxy mail-gateway cluster/
Scheduler-Engineer ACME-Renewal, Backup, Health-Aggregation, License-Heartbeat mail-gateway scheduler
CLI-Engineer edgeguard-ctl: initdb, migrate, cluster-join, promote, dump-config mail-gateway cmd/nmg-ctl/
Frontend-Engineer React 19 + AntD 6 UI (1:1 enconf-Pattern), alle Seiten v1 netcell-webpanel management-ui/
Packaging-Engineer .deb-Pakete (dpkg-deb), postinst, systemd-Units, APT-Repo mail-gateway packaging/
Bootstrap-Engineer install.sh Onliner, Cluster-Join-Script netcell-webpanel install.sh

Abhängigkeiten (Build-Order)

Phase 1 (parallel):
  DB-Architect      → migrations/ + internal/models/
  Packaging-Engineer → packaging/debian/ + deploy/systemd/

Phase 2 (parallel, braucht Phase 1):
  API-Engineer       → internal/handlers/ + cmd/edgeguard-api/
  Config-Generator   → internal/{haproxy,squid,wireguard,unbound,firewall}/
  CLI-Engineer       → internal/services/ + cmd/edgeguard-ctl/

Phase 3 (parallel, braucht Phase 2):
  Cluster-Engineer   → internal/{cluster,proxy,aggregator,license}/
  Scheduler-Engineer → cmd/edgeguard-scheduler/
  Frontend-Engineer  → management-ui/

Phase 4 (braucht Phase 3):
  Bootstrap-Engineer → scripts/install.sh, scripts/apt-repo/
  Integration-Tests  → make test + make deb

Orchestrator-Prompt-Template

Du bist der <ROLE>-Agent für EdgeGuard Native (project_id=8, session=EdgeGuardNative-<N>).

Deine Aufgabe: <SCOPE>

Pflicht vor jeder Implementierung:
1. ac_search_code(query="<keywords>", project_id=<REF_ID>, limit=6) — Pattern aus Referenz lesen
2. Erst dann implementieren, NIEMALS raten

Referenz-Projekte: mail-gateway (id=6) für Backend-Patterns, netcell-webpanel (id=5) für UI/Bootstrap.

Arbeite in /var/www/edgeguard-native/<deinem Scope>.
Nach jedem Abschnitt: make test (Backend) oder npx tsc --noEmit (Frontend).

RAG-Collections (Qdrant auf Architect Center Server)

Collection Inhalt Wird genutzt von
project_mail_gateway mail-gateway Code-Index DB-, API-, Config-, Cluster-, Scheduler-, CLI-Agent
project_netcell_webpanel netcell-webpanel Code-Index Frontend-, Bootstrap-Agent
project_edgeguard_native edgeguard-native eigener Index (live, wird gefüllt) alle Agenten ab Phase 2

Code-Indexer starten:

# Auf Architect Center Server
python3 /var/www/architect-center/scripts/code_indexer.py --project-id 8

Start-Befehl (via Architect Center Orchestrator)

  1. Architect Center UI → Orchestrator → Neue Pipeline
  2. Template: edgeguard-native-v1
  3. Phase 1 starten → bei Completion Phase 2, etc.

Oder manuell per Session:

tmux new-session -d -s EdgeGuardNative-2 -c /var/www/edgeguard-native
# Claude Code in Session starten:
tmux send-keys -t EdgeGuardNative-2 'ARCHITECT_SESSION=EdgeGuardNative-2 ARCHITECT_PROJECT_ID=8 claude' Enter