Documentación

Documentación

Nanocoder

Nanocoder trata los endpoints remotos igual que Ollama: como una entrada en nanocoder.providers con nombre, URL base, clave y lista de modelos. sdkProvider usa openai-compatible de forma predeterminada, así que no hace falta declarar nada más.

Una entrada Custom Provider bajo nanocoder.providers en agents.config.json — name, baseUrl, apiKey, models — sin necesidad de una línea sdkProvider, ya que el valor predeterminado es openai-compatible.

agents.config.json
{
  "nanocoder": {
    "providers": [
      {
        "name": "Kunavo",
        "baseUrl": "https://api.kunavo.com/v1",
        "apiKey": "${KUNAVO_API_KEY}",
        "models": ["claude-sonnet-5", "claude-haiku-4-5", "gpt-5-6-sol"]
      }
    ]
  }
}
Kunavo no ha ejecutado Nanocoder contra este endpoint. Todos los campos anteriores se transcribieron de la página Custom Provider del propio Nanocoder, no de una sesión que alguien haya completado aquí. Esto es una referencia de configuración, no una prueba de compatibilidad. Primero ejecuta una tarea pequeña y acotada, y ten disponible otra vía mientras lo haces.
La URL base conserva el sufijo /v1. La documentación de Nanocoder lo aclara con un ejemplo, no con una regla: la tabla de campos solo describe baseUrl como «URL del endpoint de la API», pero el ejemplo de la propia página Custom Provider es "baseUrl": "https://my-api.example.com/v1", y todas las páginas de proveedores compatibles con OpenAI del sitio hacen lo mismo: https://openrouter.ai/api/v1, http://localhost:11434/v1. Si omites el sufijo, se produce un 404 en la ruta, no un 401 por la clave.
sdkProvider se omite arriba intencionalmente: la tabla de campos indica que su valor predeterminado es openai-compatible, el formato de conexión que Kunavo responde aquí. Los otros valores documentados (google, anthropic, github-copilot) cambian a otro SDK, y ninguno es necesario para acceder a un endpoint de chat completions.
Se comprueban tres ubicaciones de configuración, en este orden: NANOCODER_PROVIDERS (o NANOCODER_PROVIDERS_FILE); después, agents.config.json en el directorio de trabajo; y, por último, la ubicación del usuario: ~/Library/Preferences/nanocoder/ en macOS, ~/.config/nanocoder/ en Linux y %APPDATA%\nanocoder\ en Windows. Se usa la primera que se encuentra, y configurar NANOCODER_CONFIG_DIR omite por completo la búsqueda en el proyecto y en el directorio personal. Si la clave que editaste no es la que se envía, comprueba este orden de precedencia.
¿Aún no tienes una clave? Crea una cuenta de Kunavo, genera una clave (empieza por 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 Nanocoder.

Paso a paso

  1. Crea una clave en /app/keys y cópiala; solo se muestra una vez. Expórtala como KUNAVO_API_KEY en lugar de pegarla en el archivo: Nanocoder sustituye recursivamente $VAR, ${VAR} y ${VAR:-default} en todas las cadenas de una entrada de proveedor, y lee .env desde el directorio de trabajo.
  2. Ejecuta /settings providers dentro de Nanocoder y selecciona Custom Provider. El asistente solicita, en este orden, Provider name, Base URL, API key (optional), Model names y Request timeout, y ofrece obtener la lista de modelos del endpoint. Kunavo responde GET /v1/models, así que la lista se carga automáticamente.
  3. También puedes omitir el asistente y escribir agents.config.json tú mismo con el bloque anterior. Ten en cuenta que la configuración se resuelve archivo por archivo: si un archivo de nivel de proyecto define nanocoder.providers, se usa ese bloque completo y no se combinan con él las entradas de la configuración global.
  4. Configura una ventana de contexto. Nanocoder resuelve el límite en este orden: /context-max, luego contextWindows[model], después contextWindow, a continuación NANOCODER_CONTEXT_LIMIT y, por último, models.dev. Kunavo no es un proveedor de models.dev, así que, si no configuras una de las primeras cuatro opciones, el cálculo se basará en un límite alternativo que no corresponde a tu modelo. Los valores están en /models.
  5. Abre /model, selecciona uno de los ID que enumeraste —el selector los muestra bajo name que especificaste— y ejecuta una tarea pequeña que tenga que llamar a una herramienta. Si las llamadas a herramientas devuelven datos mal formados en un modelo concreto, disableToolModels permite desactivarlo para cada modelo, en lugar de para todo el proveedor.

Comprobado con Página Custom Provider de Nanocoder 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.

Esta es la versión breve. El tutorial completo —elección del modelo, coste de una sesión real y modos de fallo— está en Nanocoder frente a OpenCode: cuánto te cuesta cada uno aparte del bloque del proveedor.

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 Nanocoder.

# 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 modeloEntrada / salida de KunavoDónde encaja en Nanocoder
claude-sonnet-5$1.40 / $7.00el modelo de trabajo predeterminado para el ciclo de edición y ejecución de un agente de terminal
claude-haiku-4-5$0.70 / $3.50sesiones largas con muchas herramientas y clasificación rápida de archivos, donde el número de turnos determina el coste
gpt-5-6-sol$2.00 / $12.00una segunda opinión de otra familia con la misma clave
claude-opus-5$3.50 / $17.50la única refactorización compleja de una sesión, donde un plan incorrecto sale caro
La facturación es por token desde un saldo prepago, sin cuota mensual; consulta facturación. Con contexto repetido —que constituye la mayor parte de lo que envía un editor o cliente de chat—, la caché de indicaciones cambia más la factura que la elección del modelo.

Preguntas frecuentes

¿Nanocoder admite endpoints de API personalizados?

Sí. Es una función oficial documentada, no un campo sin documentar. La página «Custom Provider» del propio Nanocoder indica que se puede añadir cualquier servicio que exponga una API compatible con OpenAI como proveedor personalizado, e incluye el objeto que hay que escribir: name, baseUrl, apiKey y models. Puedes añadirlo de forma interactiva con el asistente /settings providers o editar agents.config.json manualmente. Esa era la documentación vigente al 21 de septiembre de 2026.

¿Dónde pongo la clave API de Nanocoder?

En el campo apiKey de la entrada del proveedor en agents.config.json. Nanocoder sustituye recursivamente las variables de entorno en los campos de cadena de las configuraciones del proveedor, así que la forma más segura es usar "apiKey": "${KUNAVO_API_KEY}" y exportar el valor en el shell o en un archivo .env del directorio de trabajo. Las sobrescrituras de entorno mediante NANOCODER_PROVIDERS tienen la mayor precedencia, seguidas de agents.config.json del proyecto y, después, del archivo del usuario. Si una edición parece no surtir efecto, normalmente es porque la configuración está siendo sobrescrita antes en ese orden.

¿Debe terminar baseUrl de Nanocoder en /v1?

Sí, para un endpoint compatible con OpenAI; por ejemplo, https://api.kunavo.com/v1. La documentación de Nanocoder no establece en el texto una regla sobre el sufijo; la tabla de campos solo describe baseUrl como la URL del endpoint de la API. Sin embargo, el ejemplo de su propia página Custom Provider lo aclara: usa https://my-api.example.com/v1 y todas las páginas de proveedores compatibles con OpenAI del sitio incluyen el mismo sufijo. Si falta /v1, se obtiene un 404 en la ruta, no un error de autenticación.

¿Por qué Nanocoder no muestra ningún coste o indica un tamaño de contexto incorrecto para estos modelos?

Porque Nanocoder lee los metadatos de modelos de models.dev y un gateway de terceros que no aparece allí no tiene ninguna entrada. El orden documentado para resolver el límite de contexto es /context-max o --context-max, luego contextWindows[model], después contextWindow, luego NANOCODER_CONTEXT_LIMIT y, por último, models.dev. Configura una de las primeras cuatro opciones en la entrada del proveedor para que el indicador vuelva a ser correcto. En cualquier caso, la cifra de coste por respuesta es un cálculo del propio cliente basado en los tokens informados. Compárala con el registro de uso de tu proveedor, no con el pie de página.