Agno orchestriert — der OpenClaw-Gateway auf 127.0.0.1 ist die erzwingbare Vertrauensgrenze: erlaubte Toolnamen, gestaffelte Request-Timeouts, ein Circuit Breaker nach wiederholten Fehlern und eine Fehler-Envelope, die nur Korrelation, Phase und Kurztext zurückgibt.

Inhalt: Risiken · Entscheidungsmatrix · Vorab-Inspektion · Repro-Schritte · Zitierfähige Leitplanken · FAQ

Dieses Playbook richtet sich an Teams, die Python-Agenten mit Agno auf einem gemieteten Apple-Silicon-Host betreiben und alle Modell- und Toolpfade über einen OpenAI-kompatiblen Endpunkt bündeln wollen. Es ergänzt die Agno-versus-OpenAI-Agents-SDK-Matrix um die harte Randkonfiguration und verweist für Schema-Zwillings- und Pydantic-Muster auf PydanticAI am Gateway; für vergleichbare Orchestrierungsdisziplin siehe Strands Agents mit Gateway.

Drei wiederkehrende Produktionsrisiken

1) Der Agent registriert mehr oder andere Toolnamen als das Gateway — Aufrufe scheitern pseudozufällig mit 403 oder 422. 2) Ein einziges großes HTTP-Timeout maskiert Transport- und Ausführungsengpässe; Retries überlasten Unified Memory. 3) Volltext-Fehler mit Promptresten landen in zentralen Logs und erschweren DSGVO-konforme Reviews.

Entscheidungsmatrix: Schichten und Nachweis

Die folgende Tabelle ordnet Verantwortlichkeiten und typische Kennzahlen — konkrete Millisekunden ersetzen Sie durch Ihre Messreihe auf dem Remote-Knoten.

Schicht Aufgabe Leitplankenbeispiel Risiko ohne Gate Nachweis im MR
Agno Minimale Tool-Registrierung, Session-Policy Nur Runbook-Tools, feste Rollen Frei erfundene Funktionsnamen Diff der Toolliste gegen Gateway-JSON
Gateway Whitelist erzwingen, Auth-Header Name → Handler, Bearer aus Datei Bypass zu Rohanbieter-URLs Negative Tests unbekannter Namen
Timeouts Transport vs. Tool-Ausführung connect < read < gateway_max Hängende Worker, Retry-Stürme Traces mit phase=transport|execute
Breaker Fehlerfenster, Kühlzeit 5 Fehler / 30 s, 20 s open Kaskadierende Latenz breaker.trip_rate im Dashboard
Envelope Strukturierte Kurzfassung code, request_id, hint Secrets in Klartext Redaction-Stichprobe

Vorab-Inspektion (ohne Produktivlast)

Führen Sie auf dem Remote-Mac zuerst openclaw doctor aus und beheben Sie alle roten Prüfungen, bevor Sie Agno starten — dieselbe Routine eignet sich als Gate in CI für neue Images. Anschließend Health gegen den Loopback-Endpunkt mit einem Platzhalter-Bearer (kein echter Schlüssel im Shell-Verlauf): curl -fsS -H "Authorization: Bearer $(cat ./gateway.token)" http://127.0.0.1:PORT/health. Erst wenn Status und Version stimmen, binden Sie den Agno-Client per OPENAI_BASE_URL an denselben Host.

Ergänzend prüfen Sie DNS-Auflösung und Firewall-Profile für den Dienstbenutzer: der Gateway-Prozess darf nur auf die dokumentierten Upstream-Adressen zugreifen, nicht beliebig ins Internet. Dokumentieren Sie die Minor-OS-Version und den Python-Interpreter, damit Abnahmeberichte zwischen Wochen vergleichbar bleiben, falls Apple-Sicherheitsupdates TLS-Verhalten leicht verschieben.

Referenz: HTTP-Code vs. Diagnosephase

