ARCHITECTURE

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.

LA REQUÊTE D'INFÉRENCE

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.

modalitéopérationcycle de viecoûtpolitiqueidentité

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.

FAÇADES

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.

LE CHEMIN DE LA REQUÊTE

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.

  1. 01
    Authentifier

    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
  2. 02
    Accè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
  3. 03
    Budget

    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
  4. 04
    Politique (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
  5. 05
    Cache

    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
  6. 06
    Router

    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.

  7. 07
    Appeler

    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.

  8. 08
    Politique (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é
  9. 09
    Comptabiliser

    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.

CYCLES DE VIE

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.

ARCHITECTURE

Quatre plans, séparés à dessein

PlanCe qu'il contientPourquoi séparé
Data planeLe 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 planeConfiguration, 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 analytiqueUsage, 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 politiqueMoteurs 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

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.

PERFORMANCE

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.

Pourquoi cette page ne comporte pas de multiplicateurs

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.

PÉRIMÈTRE

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.

Voir la control plane · Voir les benchmarks

Un point d'entrée. Tous les modèles. Un contrôle total.

Commencer par l'open source

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 minutes
Partenariat de conception

Faç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
Postuler au programme