SovrGPT Docs
GovBridge

Betrieb

Hosting, Konfiguration, Größen-Limits, Timeouts, Caching und Fehlerverhalten des GovBridge-Dienstes.

GovBridge läuft als schlanker, zustandsloser Node-Dienst — betrieben von eNetworkers, strikt EU-gehostet.

Hosting

AspektWert
PlattformRailway
Regioneurope-west4 (Amsterdam, EU)
Öffentliche URLhttps://govbridge.sovrgpt.com
Health-CheckGET /healthz200 {"status":"ok","protocols":["cmis","fit-connect"]}
Imageprivates GHCR-Image, Pull über Registry-Credentials
TLSLet's-Encrypt-Zertifikat, automatisch ausgestellt

Der Dienst skaliert horizontal: Da der Dispatcher stateless ist (jeder Request trägt seinen eigenen aufgelösten Mandantenkontext), können mehrere Instanzen ohne geteilten Sitzungszustand laufen.

Konfiguration (Umgebungsvariablen)

VariableDefaultZweck
PORT8080HTTP-Listen-Port.
SUPABASE_URL— (Pflicht)Supabase-Projekt-URL (Endpunkt-Lookup).
SUPABASE_SERVICE_ROLE_KEY— (Pflicht)Service-Role-Key für den Endpunkt-Lookup.
GOVBRIDGE_ENCRYPTION_KEY— (Pflicht)32-Byte-base64-AES-Schlüssel.
GOVBRIDGE_PROTOCOLScmisKomma-Liste der bedienten Protokolle.
BACKEND_TIMEOUT_MS15000Hartes Timeout pro DMS-HTTP-Call.
LOG_LEVELinfoerror / warn / info / debug.
SENTRY_DSN— (optional)Error-Monitoring (Region DE).

Größen-Limits

Mehrere harte Grenzen schützen Speicher und Antwortzeit:

GrenzeWertWo
JSON-RPC-Request-Body1 MBTransport (Einzelaufruf oder Batch)
Inline-Text (cmis_dokument_holen)32 KBcontent.ts (MAX_TEXT_BYTES)
Inline-Binär (base64)5 MBcontent.ts (MAX_INLINE_BYTES)
CMIS-JSON-Antwort4 MBcmis/client.ts (MAX_JSON_BYTES)
FIT-Connect-JSON-Antwort1 MBfit-connect/client.ts (MAX_JSON_BYTES)
FIT-Connect-Antragsdaten (fit_antrag_senden)5 MBfit-connect/index.ts (MAX_INLINE_BYTES)
FIT-Connect-Anhängemax. 10 Stück, je 5 MBfit-connect/index.ts (MAX_ATTACHMENTS, MAX_INLINE_BYTES)
OAuth-Token-Antwort64 KBbackend-auth.ts

Inhalts-Policy bei cmis_dokument_holen

  • Text ≤ 32 KB → inline als Text-Ressource.
  • Allowlist-Binärtyp ≤ 5 MB (PDF, DOC/DOCX, XLS/XLSX, PNG, JPEG) → base64-Blob.
  • Alles Größere / nicht gelistete MIME-Typen → nur Referenz (cmis://<objectId>) plus Metadaten, ohne Bytes.

Timeouts & Caching

  • Hartes Upstream-Timeout (BACKEND_TIMEOUT_MS, Default 15 s) über AbortController — ein hängendes Backend blockiert nie den Chat-Turn.
  • OAuth-Backend-Token wird pro Endpunkt im Prozess-RAM gecacht und 30 s vor Ablauf erneuert (SAFETY_WINDOW_MS).
  • CMIS-Repository-Service-Dokument wird 5 Minuten gecacht (REPO_TTL_MS), um einen Round-Trip pro Call zu sparen.
  • Fachinhalte werden nie gecacht — jeder Call zieht live aus dem DMS.

Fehlerverhalten

Fehler werden in deutschsprachige, modell-sichtbare Meldungen übersetzt und als Tool-Ergebnis mit isError: true zurückgegeben (nicht als Protokollabbruch), damit der Assistent reagieren kann statt den Turn abzubrechen:

UrsacheModell-sichtbare Meldung
Backend-Timeout„Das Fachverfahren hat nicht rechtzeitig geantwortet (Timeout)."
Backend-HTTP-/Netzwerkfehler„Fehler beim Zugriff auf das Fachverfahren: …"
Fehlender Parameter„Parameter 'name' fehlt."
Schreibzugriff gesperrt„Schreibzugriff ist für diesen Endpoint nicht freigegeben."
Unbekanntes Werkzeug„Unbekanntes Tool: name"

Auf Transportebene gilt: ungültige Route/Methode → 404/405, fehlgeschlagene Mandantenauflösung → generisches 401, reine Notifications → 202 ohne Body.

Verfügbarkeitsprüfung

curl -s https://govbridge.sovrgpt.com/healthz
# → {"status":"ok","protocols":["cmis"]}

Ein vollständiger MCP-initialize-Handshake gegen einen konkreten Endpunkt ist in der Einrichtung beschrieben.

Weiter

Betrieb