Compatibles con OpenAI y OpenRouter
Cualquier cliente que te permita cambiar su URL base de OpenAI o de Anthropic puede usar el modo puerta de enlace: tus propios scripts, los SDK oficiales y las herramientas construidas sobre ellos.
URL base
Sección titulada «URL base»| Proveedor | En lugar de | Usa |
|---|---|---|
| OpenAI | https://api.openai.com/v1 |
http://127.0.0.1:5283/openai/v1 |
| Anthropic | https://api.anthropic.com |
http://127.0.0.1:5283/anthropic |
| OpenRouter | https://openrouter.ai/api/v1 |
http://127.0.0.1:5283/openrouter/api/v1 |
| Google Gemini | https://generativelanguage.googleapis.com |
http://127.0.0.1:5283/gemini |
Mantén tu clave de API en el cliente, como siempre. La puerta de enlace la reenvía sin cambios y nunca escribe su valor en los registros ni en el panel.
Para un comando: latet run
Sección titulada «Para un comando: latet run»latet run inicia el daemon si hace falta y ejecuta cualquier comando con las URL base definidas:
latet run python welcome.pyEl comando ve OPENAI_BASE_URL y OPENAI_API_BASE con el valor http://127.0.0.1:5283/openai/v1,
ANTHROPIC_BASE_URL con el valor http://127.0.0.1:5283/anthropic, y GOOGLE_GEMINI_BASE_URL y
GOOGLE_VERTEX_BASE_URL con los valores http://127.0.0.1:5283/gemini y http://127.0.0.1:5283/vertex.
Los SDK oficiales de OpenAI, de Anthropic y Google GenAI leen estas variables: para los de Google, ver
Gemini CLI y Google GenAI.
Un programa que arranca latet run no lleva ninguna clave de lanzamiento, así que una carpeta que
nombra (x-latet-project) queda declarada: las reglas de su proyecto que añaden protección se
aplican, sus relajaciones no (Proyectos).
Para todo un shell: latet env
Sección titulada «Para todo un shell: latet env»latet env imprime las mismas variables con la sintaxis de tu shell. Para aplicarlas a la sesión
actual:
eval "$(latet env)" # macOS and Linuxlatet env | Invoke-Expression # Windows PowerShell--shell bash, --shell powershell o --shell cmd elige la sintaxis; la predeterminada sigue tu
sistema. Para conservar las variables, añade las líneas impresas al perfil de tu shell. Claude Code
iniciado con claude en una shell así llega a Latet sin su plugin: sus peticiones solo se comprueban, y
cada una que lleve un valor sensible en claro se detiene. Inícialo con latet claude, o configúralo con
latet global-install, que le dan también el plugin.
Ejemplo
Sección titulada «Ejemplo»Un script que pide a un modelo que redacte un correo electrónico:
from openai import OpenAI
client = OpenAI() # reads OPENAI_API_KEY and OPENAI_BASE_URLreply = client.chat.completions.create( model="your-model", messages=[{"role": "user", "content": "Write a short welcome email to emily.carter@northwind-legal.com"}],)print(reply.choices[0].message.content)Ejecútalo con latet run python welcome.py:
- El daemon sustituye la dirección antes de que salga la petición. El proveedor lee “Write a short welcome email to laura.bennett@contoso-4f1a.example”.
- El modelo escribe un correo electrónico a
laura.bennett@contoso-4f1a.example. - A la vuelta, el daemon coloca de nuevo el original, así que el script imprime un correo electrónico
dirigido a
emily.carter@northwind-legal.com.
Solo se restaura el valor ficticio en sí. Si el modelo también escribió Dear Laura, un nombre que dedujo de la dirección ficticia, esa palabra se queda tal como la escribió el modelo.
Las respuestas en streaming funcionan igual, fragmento a fragmento.
Frameworks de agentes
Sección titulada «Frameworks de agentes»LangChain, LangGraph, AutoGen y CrewAI llegan al modelo a través de los SDK oficiales o de LiteLLM,
que leen las variables que establece latet run: inicia tu programa con latet run, como
cualquier script. Cada uno está probado de verdad a través de Latet, configurado como se indica
abajo:
| Framework | Configuración | Probado |
|---|---|---|
| LangChain y LangGraph | ChatOpenAI, sin URL base (ChatAnthropic lee ANTHROPIC_BASE_URL de la misma manera) |
Un modelo de chat y un grafo sobre él |
| AutoGen | OpenAIChatCompletionClient, sin URL base |
Un AssistantAgent |
| CrewAI | LLM(model="openai/gpt-5.1"), sin URL base |
Su LLM y una crew con una tarea |
Para fijar la dirección en tu código, indícala como base_url: http://127.0.0.1:5283/openai/v1 para
los clientes de OpenAI, http://127.0.0.1:5283/anthropic para los de Anthropic.
Aider llega al modelo a través de LiteLLM, que lee OPENAI_API_BASE: inícialo con
latet run aider --model openai/gpt-5.1, o mantén openai-api-base: http://127.0.0.1:5283/openai/v1 en
su .aider.conf.yml. Está probado de verdad de la misma manera.
Lo que Latet no ve. Latet está entre tu programa y el modelo, y en ningún otro sitio. Una herramienta que tu agente llama por su cuenta, como una API de búsqueda web, una base de datos o un almacén de vectores en la nube, recibe los valores reales: el modelo la pide con valores ficticios, y Latet vuelve a poner los originales en su respuesta antes de que tu programa ejecute la herramienta. Mantén esas herramientas en tu máquina, o da por enviado en claro lo que reciben.
Qué lee la puerta de enlace
Sección titulada «Qué lee la puerta de enlace»- Chat Completions (
/chat/completions, y el antiguo/completions), la Responses API (/responses) y Anthropic Messages (/v1/messages, también el recuento de tokens): se enmascaran el prompt de sistema, cada mensaje, las llamadas a herramientas y los resultados de las herramientas, y se restauran las respuestas, en streaming o no. - Embeddings (
/embeddings): se enmascara la entrada. - Las imágenes enviadas como URL
data:se leen y se enmascaran, con el reconocimiento de texto opcional; sin él, una petición con una imagen no se envía. Las imágenes indicadas por su dirección, el audio y los archivos se rechazan. - La lista de modelos y la lectura de un modelo pasan en OpenAI, Anthropic y OpenRouter.
Cualquier otra petición (archivos, lotes, audio, generación de imágenes, moderación, recuperar
una respuesta guardada) se rechaza, y también una cabecera, un parámetro de consulta o un miembro del
cuerpo que ningún perfil nombra: tus propios
default_headersoextra_bodyen un SDK, por ejemplo, hasta que una excepción exacta los deje pasar. Las cabeceras de telemetría y de trazado de los propios SDK (x-stainless-*,traceparent…) se quitan y se cuentan. Lo que Latet lee en las rutas de Google está en Gemini CLI y Google GenAI.
Una petición a Anthropic que viene de Claude Code, o que lleva el token de una suscripción de Claude, nunca se reescribe: solo se comprueba, y se bloquea si contiene un valor sensible. Consulta Claude Code.
A tener en cuenta
Sección titulada «A tener en cuenta»-
La puerta de enlace solo escucha en
127.0.0.1y rechaza las peticiones que vienen de una página web. -
Una ruta que no es ninguna de las de arriba recibe un error
404:no upstream for this path. Una llamada bajo una de ellas que Latet no lee recibe un error400que dice que no se envió nada:request envelope refused (envelope-route). -
Otro proveedor compatible con OpenAI (DeepSeek, Mistral, un servidor de modelos en tu red): añádelo como destino y después usa su ruta como URL base del agente, aquí
http://127.0.0.1:5283/deepseek/v1:Ventana de terminal latet config add upstreams "{name: deepseek, url: https://api.deepseek.com}"Consulta
upstreams. -
Los agentes autónomos como Hermes Agent y OpenClaw aceptan estas URL base en sus propios ajustes: consulta Hermes Agent, OpenClaw y otros agentes.
© 2026 Emanuele Casabona · NIF-IVA IT02293040990 · Política de privacidad · Aviso legal · latet.ai