Documentation

Documentation

Nanocoder

Nanocoder traite un point de terminaison distant de la même manière qu’Ollama : une seule entrée sous nanocoder.providers, avec un nom, une URL de base, une clé et une liste de modèles. sdkProvider prend par défaut la valeur openai-compatible ; aucune autre déclaration n’est donc nécessaire.

Une entrée Custom Provider sous nanocoder.providers dans agents.config.json — name, baseUrl, apiKey, models — sans ligne sdkProvider nécessaire, car la valeur par défaut est 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 n’a pas exécuté Nanocoder avec ce point de terminaison. Chaque champ ci-dessus est retranscrit depuis la propre page Custom Provider de Nanocoder, et non depuis une session menée à terme par notre équipe : il s’agit d’une référence de configuration, pas d’un test de compatibilité. Commencez par une petite tâche bien délimitée et gardez une autre solution à disposition pendant l’essai.
L’URL de base conserve le suffixe /v1. La documentation de Nanocoder le précise par l’exemple plutôt que par une règle : le tableau des champs décrit baseUrl uniquement comme « URL du point de terminaison de l’API », mais l’exemple de la page Custom Provider est "baseUrl": "https://my-api.example.com/v1", et toutes les pages de fournisseurs compatibles avec OpenAI du site font de même : https://openrouter.ai/api/v1, http://localhost:11434/v1. Si vous omettez ce suffixe, l’échec se manifeste par une erreur 404 sur la route, et non par une erreur 401 liée à la clé.
sdkProvider est volontairement absent ci-dessus : le tableau des champs indique que sa valeur par défaut est openai-compatible, c’est-à-dire le format utilisé ici par Kunavo. Les autres valeurs documentées (google, anthropic, github-copilot) sélectionnent un autre SDK ; aucune n’est nécessaire pour atteindre un point de terminaison chat-completions.
La configuration sélectionnée dépend de trois emplacements, dans cet ordre : NANOCODER_PROVIDERS (ou NANOCODER_PROVIDERS_FILE), puis agents.config.json dans le répertoire de travail, puis le fichier propre à l’utilisateur — ~/Library/Preferences/nanocoder/ sur macOS, ~/.config/nanocoder/ sur Linux et %APPDATA%\nanocoder\ sur Windows. Le premier fichier trouvé est utilisé, et la définition de NANOCODER_CONFIG_DIR ignore entièrement les fichiers du projet et du répertoire personnel. Si la clé que vous avez modifiée n’est pas celle qui est envoyée, vérifiez cet ordre de priorité.
Pas encore de clé ? Créez un compte Kunavo, créez une clé (elle commence par sk-kn-) et ajoutez un crédit à partir de 10 $ — les appels sont payés sur ce solde et les appels échoués ne sont pas facturés. Le tableau de bord s’ouvre ensuite sur la configuration Nanocoder.

Étape par étape

  1. Créez une clé dans /app/keys et copiez-la — elle n’est affichée qu’une seule fois. Exportez-la sous le nom KUNAVO_API_KEY au lieu de la coller dans le fichier : Nanocoder remplace $VAR, ${VAR} et ${VAR:-default} de manière récursive dans chaque chaîne d’une entrée de fournisseur, et lit .env dans le répertoire de travail.
  2. Exécutez /settings providers dans Nanocoder et choisissez Custom Provider. L’assistant demande, dans l’ordre qui lui est propre : Provider name, Base URL, API key (optional), Model names et Request timeout. Il propose également de récupérer la liste de modèles depuis le point de terminaison — Kunavo répond GET /v1/models, et la liste se remplit donc automatiquement.
  3. Vous pouvez aussi ignorer l’assistant et rédiger vous-même agents.config.json à l’aide du bloc ci-dessus. Notez que les paramètres sont résolus fichier par fichier : si un fichier au niveau du projet définit nanocoder.providers, il fournit le bloc entier, et les entrées de votre configuration globale ne sont pas fusionnées avec celui-ci.
  4. Définissez une fenêtre de contexte. Nanocoder détermine la limite dans cet ordre : /context-max, puis contextWindows[model], contextWindow, NANOCODER_CONTEXT_LIMIT et enfin models.dev. Kunavo n’étant pas un fournisseur models.dev, en l’absence de l’une des quatre premières valeurs, le calcul du budget repose sur une valeur de repli qui ne correspond pas à votre modèle. Les limites figurent sur /models.
  5. Ouvrez /model, choisissez l’un des ID que vous avez répertoriés — le sélecteur les affiche sous le name que vous avez indiqué — et exécutez une petite tâche qui doit appeler un outil. Si les appels d’outil sont mal formés sur un modèle donné, disableToolModels permet de désactiver cela pour ce modèle plutôt que pour tout le fournisseur.

