Documentación
Jan Agent
Jan Agent no incluye un motor de inferencia, así que siempre llama al endpoint que especifiques. Un único comando jan config set guarda Kunavo en ~/.jan/config.toml, y el agente de terminal puede ejecutar modelos Claude y GPT con una sola clave.
Una línea `jan config set --base-url https://api.kunavo.com/v1` escribe Kunavo en ~/.jan/config.toml, y la CLI de vista previa Jan Agent — que no incluye motor de inferencia — funciona con esa clave.
# Jan Agent is a preview on a nightly channel — check your build first.
jan --version
jan config set \
--provider kunavo \
--api-key sk-kn-... \
--base-url https://api.kunavo.com/v1 \
--model claude-sonnet-5 \
--model claude-haiku-4-5 \
--api-type openai
jan config list # configured providers as JSON, keys redacted/v1 en ambos protocolos. Jan solo añade la ruta: la página para contribuir un proveedor indica que el inicio de sesión «valida la clave contra GET {base_url}/models», y la página de proveedores dice que la primera vez que abres /model en una sesión, se consulta en la entrada configurada su GET /models. Todas las URL base impresas en esa documentación terminan en /v1, incluida la de Anthropic en el ejemplo jan cli models list. Así que --api-type anthropic también requiere https://api.kunavo.com/v1, justo al contrario de Claude Code y de los SDK oficiales de Anthropic, donde el mismo sufijo genera /v1/v1/messages y un error 404. Si la ruta aparece duplicada en el error, sabrás qué convención estás usando.dev usa el canal agent-nightly: «se esperan compilaciones de calidad nightly». No hay una versión etiquetada que se pueda citar, así que ejecuta jan --version y anota esa cadena junto a esta configuración: las opciones indicadas abajo se obtuvieron de la documentación en la fecha que aparece al final de esta página, y el nombre de una opción puede cambiar en una versión nightly. Una compilación desde el código fuente (scripts/install-jan-agent.sh --source) no se actualiza por sí sola, lo que permite mantener una versión fija.jan config unset --provider kunavo permite deshacer todo.<project>/.jan/agent/memory/, no en un almacén vectorial, así que el ciclo de trabajo del propio agente no requiere un segundo tipo de modelo.sk-kn-) y añade crédito desde $10; las llamadas se pagan con ese saldo y las llamadas fallidas no se facturan. El panel se abre entonces en la configuración de Jan Agent.Paso a paso
- Cree una clave en
/app/keysy cópiela: se muestra una sola vez. - Comprueba qué estás configurando:
jan --version. Jan Desktop también incluye un CLI que se invoca comojan, pero tiene un conjunto de comandos distinto. Antes de escribir lo demás, confirma quejan config set --helpmuestra--base-url. - Ejecuta la línea
jan config setde arriba.--provideres un ID que eliges, no un nombre de una lista fija; el propio ejemplo de hardware local de la documentación usa--provider local. Además,--modelse puede repetir y reemplaza cualquier lista existente en vez de ampliarla. - Confirma que se haya aplicado con
jan config list(las claves se ocultan) o conjan config pathpara consultar directamente el archivo; después, ejecutajan cli models listpara ver qué ofrece cada proveedor. Un ID de modelo escrito manualmente permanece aunque el endpoint deje de incluirlo en su lista;jan cli models refresh --provider kunavousa, en cambio, la lista del endpoint como fuente de verdad. - Cambia a un directorio de proyecto y ejecuta
jan; después, elige el modelo con/model. Para la primera ejecución, es preferible usarjan --plan: es de solo lectura, por lo que cualquier incompatibilidad de protocolo saldrá a la luz antes de escribir datos en el disco. - Asígnale una tarea que modifique un archivo. Jan Agent es un agente, así que la primera ejecución debe poner a prueba las llamadas a herramientas y el streaming: son las primeras funciones que fallarían ante un endpoint solo parcialmente compatible, y un saludo no pone a prueba ninguna de las dos.
Comprobado con Página de proveedores de Jan Agent el 21 de septiembre de 2026. La configuración de terceros puede cambiar; si el nombre de un campo ya no coincide con lo que ves, esa página es la autoridad, no esta.
Verifica antes de depurar el cliente
Una solicitud determina si el fallo está en el endpoint, la clave o el archivo de configuración. Si devuelve JSON, la misma URL base y la misma clave funcionan en Jan Agent.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."Qué ID de modelo introducir en el campo
Todos los modelos de texto están disponibles mediante un ID de modelo; la lista activa está en GET /v1/models, y el catálogo con precios está en la página de modelos. Las tarifas son USD por 1M de tokens, entrada / salida.
| ID de modelo | Entrada / salida de Kunavo | Dónde encaja en Jan Agent |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | el modelo de trabajo predeterminado: el ID que debes colocar primero después de --model |
claude-opus-5 | $3.50 / $17.50 | un plan en el que equivocarse saldría caro; combínalo con jan --plan |
claude-haiku-4-5 | $0.70 / $3.50 | turnos económicos: clasificación inicial, resúmenes y el ciclo que se ejecuta todo el día |
gpt-5-6-sol | $2.00 / $12.00 | una segunda opinión de otra familia, con la misma clave y URL base |
gpt-5-6-terra | $0.70 / $4.20 | lectura de contexto largo, con el tipo de API openai |
Dos cosas distintas reciben el nombre de clave de API de Jan
Se guardan en el mismo archivo y tienen funciones opuestas, por eso jan config list puede parecer incorrecto a quien esperaba la otra.
| Qué | De dónde procede | Qué autentica |
|---|---|---|
jan login | Iniciar sesión en Tokamak, el backend autohospedado, desde el shell o con /login en la consola | Tu propia implementación de Tokamak. Jan Agent escribe por ti la clave que recibe en ~/ |
jan config set --api-key | Una credencial que ya tienes para algún endpoint: aquí, la clave sk-kn- de Kunavo | Ese endpoint, cuya facturación es por solicitud. Esta página trata sobre esta opción |
Jan Desktop no emite ninguna de las dos: no tiene cuenta, así que no hay nada que generar. Su servidor de API local acepta una clave que inventas tú, que es un tercer significado y corresponde a otro host.
Qué transmite Jan Desktop y hasta dónde llega
Jan Agent lee los ajustes del proveedor de cuatro fuentes, cada una con prioridad sobre las anteriores, y la segunda es la que sorprende a la gente.
~/.jan/config.toml— la configuración base y el único archivo que escribejan config set.- El
settings.jsonde Jan Desktop: solo para heredar. Añade proveedores que no hayas configurado en Agent, nunca sobrescribe los que ya tengas y nunca se escribe en él. - Un bloque
[provider]en elagent.tomlde un proyecto: una elección explícita para cada proyecto, por lo que prevalece sobre ambos. Ese archivo suele incluirse en el repositorio, así que no pongasapi_keyen él. --provider/--api-keyen la línea de comandos, oJAN_API_KEY/<PROVIDER>_API_KEY: la opción más explícita y más efímera.
Conviene conocer dos consecuencias antes de depurar lo que no corresponde. jan config list puede indicar que no hay proveedores mientras que jan cli models list devuelve varios: el segundo incluye los proveedores heredados de Desktop, que no están guardados en ~/.jan/config.toml. Además, un proveedor heredado nunca se actualiza, porque aquí no hay ninguna entrada que reescribir: si quieres que la lista de modelos de Kunavo se mantenga al día, debe tener su propia entrada jan config set, que es lo que crea el bloque anterior.
Cuando dos proveedores ofrecen el mismo id de modelo
Kunavo ofrece ids como claude-sonnet-5, al igual que una entrada de proveedor que apunta directamente al proveedor original. Jan Agent tiene que elegir uno, y el orden documentado es el siguiente: primero, una coincidencia exacta en la lista models de un proveedor; después, un prefijo <provider>/<model> que nombre a un proveedor configurado; y, si varios ofrecen el mismo id, prevalece el proveedor con credenciales frente a otro idéntico sin clave. Por eso, kunavo/claude-sonnet-5 indica cuál querías usar. El calificador solo es para Jan: se elimina antes de enviar la solicitud, porque los proveedores upstream rechazan un id calificado con un proveedor.
La misma entrada, desde la consola
Si prefieres no escribir indicadores: /settings > providers permite gestionar las mismas entradas ~/.jan/config.toml, y a abre un formulario para añadirlas con los campos name, base url, api key y models separados por espacios. El formulario hace dos cosas que no hacen los indicadores: la URL base debe ser https:// (o http:// para un endpoint localhost), para que la clave nunca se envíe por una conexión remota sin cifrar —Kunavo usa https://, así que esto no supone ningún problema—; además, al editar, el campo de la clave de API muestra (unchanged) y conserva lo almacenado salvo que escribas algo. Si dejas el campo vacío, se borra la clave en lugar de conservarla.
Preguntas frecuentes
¿Cómo apunto Jan Agent a un endpoint de API personalizado?
Con un comando: jan config set --provider <id> --api-key <key> --base-url <url> --model <model> --api-type openai. El id del proveedor lo eliges tú, no se toma de una lista fija; --model se puede repetir y sustituye cualquier lista existente; y --api-type tiene por defecto compatibilidad con OpenAI, así que puedes omitirlo para un endpoint con formato de OpenAI. La entrada se escribe en ~/.jan/config.toml, que también puedes editar desde /settings > providers en la consola. La propia página de Jan sobre cómo contribuir con un proveedor indica que un endpoint compatible con OpenAI no requiere código, solo esta configuración.
¿La URL base de Jan Agent debe terminar en /v1?
Sí, también para el tipo de protocolo Anthropic. Jan solo añade la ruta: la página sobre cómo contribuir con un proveedor indica que el inicio de sesión valida la clave mediante GET {base_url}/models, y la página de proveedores dice que, al abrir /model por primera vez en una sesión, se consulta el GET /models de la entrada configurada. Como la ruta añadida es /models y no /v1/models, la URL base guardada ya debe ser la raíz /v1: https://api.kunavo.com/v1 para Kunavo. Todas las URL base que aparecen en la documentación de Jan terminan igual, incluida la entrada Anthropic del ejemplo de su lista de modelos de jan cli. Esto es lo contrario de Claude Code y los SDK oficiales de Anthropic, donde añadir /v1 produce /v1/v1/messages y un error 404.
¿Cuál es la diferencia entre jan login y jan config set --api-key?
Autentican cosas distintas. jan login inicia sesión en Tokamak, el backend autohospedado, y guarda la clave que recibe en ~/.jan/config.toml: es un inicio de sesión en tu propia implementación. jan config set --api-key guarda una credencial que ya tienes para algún endpoint, como la que usas con un proveedor externo como Kunavo. Jan Desktop no emite ninguna de las dos, porque no tiene una cuenta desde la que emitirlas; la clave que solicita su servidor de API local es una cadena que inventas tú, otro significado distinto de la expresión.
¿Por qué jan config list no muestra nada mientras que jan cli models list sí muestra modelos?
Porque los dos comandos leen conjuntos distintos. jan config list solo muestra lo que está guardado en ~/.jan/config.toml, mientras que jan cli models list también incluye los proveedores heredados de Jan Desktop, que no están guardados ahí. La documentación de Jan lo señala directamente. La consecuencia práctica es que un proveedor heredado nunca se actualiza: no hay ninguna entrada que reescribir. Por eso, si quieres que la lista de modelos de un proveedor se mantenga al día, añádelo primero con jan config set.
¿Puede Jan Agent ejecutar modelos Claude sin una cuenta de Anthropic?
Sí. Jan Agent no incluye un motor de inferencia, así que un modelo siempre se ejecuta en el endpoint que configures, y --api-type especifica el protocolo de comunicación, no el proveedor. Un id de Claude se resuelve en la URL base que configures, lo que significa que las credenciales que tienes son las de ese endpoint. Kunavo ofrece ids de Claude y GPT mediante una sola clave en una interfaz compatible con OpenAI. Esta configuración se publicó basándose en la documentación de Jan, no en una prueba con el cliente, y Jan Agent sigue siendo una versión preliminar en un canal nightly; por eso, considera que los indicadores corresponden a la compilación que compruebes con jan --version.
Jan Agent devuelve 404 en todas las solicitudes. ¿Cuál es el problema?
Casi siempre, la URL base. Si falta /v1, Jan solicita /models y /chat/completions en el origen y recibe un 404, en lugar de un error de autenticación; si el error muestra /v1/v1 duplicado, se añadió el sufijo a una URL base que ya lo tenía. Compruébalo primero fuera del cliente: llama a GET /v1/models en el endpoint con un curl sencillo y la misma clave. Si recibes JSON, el endpoint y la clave funcionan y el problema está en la entrada configurada; un 401 indica que el problema es la clave y un 404, la URL. Después, comprueba jan config path y lee directamente el valor guardado de base_url.