Des façades en entrée. Un seul modèle au travers.
La plupart des passerelles IA sont des reverse proxys HTTP auxquels s'est ajoutée une liste de modèles : le format de la requête est l'abstraction, et chaque nouvelle modalité ou cycle de vie devient un cas particulier ailleurs. Wäg part de la requête d'inférence comme objet de domaine et traite les formats d'API OpenAI, Anthropic et Gemini comme des façades qui s'y projettent.
Six éléments de premier ordre, non déduits
Dans une passerelle façonnée par HTTP, on les devine d'un chemin, d'un en-tête ou du comportement d'un SDK fournisseur. Ici ce sont des champs d'un objet de domaine, et c'est pourquoi politique, routage, cache et comptabilisation peuvent raisonner dessus de façon uniforme.
C'est cette seule décision qui fait que chat, embeddings, vision, audio, tâches vidéo asynchrones et sessions temps réel partagent un unique chemin de politique, de routage et de comptabilisation au lieu de six.
Parler le dialecte, garder la fidélité
Les clients envoient des requêtes au format OpenAI, Anthropic ou Gemini, ou directement au format natif de requête d'inférence. Les adaptateurs natifs préservent les comportements propres à chaque fournisseur — appel d'outils, vision, sorties structurées — au lieu de tout uniformiser et de perdre des capacités en périphérie.
Neuf étapes, dans un ordre fixe
Chaque requête passe par les mêmes étapes. Identité, accès aux modèles et budget sont résolus avant tout appel ; la politique d'entrée s'exécute avant le cache, si bien que même une réponse en cache est contrôlée ; le routage choisit le déploiement ; politique de sortie et politique d'outils s'appliquent à la réponse ; coûts, verdicts et preuves sont enregistrés au retour.
- 01Authentifier
Clé virtuelle, jeton d'agent, ou jeton de l'IdP d'entreprise sur /v1 (Enterprise). Résout organisation, équipe, utilisateur, application et exécution d'agent.
✗ 401 - 02Accès aux modèles
Les droits sur les modèles, restreints par la liste autorisée de la clé, déterminent quels alias cette identité peut appeler.
✗ 403 - 03Budget
Limites de débit et budgets sont réservés sur la clé, l'organisation, l'équipe, l'utilisateur, l'application et le modèle. Tous doivent passer.
✗ 429 — aucune dépense fournisseur - 04Politique (avant l'appel)
Chaîne de garde-fous ordonnée sur l'entrée : données personnelles, injection, modération ou votre propre webhook. C'est le prompt masqué que voit le cache.
✗ BLOQUER · ◑ MASQUER · ◐ CAVIARDER - 05Cache
Exact → canonique → quasi-doublon → sémantique, chaque niveau protégé contre les faux positifs. Un hit évite le fournisseur et les étapes de sortie.
✓ SUCCÈS → retour, aucun appel fournisseur - 06Router
Filtre de capacités, résidence, affinité de session, puis la stratégie de routage choisit le déploiement. Une bascule ne quitte jamais les juridictions autorisées.
- 07Appeler
Dialecte fournisseur, vrai streaming SSE, bascule sur le même alias, puis replis ordonnés ; chaque tentative inscrit une entrée de sortie au registre. La politique en cours de flux s'exécute sur une fenêtre glissante.
- 08Politique (après l'appel)
Les garde-fous de sortie s'appliquent à la réponse complète. Les appels d'outils renvoyés par le modèle sont jugés par la politique d'outils : autorisés, retirés avec une note, ou refusés.
✗ 403 · retiré - 09Comptabiliser
Les budgets sont soldés, le registre consigne le résultat, et tokens, coût, verdicts et décision de routage sont enregistrés en journaux de requêtes, traces OTEL et métriques Prometheus.
Un proxy achemine une requête. Ceci décide de ce que la requête a le droit d'être — et c'est là toute la distinction entre une gateway et une control plane.
Quatre cycles de vie, un seul chemin de politique
Parce que le cycle de vie est un champ de la requête et non un détail d'implémentation d'un point d'accès, la même gouvernance s'applique aux quatre.
Synchrone
Une requête en entrée, une complétion en sortie, toute la politique appliquée en ligne.
Streaming
De vrais Server-Sent Events via des adaptateurs LiveStream — sans mise en tampon complète en amont dans le cas nominal. La politique en cours de flux peut interrompre un flux problématique avant qu'il n'atteigne le client.
Tâches asynchrones
Workers durables avec bail pour les traitements longs comme la vidéo et les lots : mise en file → prise en charge → battement → achèvement, avec récupération des baux expirés. Résistant aux plantages.
Temps réel
Un pont WebSocket, pour que la voix en direct et les échanges interactifs partagent la même authentification, les mêmes budgets et la même journalisation que le reste.
C'est la partie qu'une passerelle façonnée par HTTP ne peut pas rattraper sans réécriture. Le cycle de vie doit figurer dans le modèle de domaine avant que la politique puisse s'y appliquer uniformément.
Quatre plans, séparés à dessein
| Plan | Ce qu'il contient | Pourquoi séparé |
|---|---|---|
| Data plane | Le chemin de la requête. Répliques Rust sans état : authentification, contrôle des budgets, politique, cache, routage, appel, comptabilisation. | Passe à l'échelle horizontalement et indépendamment. Aucune dépendance à l'administration dans le chemin critique. |
| Control plane | Configuration, identité, définitions de politique, budgets, clés, locataires, registre MCP. | La vôtre, pas la nôtre. Aucune instance fournisseur dont dépendre ou que l'on pourrait contraindre. |
| Plan analytique | Usage, dépenses, traces, enregistrements d'audit. | Séparé du stockage de contrôle pour que la charge de reporting ne touche jamais l'application des règles. |
| Plan de politique | Moteurs d'analyse, relations OpenFGA, catalogue de prix. | Enfichable et hors processus, pour qu'un changement de politique n'impose pas un changement de passerelle. |
Natif Kubernetes, pas compatible Kubernetes
Tout ce qui tient dans un conteneur est compatible Kubernetes. Natif signifie que la plateforme modélise ce que vous exploitez : Wäg fournit son propre opérateur et ses propres ressources personnalisées, si bien que la passerelle est un objet que le cluster comprend plutôt qu'un déploiement assemblé à la main. Une WaegInstance possède les Deployments, le réseau, la mise à l'échelle automatique et la supervision de la passerelle, et signale une erreur de configuration comme une condition assortie d'une raison ; fournisseurs, modèles, organisations, budgets, garde-fous et clés peuvent aussi être des ressources personnalisées. Comme budgets et limites de débit sont partagés via Redis plutôt que détenus par réplique, la mise à l'échelle ne permet jamais de dépenser un budget deux fois — et l'opérateur marque comme non prête une instance qui a plusieurs réplicas d'API sans Redis. Il faut Kubernetes 1.28 ou plus récent, ou OpenShift 4 ; un chart Helm existe si vous préférez templatiser plutôt qu'opérer.
Rust dans la data plane
Construit sur tokio, hyper et axum avec des chemins de streaming sans copie, livré comme un binaire distroless sans root. Aucun interpréteur, aucun gestionnaire de paquets, aucune exécution Node dans la passerelle — la console d'administration est servie par le même binaire. Aucun routeur ML dans le chemin critique : le routage ajoute une analyse déterministe, pas une inférence de modèle.
Le débit d'une passerelle dépend de la forme des charges utiles, de la latence du fournisseur, du taux de succès du cache, de la profondeur de la chaîne de politique et de la concurrence. Un multiplicateur unique face à un autre produit renseigne sur la configuration choisie par quelqu'un, pas sur votre charge. Nous préférons publier l'outil de mesure pour que vous mesuriez ce qui vous concerne réellement.
Ce que Wäg n'est pas
Énoncé clairement pour que vous l'évaluiez sur le bon axe, et pour que personne ne réserve un briefing en attendant autre chose.
- Pas un serveur d'inférence. Il n'exécute pas de modèles. Il achemine vers ceux que vous utilisez déjà, y compris des points d'accès vLLM ou Ollama auto-hébergés, et Wäg Edge encadre les modèles qui tournent sur les ordinateurs des membres et dans les applications mobiles.
- Pas un hébergeur de modèles. Aucun poids, aucun GPU, aucun pipeline de fine-tuning.
- Pas une base vectorielle. Il relaie les appels d'embeddings et met en cache sémantiquement ; il ne stocke pas votre corpus.
- Pas un backend d'observabilité. Il émet OTEL et Prometheus vers ce que vous exploitez déjà.
- Pas un remplaçant d'API gateway. Kong et Envoy gouvernent HTTP. Wäg gouverne tokens, modèles et actions d'agents. Ce sont des couches complémentaires, et la plupart des environnements exploitent les deux.
Un point d'entrée. Tous les modèles. Un contrôle total.
Exploitez-le dans votre propre infrastructure
Tout ce qu'il faut pour exploiter une control plane en production est sous Apache-2.0 et le restera — routage, haute disponibilité, cache, bascule, budgets, politique, MCP, tâches et observabilité. Auto-hébergé, sans compte, sans appel vers l'extérieur.
$ docker run -p 4000:4000 <registry>/waeg-gateway:<version>Ce n'est pas un pull qui fonctionne : les images ne sont pas encore publiques. Les partenaires de conception reçoivent les informations du registre en privé.
Déployer en 5 minutesFaçonnez-le en tant que partenaire de conception
Wäg n'est pas encore disponible publiquement. Nous travaillons avec un petit groupe d'équipes qui exploitent de l'IA multi-fournisseurs en production et prennent au sérieux la gouvernance et la souveraineté, afin de durcir la control plane sur des charges réelles.
- Toutes les capacités Enterprise incluses, sans coût de licence
- Migration accompagnée — nous la faisons avec vous, y compris depuis LiteLLM
- Un lien direct avec les ingénieurs et une influence réelle sur la suite