Vérifié avec Page Custom Provider de Nanocoder le 21 septembre 2026. Les paramètres tiers évoluent ; si le nom d’un champ ne correspond plus à ce que vous voyez ici, cette page fait autorité, pas celle-ci.

Voici la version courte. Le guide complet — choix du modèle, coût d’une session réelle et modes d’échec — se trouve dans Nanocoder et OpenCode — ce que chacun vous coûte au-delà du bloc fournisseur.

Vérifiez avant de déboguer le client

Une requête suffit à déterminer si l’échec vient de l’endpoint, de la clé ou du fichier de configuration. Si cette requête renvoie du JSON, la même URL de base et la même clé fonctionnent dans 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-..."

Quel identifiant de modèle saisir dans le champ

Tous les modèles textuels sont accessibles sous forme d’identifiant de modèle — la liste à jour se trouve sur GET /v1/models, et le catalogue avec les prix sur la page des modèles. Les tarifs sont en USD par million de tokens, entrée / sortie.

Identifiant du modèleEntrée / sortie sur KunavoOù cela s’intègre dans Nanocoder
claude-sonnet-5$1.40 / $7.00le modèle de travail par défaut pour la boucle de modification et d’exécution d’un agent de terminal
claude-haiku-4-5$0.70 / $3.50les longues sessions riches en appels d’outils et le tri rapide de fichiers, où le nombre de tours détermine le coût
gpt-5-6-sol$2.00 / $12.00un deuxième avis issu d’une autre famille, avec la même clé
claude-opus-5$3.50 / $17.50la refactorisation complexe d’une session, où un plan erroné coûte cher
La facturation se fait au token à partir d’un solde prépayé, sans frais mensuels — consultez la facturation. Avec un contexte répété — ce qu’envoient la plupart des éditeurs et clients de chat — la mise en cache des prompts influe davantage sur la facture que le choix du modèle.

Questions fréquentes

Nanocoder prend-il en charge un point de terminaison d’API personnalisé ?

Oui, et il s’agit d’une fonctionnalité officielle documentée, pas d’un champ non documenté. La propre page « Custom Provider » de Nanocoder indique que tout service exposant une API compatible avec OpenAI peut être ajouté comme fournisseur personnalisé, et présente l’objet à écrire : name, baseUrl, apiKey et models. Vous pouvez l’ajouter à l’aide de l’assistant /settings providers ou en modifiant agents.config.json manuellement. Il s’agissait de la documentation disponible au 21 septembre 2026.

Où dois-je renseigner la clé API Nanocoder ?

Dans le champ apiKey de l’entrée du fournisseur, dans agents.config.json. Nanocoder applique de manière récursive le remplacement des variables d’environnement aux champs de chaîne des configurations de fournisseur. Il est donc plus sûr d’utiliser "apiKey": "${KUNAVO_API_KEY}" et d’exporter la valeur dans votre shell ou dans un fichier .env du répertoire de travail. Les substitutions d’environnement via NANOCODER_PROVIDERS ont la priorité la plus élevée, suivies du fichier agents.config.json au niveau du projet, puis de celui propre à l’utilisateur. Si une modification semble sans effet, c’est généralement parce qu’elle est supplantée plus haut dans cet ordre.

L’URL baseUrl de Nanocoder doit-elle se terminer par /v1 ?

Pour un point de terminaison compatible avec OpenAI, oui — par exemple https://api.kunavo.com/v1. La documentation de Nanocoder n’énonce pas de règle en prose sur ce suffixe ; le tableau des champs décrit simplement baseUrl comme l’URL du point de terminaison de l’API. Les exemples tranchent la question : l’exemple de la page Custom Provider utilise https://my-api.example.com/v1, et toutes les pages de fournisseurs compatibles avec OpenAI du site comportent le même suffixe. Si /v1 manque, l’erreur se manifeste par une erreur 404 sur la route plutôt que par une erreur d’authentification.

Pourquoi Nanocoder n’affiche-t-il aucun coût ou une taille de contexte erronée pour ces modèles ?

Parce que Nanocoder lit les métadonnées des modèles depuis models.dev, où une passerelle tierce qui n’y figure pas n’a pas d’entrée. L’ordre documenté pour la limite de contexte est /context-max ou --context-max, puis contextWindows[model], ensuite contextWindow, puis NANOCODER_CONTEXT_LIMIT et enfin models.dev. Définissez donc l’une des quatre premières valeurs dans l’entrée du fournisseur pour que le compteur soit de nouveau correct. Le coût par réponse est dans tous les cas calculé par le client à partir des jetons déclarés ; comparez-le au relevé de votre fournisseur, et non au pied de page.