# Collector-Vertrag

Collector implementieren `name`, `version` und `collect(CollectorContext) -> CollectorResult`. `CollectorContext` enthält UTC-Zeit, Host, deklarative Konfiguration und Basisverzeichnis. `CollectorResult` enthält Beobachtungen, diagnostische Daten und isolierte `CollectorError`-Objekte.

Im MVP vorhanden: Cron, Systemd (`systemctl show`), Prozess (`/proc`) und Generic Worker (deklarative JSON-Status-/Heartbeat-Datei). Docker ist als späterer Adapter vorgesehen, aber nicht aktiviert. Browser-, Gmail-, YouTube- und Transcript-Speziallogik bleibt außerhalb des MVP.

`DockerCollector` ist als sichtbarer, read-only Erweiterungspunkt vorhanden und meldet bis zu einer späteren Implementierung bewusst `not_implemented`.

## Externe Agenten

Ein externer Agent registriert sich per `POST /api/v1/agents/register` und sendet Ereignisse per `POST /api/v1/agents/events`. Unterstützte MVP-Ereignisse sind `heartbeat`, `run_started`, `run_progress`, `run_finished` und `paused`. Jeder Agent besitzt einen stabilen `agent_key`; jeder fachliche Worker einen stabilen `worker_key`. Die lokale Outbox sorgt dafür, dass Netzunterbrechungen keine Ereignisse verlieren. Der Server dedupliziert über `(agent_key, event_id)`.
