# Signal Trigger Architecture ## Overview When Nomos is asked "what are the thermals of hubris?", here is exactly what happens: ``` ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ Nomos │ │ Oikos │ │Scheduler │ │ Hubris │ │ (Agent) │ │ API │ │ (Docker) │ │(Proxmox) │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ query_metrics │ │ │ │────────────────>│ │ │ │ │ │ │ │ ← cpu_pct=2.5 │ SELECT FROM │ │ │ cpu_temp=48 │ metric_samples│ │ │<────────────────│ │ │ │ │ │ │ │ │ │ │ ══════ Every 60s (autonomous loop) ══════ │ │ │ │ │ │ │ │ SSH exec │ │ │ │─────────────────>│ │ │ │ /opt/oikos/ │ │ │ │ checks/ │ │ │ │ cpu_check.sh │ │ │ │ │ │ │ │ {"health":"ok", │ │ │ │ "metrics": │ │ │ │ {"cpu_pct":2.5, │ │ │ │ "cpu_temp":48}}│ │ │ │<─────────────────│ │ │ │ │ │ │ │ INSERT │ │ │ │ metric_samples │ │ │ │ │ │ │ │ UPSERT signal │ │ │ │ (dedup) │ │ │ │ │ ``` ## Two Paths ### Path A — Autonomous Collection (Scheduler) 1. Operator creates a check via REST API: `POST /api/v1/checks` 2. Scheduler loads enabled checks every 30s from `check_defs` table 3. For `ssh-script` checks, scheduler SSHs to target host and runs `/opt/oikos/checks/