Fassaden hinein. Ein Modell hindurch.
Die meisten AI Gateways sind HTTP-Reverse-Proxys, denen eine Modell-Liste zugewachsen ist: Das Anfrageformat ist die Abstraktion, und jede neue Modalität oder jeder neue Lebenszyklus wird zum Sonderfall. Wäg geht von der Inference-Anfrage als Domänenobjekt aus und behandelt die API-Formate von OpenAI, Anthropic und Gemini als Fassaden, die darauf abgebildet werden.
Sechs Dinge, die erstklassig sind statt abgeleitet
In einem HTTP-geprägten Gateway werden diese aus einem Pfad, einem Header oder dem Verhalten eines Provider-SDK erschlossen. Hier sind es Felder eines Domänenobjekts — deshalb können Policy, Routing, Caching und Abrechnung einheitlich darüber urteilen.
Diese eine Entscheidung ist der Grund, warum Chat, Embeddings, Vision, Audio, asynchrone Video-Jobs und Realtime-Sitzungen einen gemeinsamen Pfad für Policy, Routing und Abrechnung nutzen statt sechs verschiedene.
Den Dialekt sprechen, die Wiedergabetreue behalten
Clients senden Anfragen im OpenAI-, Anthropic- oder Gemini-Format oder direkt im nativen Inference-Request-Format. Native Adapter erhalten anbieterspezifisches Verhalten — Tool-Calling, Vision, strukturierte Ausgaben —, statt alles über ein Format zu vereinheitlichen und dabei Funktionalität an den Rändern zu verlieren.
Neun Stufen in fester Reihenfolge
Jede Anfrage durchläuft dieselben Stufen. Identität, Modellzugriff und Budget werden aufgelöst, bevor irgendetwas aufgerufen wird; die Eingabe-Policy läuft vor dem Cache, sodass auch eine gecachte Antwort geprüft ist; das Routing wählt das Deployment; Ausgabe- und Werkzeug-Policy laufen auf der Antwort; Kosten, Bewertungen und Nachweise fallen auf dem Rückweg an.
- 01Authentifizieren
Virtueller Key, Agenten-Token oder ein Unternehmens-IdP-Token auf /v1 (Enterprise). Löst Org, Team, Nutzer, Anwendung und Agentenlauf auf.
✗ 401 - 02Modellzugriff
Modellfreigaben, eingeengt durch die Whitelist des Keys, entscheiden, welche Aliase diese Identität aufrufen darf.
✗ 403 - 03Budget
Ratenlimits und Budgets werden auf Key, Org, Team, Nutzer, Anwendung und Modell reserviert. Alle müssen bestehen.
✗ 429 — keine Anbieterkosten - 04Policy (vor dem Aufruf)
Geordnete Guardrail-Kette auf der Eingabe: PII, Injection, Moderation oder Ihr eigener Webhook. Der Cache sieht den maskierten Prompt.
✗ BLOCKIEREN · ◑ MASKIEREN · ◐ SCHWÄRZEN - 05Cache
Exakt → kanonisch → Near-Dup → semantisch, jede Stufe gegen Falschtreffer abgesichert. Ein Treffer überspringt den Anbieter und die Ausgabestufen.
✓ TREFFER → zurück, kein Anbieteraufruf - 06Routing
Fähigkeitsfilter, Residenz, Sitzungsaffinität, dann wählt die Routing-Strategie das Deployment. Ein Failover verlässt nie die erlaubten Rechtsräume.
- 07Aufrufen
Anbieterdialekt, echtes SSE-Streaming, Failover innerhalb des Alias, dann geordnete Fallbacks; jeder Versuch schreibt einen Egress-Eintrag in den Ledger. Policy während des Streams läuft auf einem gleitenden Fenster.
- 08Policy (nach dem Aufruf)
Ausgabe-Guardrails laufen auf der vollständigen Antwort. Werkzeugaufrufe, die das Modell zurückgibt, beurteilt die Werkzeug-Policy: zugelassen, mit Hinweis entfernt oder abgelehnt.
✗ 403 · entfernt - 09Abrechnen
Budgets werden abgerechnet, der Ledger hält das Ergebnis fest, und Tokens, Kosten, Bewertungen und die Routing-Entscheidung landen als Anfrage-Logs, OTEL-Traces und Prometheus-Metriken.
Ein Proxy leitet eine Anfrage weiter. Dies entscheidet, was die Anfrage sein darf — und genau darin besteht der Unterschied zwischen Gateway und Control Plane.
Vier Lebenszyklen, ein Policy-Pfad
Weil der Lebenszyklus ein Feld der Anfrage ist und kein Implementierungsdetail eines Endpunkts, gilt für alle vier dieselbe Governance.
Synchron
Anfrage hinein, Completion heraus, alle Policy inline angewandt.
Streaming
Echte Server-Sent Events über LiveStream-Adapter — im Normalfall ohne vollständige Pufferung. Policy im Stream kann einen problematischen Stream abbrechen, bevor er den Client erreicht.
Asynchrone Jobs
Dauerhafte Worker mit Lease für lange Arbeiten wie Video und Batches: einreihen → übernehmen → Heartbeat → abschließen, mit Aufräumen abgelaufener Leases. Absturzsicher.
Echtzeit
Eine WebSocket-Brücke, sodass Live-Sprache und interaktive Sitzungen dieselbe Auth, Budgets und Protokollierung nutzen wie alles andere.
Das ist der Teil, den ein HTTP-geprägtes Gateway ohne Neuentwicklung nicht nachrüsten kann. Der Lebenszyklus muss im Domänenmodell liegen, bevor Policy einheitlich darauf wirken kann.
Vier Ebenen, bewusst getrennt
| Ebene | Was sie enthält | Warum getrennt |
|---|---|---|
| Data Plane | Der Anfrageweg. Zustandslose Rust-Replicas: Auth, Budgetprüfung, Policy, Cache, Routing, Aufruf, Abrechnung. | Skaliert horizontal und unabhängig. Keine Admin-Abhängigkeit im heißen Pfad. |
| Control Plane | Konfiguration, Identität, Policy-Definitionen, Budgets, Keys, Mandanten, MCP-Registry. | Ihre, nicht unsere. Es existiert keine Anbieter-Mandantschaft, von der man abhängen oder die man erzwingen könnte. |
| Analytics Plane | Nutzung, Ausgaben, Traces, Audit-Datensätze. | Von der Steuerungsspeicherung getrennt, damit Reporting-Last die Durchsetzung nie berührt. |
| Policy Plane | Scanner-Engines, OpenFGA-Relationen, Preisbuch. | Steckbar und außerhalb des Prozesses, sodass eine Policy-Änderung keine Gateway-Änderung erfordert. |
Kubernetes-nativ, nicht Kubernetes-kompatibel
Alles in einem Container ist Kubernetes-kompatibel. Nativ heißt, dass die Plattform das Ding modelliert, das Sie betreiben: Wäg liefert einen eigenen Operator und eigene Custom Resources, sodass das Gateway ein Objekt ist, das der Cluster versteht, statt eines Deployments, das jemand zusammengesteckt hat. Eine WaegInstance verantwortet die Deployments, das Networking, das Autoscaling und das Monitoring des Gateways und meldet eine Fehlkonfiguration als Condition mit Begründung; Anbieter, Modelle, Organisationen, Budgets, Guardrails und Keys können ebenfalls Custom Resources sein. Weil Budgets und Ratenlimits über Redis geteilt und nicht pro Replica gehalten werden, gibt Skalierung nie ein Budget doppelt aus — und der Operator markiert eine Instanz mit mehreren API-Replicas ohne Redis als nicht bereit. Vorausgesetzt sind Kubernetes 1.28 oder neuer oder OpenShift 4; wer lieber templatet als betreibt, nutzt das Helm-Chart.
Rust in der Data Plane
Gebaut auf tokio, hyper und axum mit Zero-Copy-Streaming, ausgeliefert als eine distroless Binary ohne Root. Kein Interpreter, kein Paketmanager, keine Node-Laufzeit im Gateway — die Admin-Konsole wird von derselben Binary ausgeliefert. Im heißen Pfad gibt es keinen ML-Router, Routing kostet also deterministische Analyse statt Modellinferenz.
Der Durchsatz eines Gateways hängt von Payload-Form, Anbieterlatenz, Cache-Trefferquote, Tiefe der Policy-Kette und Parallelität ab. Ein einzelner Multiplikator gegenüber einem anderen Produkt sagt etwas über die gewählte Konfiguration aus, nichts über Ihren Workload. Wir veröffentlichen lieber das Messwerkzeug, damit Sie das messen, was Sie tatsächlich interessiert.
Was Wäg nicht ist
Klar benannt, damit Sie es auf der richtigen Achse bewerten und niemand ein Briefing mit falschen Erwartungen bucht.
- Kein Inference-Server. Es führt keine Modelle aus. Es routet zu denen, die Sie ohnehin nutzen, einschließlich selbst gehosteter vLLM- oder Ollama-Endpunkte, und Wäg Edge steuert Modelle, die auf den Rechnern und in den mobilen Apps Ihrer Mitglieder laufen.
- Kein Modell-Hosting. Keine Gewichte, keine GPUs, keine Fine-Tuning-Pipeline.
- Keine Vektordatenbank. Es leitet Embedding-Aufrufe weiter und cached semantisch; es speichert Ihren Korpus nicht.
- Kein Observability-Backend. Es liefert OTEL und Prometheus an das, was Sie ohnehin betreiben.
- Kein Ersatz für ein API-Gateway. Kong und Envoy steuern HTTP. Wäg steuert Tokens, Modelle und Aktionen von Agenten. Das sind ergänzende Schichten, und die meisten Landschaften betreiben beide.
Ein Endpunkt. Jedes Modell. Volle Kontrolle.
Betreiben Sie es in Ihrer eigenen Infrastruktur
Alles, was Sie brauchen, um eine Control Plane produktiv zu betreiben, steht unter Apache-2.0 und bleibt es auch — Routing, HA, Caching, Failover, Budgets, Policy, MCP, Jobs und Observability. Self-hosted, ohne Account, ohne Phone-Home.
$ docker run -p 4000:4000 <registry>/waeg-gateway:<version>Kein funktionierender Pull: Die Images sind noch nicht öffentlich. Designpartner erhalten die Registry-Details vertraulich.
In 5 Minuten deployenAls Design-Partner mitgestalten
Wäg ist noch nicht öffentlich verfügbar. Wir arbeiten mit einer kleinen Gruppe von Teams, die Multi-Provider-KI produktiv betreiben und Governance und Souveränität ernst nehmen, um die Control Plane an echten Workloads zu härten.
- Jede Enterprise-Funktion enthalten, ohne Lizenzkosten
- Migration gemeinsam mit uns — auch von LiteLLM
- Direkter Draht zu den Engineers und realer Einfluss darauf, was als Nächstes kommt