Antwort Typische phase Maßnahme
401 / 403 transport Token-Datei, Header-Name, Uhrzeit auf dem Host
422 schema Whitelist-Namen und Argument-Schema gegen Gateway-Quelle diffen
408 / 504 transport oder execute Timeouts staffeln, Downstream-Kapazität messen
Breaker-open ohne HTTP-Body circuit Kühlzeit abwarten, Fehlerfenster in Logs auswerten

Reproduzierbare Schritte und JSON-Konfiguration

Schritt 1 — Arbeitsraum: Eigenes Verzeichnis, virtuelle Umgebung, chmod 600 für .env und Token-Datei; keine Geheimnisse in Git.

Schritt 2 — Gateway-Whitelist (Ausschnitt): Zentral erlaubte Namen und interne Handler-Referenzen; Platzhalter bleiben wörtlich bis zur Deployment-Substitution.

{
  "tools_allowlist": ["search_docs", "run_sql_readonly"],
  "reject_unknown_tools": true,
  "auth": { "bearer_token_file": "./gateway.token" }
}

Schritt 3 — Agno/OpenAI-Client: Basis-URL nur auf das Gateway; API-Key-Feld erhält einen internen Gateway-Token-Platzhalter, nie den Cloud-Anbieterschlüssel im Klartext auf dem Agenten-Host.

{
  "OPENAI_BASE_URL": "http://127.0.0.1:8080/v1",
  "OPENAI_API_KEY": "REPLACE_WITH_GATEWAY_TOKEN",
  "request_timeout_seconds": { "connect": 5, "read": 45 }
}

Schritt 4 — Gateway-Obergrenze und Tool-Ausführung: Die äußere Deadline muss strikt über der Agno-Lesezeit liegen, damit der Client vor dem Server abbricht und Sie saubere phase-Werte im Log sehen.

{
  "server": { "bind": "127.0.0.1", "port": 8080 },
  "limits": { "max_request_seconds": 60, "tool_execute_seconds": 40 }
}

Schritt 5 — Circuit Breaker: Gleitendes Fenster, Schwellenwert und Kühlphase dokumentieren; Trip-Ereignisse mit request_id korrelieren.

{
  "circuit_breaker": {
    "error_window_seconds": 30,
    "failure_threshold": 5,
    "open_seconds": 20,
    "count_http": [408, 429, 500, 502, 503, 504],
    "count_schema_errors": true
  }
}

Schritt 6 — Fehlerzusammenfassung an Agno: Das Gateway mappt Ausnahmen auf eine einheitliche JSON-Struktur; der Agent zeigt dem Aufrufer nur Kurztext und Handlungshinweis.

{
  "error_envelope": {
    "fields": ["request_id", "tool", "code", "phase", "short_message", "remediation_hint"],
    "omit": ["api_key", "raw_prompt", "stack_trace"]
  }
}

Zitierfähige Leitplanken für Abnahme und Audit

  • Zitierbar 1: Jede Freigabe nennt in einer Zeile Gateway-Build, Agno-Paketversion und Hash der Whitelist-Datei.
  • Zitierbar 2: Transport- und Ausführungs-Timeout sind getrennt konfiguriert und in Grafana (oder gleichwertig) als zwei Serien sichtbar.
  • Zitierbar 3: Nach einem Breaker-Trip liegt ein Postmortem mit Trip-Rate, betroffener Toolname und Rollback-Referenz vor.

Öffentliche Einstiege ohne Login-Pflicht zum Lesen: Kauf und Miete, Preise, Hilfezentrum, Startseite und Tech-Blog.

Kurz-FAQ

Doppelte Validierung? Ja: Agno kann argumentieren, das Gateway erzwingt dennoch Namen und Schema an der Grenze. Breaker offen, Latenz normal? Prüfen Sie einen zweiten Client oder einen Health-Pfad, der nicht durch den Breaker zählt. Schlüsselrotation? Kurzlebige Tokens nur per Secret-Store; JSON-Beispiele behalten Platzhalter.

Kurz: doctor und Health vor dem ersten Agno-Run, Whitelist und Timeouts in Git versionieren, Breaker und Envelope messbar machen — dann ist Remote-Betrieb wiederholbar und auditierbar.