# Kosten-Bremse — Betriebsreferenz (Session 2026-08) Ergebnis einer kompletten Nachbaustufe: Kosten-Überwachung + automatisches Bremsen über OpenRouter in einem Multi-Agent-Mesh (Master + 3 Sub-Agents). ## Tatsächliche OpenRouter-Endpoints (verifiziert 08.08) ```bash # Konto-weit, USD, kumulativ über Kontoleben: GET https://openrouter.ai/api/v1/credits # -> data.total_credits, data.total_usage (total_credits - total_usage = verfügbar) # Pro-Key: GET https://openrouter.ai/api/v1/auth/key # -> data.usage (gleiche kumulierte Größe pro Schlüssel) ``` - Zwei Messe: `/credits` (verbindlich, account-weit) + `/auth/key` (pro-Agent-Verteilung). - Alle Keys desselben Accounts liefern in `/credits` dieselbe Zahl; `/auth/key usage` differiert. - `X-OR-Usage-Cost-USD` Response-Header war NICHT vorhanden → stattdessen `chat-completions` Body `usage.cost` (USD) liefert exakte Pro-Request-Kosten. ## Python-Call für Kosten-Abfrage (Key bleibt lokal) ```python import json,re,urllib.request e=open('/root/.hermes/.env').read() key=re.search(r'OPENROUTER_API_KEY=([A-Za-z0-9_.\-]+)',e).group(1) h={"Authorization":f"Bearer {key}"} c=json.load(urllib.request.urlopen(urllib.request.Request( "https://openrouter.ai/api/v1/credits",headers=h),timeout=15))["data"] print(c.get("total_credits"), round(c.get("total_usage",0),2)) ``` Für Sub-Agents per SSH ausführen, Key bleibt auf dem Agenten, nur die Zahl kommt zurück. ## Delta-Logik (die Kern-Korrektur aus dem Team-Review) `total_usage` ist KONTOLEBEN-kumulativ. Falsch war: `total_usage > Cap` (pausiert dauerhaft) und `letzte-heute − erste-heute` (Mitternachts-Lücke, Einzel-Tag=0, Reset negativ). Korrigiert: - Tages-Delta tagübergreifend: `letzter-Wert-heute − letzter-Wert-vortag` - Monats-Basis = letzter Eintrag des VORMONATS (fallback Monatsanfang, fallback row[0]) - negative Werte → 0 - 7-Tage-Kumulativ-Summe als Zweit-Check ## Kill-Switch-Durchsetzung (Poller-Guard) In `mesh-agent-poller.sh` vor der Task-Übernahme: ```bash KILL_CHECK=$($SSH_CMD "python3 -c \" import json try: d=json.load(open('/srv/work/costs/kill_switches.json')) except Exception: d={} sw=d.get('kill_switches',{}).get('$MEINE_ID',{}) print('PAUSED' if sw and sw.get('status')=='PAUSED' else 'OK')" 2>/dev/null") if [ "$KILL_CHECK" = "PAUSED" ]; then log "Budget-BREMSE aktiv"; exit 0; fi ``` ## Modell-Block (Hermes) `hermes config set model.providers.openrouter.blocked_models '["deepseek/deepseek-v4-pro"]'` (Key `model.` Singular). Danach taucht es nicht mehr in `hermes models list` auf. ## Chronologie der Fehler (saubere Lektionen) 1. Erst 25$ Monats-Cap → zu aggressiv → Nutzer korrigierte: Wallet-Modell (1$/Tag/Agent, kein Monats-Stopp, solange Guthaben da arbeiten). 2. `total_usage` kumulativ mit Cap verglichen → dauerhafter Fehlalarm → Team (Switch) meldete row[0]-Basis-Problem → auf Vormonats-Basis korrigiert. 3. Unser eigenes Sup-Tool-Test überschrieb `costs.jsonl` mit Testdaten → Echte-Daten wiederherstellen via frischem cost-track-Lauf (kein Test-Artefakt zurücklassen). 4. `models.` vs `model.` Config-Key → Singular.