Wäg y LiteLLM: misma API, capa distinta
LiteLLM es un gateway de IA muy bueno y, si lo que necesita es enrutamiento multiproveedor detrás de un único endpoint, le seguirá dando buen servicio. Wäg habla la misma API compatible con OpenAI e importa la configuración de LiteLLM — no para sustituir un gateway por otro gateway, sino porque la mayoría de los equipos llegan a un punto en el que el gateway no es lo que está tensionado.
No es un competidor en la misma capa
La misma superficie de API compatible con OpenAI. La misma configuración, importable.
Gratis aquí. Enterprise allí.
Ambos proyectos son de código abierto con un nivel comercial. La pregunta nunca fue si existe una edición de pago, sino dónde traza cada uno la línea. La documentación Enterprise de LiteLLM enumera lo que activa su clave de licencia, y la mayor parte de esa lista en Wäg es Apache-2.0. En multiinquilino la diferencia es estructural: en su esquema de base de datos publicado, una organización lleva un presupuesto, acumulados de gasto y una lista de miembros, y un equipo apunta a ella mediante una clave externa opcional, lo que la convierte en un nivel de agrupación por encima de los equipos. En Wäg una organización es una frontera de autorización que se comprueba en cada petición. Donde nosotros ponemos la misma capacidad tras una licencia, la tabla lo dice.
| Capacidad | LiteLLM | Wäg |
|---|---|---|
| Arquitectura multiinquilino: organizaciones, equipos, acceso basado en relaciones | Enterprise | Apache-2.0 |
| Control de acceso basado en roles | Enterprise | Apache-2.0 |
| Presupuestos por debajo de la clave: por modelo, por aplicación | Enterprise | Apache-2.0 |
| Barreras por clave y por equipo | Enterprise | Apache-2.0 |
| Motores de barreras gestionados: moderación, detección de secretos e inyección de prompts | Enterprise | Apache-2.0 |
| Integración con gestores de secretos: Vault, Key Vault, Secrets Manager | Enterprise | Apache-2.0 |
| Operación multirregión | Enterprise | Apache-2.0 |
| Política de registro de payloads, por organización, con exclusión a nivel de miembro | Enterprise | Apache-2.0 |
| Evidencia de peticiones firmada y encadenada por hash | No figura | Apache-2.0 |
| Enrutamiento limitado a las jurisdicciones permitidas | No figura | Apache-2.0 |
| Informes del uso de modelos locales en los dispositivos de los empleados | No figura | Apache-2.0 |
| Identidad de agente, ejecuciones y límites de ejecución | No figura | Apache-2.0 |
| Política de llamadas a herramientas con aprobaciones humanas | No figura | Apache-2.0 |
| Control de flujos de datos: el trío letal | No figura | Apache-2.0 |
| Fijación de herramientas MCP y cuarentena ante cambios | No figura | Apache-2.0 |
| Credenciales de agente efímeras, sin claves permanentes | No figura | Apache-2.0 |
| Permisos de acceso a las llamadas a API de terceros reenviadas | Enterprise | Apache-2.0 |
| El tráfico web saliente de un agente, por regla de host y decidido en cada conexión | No figura | Apache-2.0 |
| Pagos de agentes: mandatos de gasto y raíles | No figura | Enterprise |
| Aprobar llamadas a herramientas de agentes en Slack o Teams | No figura | Enterprise |
| Importar agentes desde Foundry, AWS, Entra Agent ID y Gemini Enterprise | No figura | Enterprise |
| Inspección TLS del tráfico saliente de los agentes | No figura | Enterprise |
| SSO para la consola de administración | Enterprise | Enterprise |
| Aprovisionamiento SCIM | Enterprise | Enterprise |
| JWT y OIDC en el plano de datos | Enterprise | Enterprise |
| Paquetes de auditoría de retención larga | Enterprise | Enterprise |
| Barreras sobre el tráfico de pass-through nativo del proveedor | No figura | Enterprise |
| Servidores MCP que actúan como el usuario que ha iniciado sesión (OAuth) | No figura | Enterprise |
| Claves de cifrado gestionadas por el cliente, informes de postura FIPS | No figura | Enterprise |
| Marca personalizada | Enterprise | Enterprise |
| Presupuestos de plataforma que las organizaciones no pueden cambiar | No figura | Enterprise |
| Un rol de auditor de solo lectura | No figura | Enterprise |
| Exportación de salida: todo lo que una organización necesita para irse a otro sitio | No figura | Enterprise |
| Marcado de contenido de IA: C2PA, marcas de agua, huellas de texto | No figura | Enterprise |
| Control de modelos locales en los dispositivos de los empleados | No figura | Enterprise |
Seamos justos: su nivel Enterprise también incluye listas de IP permitidas y un informe SOC 2 Type II. Hoy no tenemos ninguno de los dos.
La columna de LiteLLM procede de su propia documentación Enterprise, que indica que una clave de licencia activa las funciones allí listadas. No figura significa que una capacidad no se nombra en esa página, lo que no equivale a que sea imposible. La columna de Wäg es la división de licencia que aplica el gateway: una capacidad Enterprise es un módulo que una licencia firmada tiene que nombrar. Las filas de agentes marcadas como No figura son un No figura de otra naturaleza: su gateway de agentes no es en absoluto una función Enterprise, así que esas capacidades faltan en su producto en lugar de estar incluidas en el precio de su licencia.
Ambos ofrecen una pasarela de agentes. Solo uno gobierna al agente.
LiteLLM añadió una pasarela de agentes A2A, y hace bien lo evidente: registrar agentes, controlar qué equipos y claves pueden alcanzarlos, imputar el coste. Dos filas son paridad real. Las demás son donde los dos productos dejan de ser lo mismo.
| Capacidad | LiteLLM | Wäg |
|---|---|---|
| Pasarela de agentes A2A con control de acceso e imputación de coste por agente | Sí | Sí |
| Una parada de emergencia que rechaza al agente en la pasarela | Webhook al agente | Sí |
| Límites sobre una sola ejecución del agente | Sí | Sí |
| Una llamada retenida para un aprobador con nombre, con la decisión registrada | No documentado | Sí |
| Control de flujos: una ejecución que leyó datos privados ya no puede llamar a una herramienta de salida | No documentado | Sí |
| Definiciones de herramientas MCP fijadas, y en cuarentena cuando el servidor las cambia | No documentado | Sí |
| Credenciales de agente efímeras ligadas a una ejecución, sin claves permanentes | No documentado | Sí |
| A qué destinos puede llegar un agente, decidido en cada llamada: política de herramientas, aprobación, etiqueta de flujo | No documentado | Sí |
| Todo el tráfico web saliente del agente a través de la pasarela, no solo sus llamadas a modelos y herramientas | No documentado | Sí |
| Agentes detectados por su tráfico, no solo los que alguien registró | No documentado | Sí |
| Agentes importados y sincronizados desde Foundry, AWS Agent Registry, Entra Agent ID y Gemini Enterprise | No documentado | Enterprise |
| Una llamada a herramienta retenida, aprobada o denegada en Slack o Microsoft Teams | No documentado | Enterprise |
| Inspección TLS del tráfico saliente de un agente, con reglas de petición y guardrails | No documentado | Enterprise |
| Pagos de agentes: mandatos de gasto, x402, AP2, pago ACP y UCP | No documentado | Enterprise |
La columna de LiteLLM recoge lo que muestran su propia documentación y su repositorio público. No documentado significa que la capacidad no se describe allí, lo que no equivale a que sea imposible. Tres filas merecen el detalle. Su parada de emergencia dispara un webhook al runtime del agente y deja, en sus propias palabras, al agente registrado y habilitado del lado de LiteLLM; la nuestra rechaza al agente en la pasarela, en cada réplica y región, y corta un flujo que ya está en curso. Su require_approval es el campo de OpenAI: con cualquier valor distinto de never, la llamada vuelve al cliente para que la ejecute — no se retiene nada, no se nombra a nadie, no se registra nada. Y para los pagos de agentes, una búsqueda de código en su repositorio de x402 y AP2 no devuelve absolutamente nada. En las API de terceros la diferencia no es el reenvío. Sus endpoints de pass-through enrutan a cualquier API externa con una credencial puesta en la configuración, y los permisos por clave y equipo son una función Enterprise. Lo que falta es la decisión: el destino es una ruta estática y no algo que un agente concreto pueda o no alcanzar, ninguna regla lee los argumentos de la llamada, ninguna aprobación puede retenerla, no lleva etiqueta de flujo y no cuenta en una ejecución.
Casos en los que LiteLLM es la respuesta correcta
Sinceramente. Si reconoce aquí su situación, adoptar un control plane le añade una superficie operativa que todavía no necesita.
- Un solo equipo, uno o unos pocos servicios, y quiere multiproveedor hoy mismo.
- Usa import litellm dentro del código de la aplicación por su enrutamiento en proceso y sus callbacks, y valora eso directamente.
- Tiene callbacks de Python propios en el ciclo de vida de la petición cuya reimplementación supondría un trabajo real.
- Su lista de proveedores incluye alguno de nicho que Wäg todavía no cubre.
- Sus requisitos de gobierno quedan realmente satisfechos con presupuestos por clave.
Los síntomas, no la lista de funcionalidades
- Los presupuestos deben reflejar su organigrama. Los límites por clave no pueden expresar «este equipo dispone de 4.000 €, ningún usuario individual más de 500 € y los experimentos de marketing no pueden consumir la capacidad de ingeniería».
- La política tiene que aplicarse a aplicaciones que nunca se adhirieron. Una regla que solo puede aplicar allí donde alguien se acordó de añadirla no es un control.
- Los agentes han ampliado mucho la superficie. Un turno de usuario se convierte en N llamadas a modelos y herramientas contra servidores MCP remotos. La autenticación por servidor, las ACL de herramientas y la auditoría por salto dejan de ser un lujo.
- Alguien preguntó cuánto costó la IA, por equipo, el trimestre pasado. Y responder exigió un proyecto de datos en lugar de un cuadro de mando.
- El cumplimiento necesita registros, no intenciones. Desde el 2 de agosto de 2026, las competencias sancionadoras sobre la IA de uso general y las obligaciones de transparencia del artículo 50 del Reglamento Europeo de IA conllevan exposición a sanciones. El registro y la trazabilidad tienen que poder demostrarse.
- El gateway pasó a ser estructural. Cuando todas las rutas de producto pasan por él, un proceso de Python con un intérprete y un árbol de dependencias resuelto en el despliegue plantea una conversación de riesgo distinta de la que planteaba con diez peticiones por minuto.
Lo que no cambia en absoluto
Compromisos de diseño, no un recuento de funcionalidades
Las tablas de funcionalidades quedan obsoletas en un trimestre. Estas son decisiones estructurales que no cambian con una versión.
| Dimensión | LiteLLM | Wäg |
|---|---|---|
| Abstracción central | Despacho al SDK del proveedor detrás de HTTP | Petición de inferencia: modalidad, operación, ciclo de vida, coste, política |
| Entorno de ejecución | Python | Rust — un único binario distroless y sin root |
| Ciclos de vida | Síncrono, streaming | Síncrono, streaming, trabajos asíncronos duraderos, sesiones en tiempo real |
| Enrutamiento | Selección de estrategia más fallbacks | Puntuación estructural → mínimos de capacidad obligatorios → el más barato entre los elegibles; explicable en las cabeceras |
| Caché | Exacta, semántica opcional | Exacta → canónica → casi duplicada → semántica, con barreras contra falsos aciertos |
| Presupuestos | Por clave | Organización → equipo → usuario → aplicación → modelo → clave, apilados, con topes de reparto equitativo; un incumplimiento se rechaza antes de gastar con el proveedor |
| Política | Hooks de guardrail | Cadena ordenada: antes de la llamada, en mitad del flujo por ventanas y después de la llamada |
| Agentes / MCP | Gateway MCP y A2A: autenticación por servidor, acceso por clave y equipo | Además, políticas de herramientas con aprobadores con nombre, reglas de flujo de datos, fijación de herramientas, límites de ejecución, y presupuesto y auditoría por salto |
| Modelos locales y en el dispositivo | Accesibles como proveedor desde el proxy | Wäg Edge en portátiles y en apps de iOS y Android: inicio de sesión e informes open source; control en dispositivos y flota con Enterprise |
| Identidad | Clave maestra más claves virtuales | Además, tenancy OpenFGA; SSO OIDC, SCIM 2.0 y tokens del IdP en /v1 con Enterprise |
| Ciclo de vida en Kubernetes | Chart de Helm oficial; los operators vienen de la comunidad | Operator propio con un bundle OLM, que reconcilia el gateway y su catálogo; también un chart de Helm |
| Modelo de extensión | Callbacks de Python, en proceso | Motores por webhook HTTP, fuera de proceso |
| Proveedor | Constituida en EE. UU. | Bitkaio Ltd, Reino Unido — europea, fuera de la UE |
Si LiteLLM está haciendo su trabajo, consérvelo. Si lo que de verdad está tensionado es el gobierno y no el enrutamiento, se trata de otra capa — y es aquella para la que se ha construido Wäg.
Un endpoint. Cada modelo. Control total.
Ejecútelo en su propia infraestructura
Todo lo necesario para operar un control plane en producción es Apache-2.0 y seguirá siéndolo: enrutamiento, alta disponibilidad, caché, failover, presupuestos, políticas, MCP, trabajos y observabilidad. Self-hosted, sin cuenta, sin phone-home.
$ docker run -p 4000:4000 <registry>/waeg-gateway:<version>No es un pull que funcione: las imágenes aún no son públicas. Los socios de diseño reciben los datos del registro en privado.
Despliega en 5 minutosContribuya a definirlo como design partner
Wäg todavía no se ha publicado. Trabajamos con un grupo reducido de equipos que ejecutan IA multiproveedor en producción y se toman en serio la gobernanza y la soberanía, para endurecer el control plane con cargas de trabajo reales.
- Todas las capacidades Enterprise incluidas, sin coste de licencia
- Migración acompañada: la hacemos con usted, también desde LiteLLM
- Línea directa con los ingenieros que lo construyen e influencia real sobre lo que llega después