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.
{
"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"]
}
]
}
}/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.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é.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
- Créez une clé dans
/app/keyset copiez-la — elle n’est affichée qu’une seule fois. Exportez-la sous le nomKUNAVO_API_KEYau 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.envdans le répertoire de travail. - Exécutez
/settings providersdans 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épondGET /v1/models, et la liste se remplit donc automatiquement. - 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éfinitnanocoder.providers, il fournit le bloc entier, et les entrées de votre configuration globale ne sont pas fusionnées avec celui-ci. - Définissez une fenêtre de contexte. Nanocoder détermine la limite dans cet ordre :
/context-max, puiscontextWindows[model],contextWindow,NANOCODER_CONTEXT_LIMITet 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. - Ouvrez
/model, choisissez l’un des ID que vous avez répertoriés — le sélecteur les affiche sous lenameque 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é,disableToolModelspermet 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.
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èle | Entrée / sortie sur Kunavo | Où cela s’intègre dans Nanocoder |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | le 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.50 | les 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.00 | un deuxième avis issu d’une autre famille, avec la même clé |
claude-opus-5 | $3.50 / $17.50 | la refactorisation complexe d’une session, où un plan erroné coûte cher |
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.