OpenCode est la réponse par défaut, et Nanocoder le choix délibéré d’une minorité : le 19 septembre 2026, OpenCode comptait 208 444 étoiles GitHub contre 2 487 pour Nanocoder, et son paquet npm avait été téléchargé 9 436 914 fois au cours des 30 jours précédant le 16 septembre, contre 6 614 pour Nanocoder. Les deux sont des agents de programmation en terminal gratuits, sous licence MIT, qui permettent de cibler un point de terminaison API personnalisé. Le choix entre eux n’est pas un classement de qualité : c’est le choix entre la surface la plus large, avec deux produits officiels en concurrence pour vos dépenses de jetons, et une surface plus restreinte gérée par un collectif qui ne vend rien.
Considérez ces chiffres de téléchargement comme des ordres de grandeur plutôt que comme un nombre d’utilisateurs. OpenCode s’installe également via un script curl et Homebrew, et les exécuteurs CI gonflent tout chiffre npm, tandis que Nanocoder est aussi distribué par Homebrew et Nix en dehors de npm. Le ratio est solide dans ses grandes lignes ; les chiffres absolus ne le sont pas.
Commencez par vous assurer que vous comparez bien les deux projets concernés
Trois collisions de noms apparaissent directement dans les résultats de recherche pour cette comparaison, et deux d’entre elles feront échouer une configuration au lieu de simplement vous induire en erreur.
| Nom que vous avez peut-être trouvé | Ce que c’est réellement | Fait-il partie de cette comparaison ? |
|---|---|---|
| anomalyco/opencode | L’OpenCode TypeScript sur opencode.ai. Non archivé, sous licence MIT, branche par défaut dev | Oui — c’est bien l’OpenCode visé ici |
| opencode-ai/opencode | Le CLI Go d’origine. Archivé, 13,752 étoiles, dernier push le 18 septembre 2025 ; son README redirige les lecteurs vers Crush | Non. Consultez la fiche de l’annuaire |
| OpenCoder | Une famille de grands modèles de langage de code open source, pas un CLI. Aucun fichier de configuration, aucun paramètre de fournisseur, aucune prise en charge du BYOK | Non. Ses scores aux benchmarks ne disent rien sur l’agent |
| Nano-Collective/nanocoder | Nanocoder, npm @nanocollective/nanocoder, documentation sur docs.nanocollective.org | Oui — c’est bien le Nanocoder visé ici |
| nanocode-project/nanocode | Un projet Python distinct, presque inactif, créé le 1er avril 2026, avec un nouveau push le lendemain | Non. Consultez la fiche de l’annuaire |
Un autre changement mérite d’être connu avant de suivre un ancien tutoriel. Le dépôt que de nombreux guides appellent encore sst/opencode redirige désormais via une redirection 301 vers anomalyco/opencode, et l’organisation GitHub sst est vide, avec une description indiquant qu’elle a été transférée vers anomalyco (API GitHub, 19 septembre 2026). La propre documentation d’OpenCode le confirme dans les commandes d’installation — brew install anomalyco/tap/opencode, ghcr.io/anomalyco/opencode — et toutes les pages de documentation portent un pied de page indiquant le copyright d’Anomaly. Le nom du produit n’a pas changé, seule l’organisation a changé. Une date de renommage circule sur les réseaux sociaux ; elle n’a pas pu être vérifiée ici et n’est donc pas publiée sur cette page.
Qui devrait choisir lequel
Partez de votre modèle par défaut, pas de la liste des fonctionnalités. Si votre journée repose déjà sur un modèle avancé hébergé et que l’inférence locale reste une expérimentation occasionnelle, la position d’OpenCode correspond à la vôtre. Si votre journée repose sur Ollama, llama.cpp, LM Studio, vLLM ou MLX et qu’une API hébergée constitue l’exception, celle de Nanocoder vous correspond — même s’il s’agit d’une différence de valeur par défaut, et non de capacité, car OpenCode documente également les URL de base d’Ollama, LM Studio et llama.cpp.
| Si cela vous correspond | Choisir | Parce que |
|---|---|---|
| Vous voulez l’agent dans un TUI, une application de bureau et une extension IDE, ainsi qu’un serveur et des plugins | OpenCode | Nanocoder fournit un TUI de terminal avec --vscode et un serveur ACP pour Zed ; c’est toute sa surface |
| Vous avez besoin d’autorisations déclaratives et vérifiables pour chaque outil et chaque agent | OpenCode | Les règles sont des données : allow/ask/deny par outil, avec des caractères génériques bash, versionnées dans le dépôt |
| Vous voulez que les commandes shell soient confinées par le système d’exploitation, et non par un prompt | Nanocoder | nanocoder.sandbox encapsule execute_bash dans sandbox-exec ou bwrap ; OpenCode ne propose aucun indicateur équivalent dans sa documentation sur les autorisations |
Votre passerelle fournit /v1/responses et vous voulez ce format filaire | OpenCode | L’union de fournisseurs de Nanocoder ne propose aucune option Responses générique |
| Vous voulez que le mainteneur de votre agent n’ait aucun intérêt dans le choix des jetons que vous achetez | Nanocoder | Il n’existe ni compte Nanocoder, ni offre, ni passerelle. OpenCode en propose deux |
| Vous standardisez une équipe et avez besoin du SSO et d’une configuration imposée à l’échelle de l’organisation | OpenCode | C’est exactement ce que contrôle OpenCode Enterprise, par siège, à un prix non publié |
| Vous voulez un seul modèle d’extension au lieu de plusieurs sous-systèmes | Nanocoder | Les skills constituent l’enveloppe unique pour les commandes, les sous-agents, les outils et les déclencheurs |
| Vous voulez un plus grand ensemble de problèmes, d’exemples et d’intégrations tierces | OpenCode | L’écart d’adoption ci-dessus constitue tout l’argument, et il est bien réel |
Le coût de migration est symétrique et faible au niveau du fournisseur, mais asymétrique au-dessus. Un point de terminaison personnalisé tient dans un bloc JSON dans les deux clients, si bien que déplacer une passerelle prend quelques minutes. En revanche, ce que vous avez construit par-dessus ne se transpose pas : les bundles de skills Nanocoder sous .nanocoder/skills/ et ses hooks de cycle de vie — lorsqu’un hook pre-tool-use se termine avec un code différent de zéro, il refuse l’appel et en explique la raison au modèle — n’ont aucun équivalent OpenCode dans lequel les copier, tandis que les blocs d’autorisations par agent, les plugins et la configuration LSP d’OpenCode n’ont aucun équivalent Nanocoder. Évaluez ce travail avant de compter les lignes de configuration.
Les différences réelles entre les deux clients
| Dimension | Nanocoder | OpenCode |
|---|---|---|
| Dépôt et licence | Nano-Collective/nanocoder, MIT selon package.json, et le texte MIT se trouve dans LICENSE.md. Le détecteur de GitHub lui-même indique toujours NOASSERTION pour le dépôt | anomalyco/opencode, MIT selon l’API GitHub |
| Version actuelle | v1.30.0, 26 août 2026 ; npm @nanocollective/nanocoder 1.30.0 le même jour | v1.18.31, 14 septembre 2026 ; npm opencode-ai 1.18.31 le même jour |
| Environnement d’exécution | Node >= 22 selon package.json | Installation via un script curl, npm, Homebrew, mise ou Docker, selon la documentation d’installation |
| Interfaces | TUI de terminal, --vscode, --acp pour Zed | TUI de terminal, application de bureau, extension IDE, ainsi que CLI, web, serveur, SDK et plugins |
| Fichier de configuration | agents.config.json — répertoire du projet ou répertoire de configuration propre au système d’exploitation ; NANOCODER_CONFIG_DIR ignore toutes les autres recherches | opencode.json ou ~/.config/opencode/opencode.json, JSON ou JSONC, avec interpolation de {env:VAR} et {file:path} |
| Priorité de configuration | Résolu bloc par bloc : le fichier ayant la priorité la plus élevée qui définit un bloc fournit le bloc entier, et les champs omis reviennent aux valeurs intégrées par défaut plutôt qu’à un fichier de niveau inférieur | Huit couches fusionnées, et non remplacées — les configurations ultérieures remplacent les précédentes uniquement pour les clés en conflit |
| Contrôle de l’exécution | Quatre modes globaux activés avec Shift+Tab : Normal, Auto-Accept (bash et les opérations git destructrices demandent toujours confirmation), Yolo, Plan | Règles déclaratives par outil pour read, edit, bash, webfetch, task, skill, lsp et bien d’autres, chacune avec allow/ask/deny, des caractères génériques et des remplacements par agent |
| Sandbox au niveau du système d’exploitation | nanocoder.sandbox, désactivé par défaut : sandbox-exec sur macOS, bwrap sur Linux, non pris en charge sur Windows. La documentation précise explicitement qu’il ne s’agit pas d’une frontière pour les secrets — les lectures ne sont pas bloquées | Non proposé comme indicateur dans la documentation des autorisations ; doom_loop et external_directory prennent par défaut la valeur ask et les lectures de .env sont refusées |
| Sans interface | nanocoder run "..." accepte automatiquement et se termine ; --plain --json émet un objet JSON contenant la réponse, le journal des outils et les fichiers modifiés. La limite de tours nanocoder.maxTurns est de 200 par défaut, et NANOCODER_MAX_TURNS permet de la remplacer | opencode run "..." est l’équivalent non interactif documenté, avec --format json pour une sortie lisible par machine — des événements JSON bruts plutôt qu’un objet récapitulatif unique. Les surfaces serveur, SDK, GitHub et GitLab sont documentées à ses côtés |
| Extensions | Les skills comme enveloppe unique pour les commandes, les sous-agents, les outils et les déclencheurs, ainsi que les hooks de cycle de vie et MCP | Sous-systèmes distincts : plugins, skills d’agent, serveurs LSP, serveurs MCP, ACP |
| Produits payants propriétaires | Aucun. Ni compte, ni offre, ni passerelle | Zen (paiement à l’usage), Go (10 $ par mois), Enterprise (par siège, prix non publié) |
Sources de ce tableau, toutes consultées le 19 septembre 2026 sauf indication contraire : l’API GitHub, le registre npm, les documentations de configuration et de fonctionnalités de Nanocoder, ainsi que les pages configuration, autorisations et CLI d’OpenCode.
Diriger l’un ou l’autre vers votre propre point de terminaison d’API
Les deux documentent un point de terminaison personnalisé ; une passerelle est donc une configuration prise en charge dans les deux cas. La différence réside dans le nombre de formats filaires accessibles.
OpenCode nomme un package npm dans le bloc du fournisseur, et ce choix sélectionne le protocole : @ai-sdk/openai-compatible utilise /v1/chat/completions, tandis que @ai-sdk/openai utilise /v1/responses. Kunavo fournit les deux, il s’agit donc d’un véritable choix et non d’une formalité.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"kunavo": {
"npm": "@ai-sdk/openai-compatible",
"name": "Kunavo",
"options": {
"baseURL": "https://api.kunavo.com/v1",
"apiKey": "{env:KUNAVO_API_KEY}"
},
"models": {
"claude-sonnet-4-6": {
"name": "Claude Sonnet 4.6",
"limit": { "context": 200000, "output": 64000 }
}
}
}
}
}Deux détails explicitement indiqués sur la page des fournisseurs et importants pour tout point de terminaison qu’il ne connaît pas déjà. Premièrement, enregistrez la clé avec /connect, faites défiler jusqu’à Other et utilisez le même identifiant de fournisseur que celui du fichier ; les identifiants sont enregistrés dans ~/.local/share/opencode/auth.json. Deuxièmement, le bloc limit mérite d’être défini ici — la documentation indique que les fournisseurs standard récupèrent automatiquement les limites de contexte et de sortie depuis models.dev, et que Kunavo n’en fait pas partie. Les valeurs du bloc ci-dessus sont les chiffres de l’exemple fourni par la documentation, et non les limites publiées de ce modèle ; définissez-les à partir de la propre page du modèle avant de vous fier à l’indicateur de contexte.
L’équivalent de Nanocoder se trouve sous nanocoder.providers. Notez le baseUrl en minuscules, qui diffère du baseURL d’OpenCode, ainsi que la substitution ${VAR} appliquée récursivement aux champs de type chaîne.
{
"nanocoder": {
"providers": [
{
"name": "Kunavo",
"sdkProvider": "openai-compatible",
"baseUrl": "https://api.kunavo.com/v1",
"apiKey": "${KUNAVO_API_KEY}",
"models": ["claude-sonnet-4-6"],
"contextWindow": 200000
}
]
}
}Trois pièges propres à Nanocoder méritent d’être lus avant de coller ce bloc. L’union sdkProvider est limitée à cinq valeurs dans source/types/config.ts — openai-compatible, google, anthropic, chatgpt-codex et github-copilot — et la quatrième est reliée à une connexion via navigateur au point de terminaison Codex propre à ChatGPT, plutôt qu’à une URL de base arbitraire ; il n’existe donc aucune option Responses générique à déclarer. Si vous dirigez plutôt sdkProvider: "anthropic" vers un point de terminaison compatible avec Anthropic, la propre documentation des fournisseurs de Nanocoder avertit que @ai-sdk/anthropic déduit la limite de sortie de l’identifiant du modèle et revient à 4096 tokens pour tout ce qu’il ne reconnaît pas comme un modèle Claude, tronquant les longues réponses en plein milieu d’une phrase sans erreur ; la solution consiste à définir explicitement maxOutputTokens dans l’entrée du fournisseur. Et comme les paramètres sont résolus bloc par bloc, un fichier au niveau du projet qui définit nanocoder.providers fournit l’intégralité de ce bloc — les entrées sœurs de votre configuration globale ne sont pas fusionnées. nanocoder config diff est la méthode documentée pour voir ce qui a effectivement été résolu.
Aucun des deux extraits n’a été testé à l’exécution avec le point de terminaison de Kunavo. Kunavo publie un guide de configuration pour OpenCode, qui constitue une référence de configuration plutôt qu’un test de compatibilité, et n’en publie aucun pour Nanocoder. Considérez les deux blocs comme des points de départ, exécutez une tâche limitée et consultez ce que votre compte a effectivement enregistré.
Une lacune commune : aucun des deux clients ne connaît les métadonnées des modèles de votre passerelle
Les deux clients s’appuient sur models.dev pour les limites de contexte, les plafonds de sortie et le coût par token. Ce fichier répertoriait 222 fournisseurs lors de sa vérification le 19 septembre 2026, et Kunavo n’en faisait pas partie — cette page ne peut pas établir la raison de cette absence. La conséquence diffère légèrement selon le client, mais s’applique également aux deux ; ce n’est donc pas une raison de préférer l’un à l’autre.
Dans OpenCode, déclarez limit.context et limit.output pour chaque modèle, sinon l’indicateur de contexte restant établit son budget à partir d’une valeur par défaut qui n’est pas celle de votre modèle. Dans Nanocoder, définissez contextWindow ou contextWindows par modèle ; son pied de réponse affiche un nombre de tokens et un coût estimé calculé à partir de models.dev, et sa documentation précise que le segment de coût est omis lorsqu’aucun tarif n’est disponible : un nombre manquant signifie donc inconnu, et non zéro. Dans tous les cas, le chiffre du client correspond à son propre calcul sur les tokens déclarés — rapprochez-le du relevé de votre fournisseur, et non du pied de page.
Ce que chacun vous coûte
Les deux clients sont gratuits. L’asymétrie réside dans ce qui se trouve derrière eux.
Nanocoder n’a ni compte, ni offre, ni service hébergé, ni formule supérieure — son README indique qu’aucune offre payante ne bloque les fonctionnalités utiles, et le projet se décrit comme financé par des sponsors plutôt que par les utilisateurs. Une précision s’impose ici : Atlas Cloud figure parmi les sponsors, apparaît également dans la propre liste de fournisseurs pris en charge par Nanocoder et vend une formule de codage. Il s’agit d’un intérêt non neutre dans un projet par ailleurs indépendant de tout fournisseur, et vous devez le savoir.
OpenCode est également gratuit, mais le même fournisseur vend deux produits qui se disputent exactement les dépenses qu’une passerelle cherche à capter. Aucun des deux n’est obligatoire : la documentation les décrit comme facultatifs, et la page des objectifs de Zen s’engage à vous laisser utiliser n’importe quel autre fournisseur avec OpenCode.
| Produit | Prix publié | Ce que vous devez réellement prévoir au budget |
|---|---|---|
| Nanocoder | 0 $, MIT | Les tokens du modèle auprès du fournisseur que vous configurez, ou le matériel et l’électricité pour les modèles locaux |
| OpenCode | 0 $, MIT | Même chose — le client lui-même ne facture rien |
| OpenCode Go | 10 $ par mois | La gamme fixe que la documentation appelle les modèles de codage ouverts ne se limite pas aux modèles à poids ouverts — Grok 4.6 et GPT 5.6 Luna y figurent. Chaque modèle comporte un plafond mensuel de 15 $ à 60 $, avec un plafond sur cinq heures égal à 20 % de ce plafond mensuel et un plafond hebdomadaire égal à 50 %. Un seul membre par espace de travail peut s’abonner |
| OpenCode Zen | Paiement à l’usage, par 1M de tokens | Claude Opus 5 à 5.00 $ en entrée / 25.00 $ en sortie ; Claude Sonnet 5 à 2.00 $ / 10.00 $ ; Claude Haiku 4.5 à 1.00 $ / 5.00 $. Le rechargement automatique ajoute 20 $ lorsque le solde passe sous 5 $ |
| OpenCode Enterprise | Par siège, aucun montant publié | SSO, configuration à l’échelle de l’organisation et obligation de faire transiter le trafic par une seule passerelle interne. La page précise que si vous disposez de votre propre passerelle, les tokens ne sont pas facturés |
Consulté le 19 septembre 2026. Deux points auxquels ce tableau prête attention. La page des objectifs de Zen indique l’intention de répercuter les baisses de prix en vendant au prix coûtant, avec une majoration limitée aux frais de traitement. Les trois tarifs Claude qu’il publie correspondent bien aux tarifs publiés par Anthropic pour ces modèles — Opus 5 à 5 $ / 25 $, Sonnet 5 à 2 $ / 10 $, Haiku 4.5 à 1 $ / 5 $ — ; pour ces trois modèles, comparer Zen revient donc à comparer la grille tarifaire du fournisseur du modèle. Cette vérification n’a été effectuée que pour ces trois modèles, le 19 septembre 2026, et ne dit rien du reste de la gamme de Zen. Par ailleurs, les modèles gratuits de Zen comportent des mentions d’utilisation des données affichées sur la même page, allant de l’utilisation des données pour améliorer le modèle pendant une période gratuite à des points de terminaison réservés aux essais qui vous demandent de ne pas envoyer de données confidentielles. Une offre gratuite assortie de droits d’entraînement est un produit différent d’une offre gratuite qui n’en comporte pas.
Une estimation détaillée de la facture de tokens sous-jacente à l’un ou l’autre client
Il s’agit d’un calcul illustratif de tokens, et non du coût mesuré d’une tâche ni d’un plafond de facturation. Supposons une session qui envoie 200,000 tokens d’entrée non mis en cache et reçoit 15,000 tokens de sortie. Les tarifs proviennent du catalogue Kunavo actuel, par million de tokens ; vos sessions réelles varieront selon la taille du dépôt, la sortie des outils et la fréquence à laquelle l’agent relit les fichiers.
| Modèle | Entrée / sortie par million | Coût estimé, une session | Sessions modélisées par tranche de 10 $ de crédit |
|---|---|---|---|
| Claude Haiku 4.5 | $0.70 / $3.50 | $0.192 | 51 |
| GPT-5.6 Terra | $0.70 / $4.20 | $0.203 | 49 |
| Claude Sonnet 4.6 | $2.10 / $10.50 | $0.578 | 17 |
| Claude Opus 5 | $3.50 / $17.50 | $0.963 | 10 |
La comparaison que les utilisateurs veulent réellement ici est celle avec les 10 $ mensuels d’OpenCode Go, et elle n’est pas strictement équivalente. Go propose une gamme fixe assortie de plafonds mensuels de 15 $ à 60 $ par modèle : son propre tableau des limites d’utilisation ne répertorie aucun modèle Claude ni Gemini, son unique entrée GPT est GPT 5.6 Luna, et Grok 4.6 y figure également — l’expression « modèles de codage ouverts » de la documentation ne signifie donc pas uniquement des poids ouverts (vérifié le 19 septembre 2026). Les modèles ci-dessus appartiennent à une gamme entièrement différente. Selon ces hypothèses, 10 $ de crédit prépayé Kunavo correspondent approximativement à 51 sessions de ce type sur Claude Haiku 4.5 à $0.192 chacune, et à environ 10 sur Claude Opus 5. Cela dimensionne un budget ; cela ne vous indique pas lequel produit le meilleur travail sur votre dépôt, et le tarif affiché le plus bas ne répond pas à la même question que le coût minimal pour terminer la tâche — un modèle moins cher qui nécessite trois tentatives peut coûter plus cher qu’un modèle qui n’en nécessite qu’une.
La comparaison strictement équivalente est celle avec la gamme de paiement à l’usage de Zen, où le même modèle apparaît des deux côtés. Zen publie Claude Opus 5 à 5.00 $ par million de tokens d’entrée et 25.00 $ par million de tokens de sortie ; le catalogue de Kunavo affiche actuellement $3.50 et $17.50 pour ce même modèle. C’est la comparaison qui mérite d’être faite, et elle mérite d’être lue attentivement : les 5.00 $ / 25.00 $ de Zen correspondent au tarif publié par Anthropic pour ce modèle ; il s’agit donc de deux catalogues tarifant différemment le même modèle, et non d’un revendeur gonflant ses prix puis se faisant dépasser. Confirmez les deux tarifs au moment du paiement avant de déplacer un budget, car l’un ou l’autre catalogue peut modifier ses prix.
Le montant du catalogue Kunavo constitue un plancher de facturation plutôt qu’un plafond : lorsque le fournisseur amont signale son coût, la facture correspond au montant le plus élevé entre le coût du catalogue et le coût amont multiplié par la majoration applicable. Les frais de cache et les outils externes ne sont pas inclus dans cet exemple. Le rechargement minimal est de $10 de crédit prépayé, ce qui constitue un minimum de financement, et non des frais de tâche ou un abonnement.
Configurer celui que vous avez choisi
Si vous avez choisi OpenCode, le bloc de configuration ci-dessus constitue l’intégralité de l’intégration et le guide d’intégration OpenCode couvre les deux formats filaires en détail ; créez un compte Kunavo lorsque vous êtes prêt à approvisionner une clé. Si vous avez choisi Nanocoder, utilisez la même URL de base via son fournisseur openai-compatible et gardez une route fonctionnelle disponible pendant vos essais — aucun test d’exécution Nanocoder-Kunavo n’a été effectué ici.
Vous hésitez encore ? Les alternatives à OpenCode élargissent le champ au-delà de ces deux options, la meilleure API pour OpenCode compare les routes de fournisseurs spécifiquement pour ce client, les tarifs d’OpenCode approfondissent Zen et Go, et l’annuaire des API d’agents indique comment chaque client de cet espace gère une URL de base personnalisée. Si un bloc de fournisseur échoue déjà, Fournisseur OpenCode introuvable couvre la cause habituelle, et API compatible OpenAI explique ce que cette expression garantit ou non.
Questions fréquentes
Nanocoder ou OpenCode : lequel est le meilleur ?
Aucun n’est intrinsèquement meilleur, et ils ne sont pas adoptés dans les mêmes proportions. OpenCode est le choix dominant : 208 444 étoiles GitHub et 9 436 914 téléchargements npm pour opencode-ai au cours des 30 jours précédant le 16 septembre 2026, contre 2 487 étoiles et 6 614 téléchargements pour @nanocollective/nanocoder sur la même période. Choisissez OpenCode si vous voulez une surface plus large — TUI, application de bureau, extension IDE, serveur, plugins, intégrations GitHub et GitLab, et système de configuration conçu pour un contrôle à l’échelle de l’organisation. Choisissez Nanocoder si les modèles locaux sont votre choix par défaut plutôt qu’une solution de secours, si vous voulez un bac à sable système autour des commandes shell, ou si vous préférez que le mainteneur de votre agent ne vous vende pas également des jetons. Les chiffres de téléchargement sont gonflés par la CI et par les canaux d’installation parallèles ; considérez-les donc comme des ordres de grandeur, et non comme un nombre d’utilisateurs.
Nanocoder est-il le même projet que nanocode ?
Non, et les confondre compromettra votre configuration. Nanocoder est Nano-Collective/nanocoder, publié sur npm sous le nom @nanocollective/nanocoder et documenté sur docs.nanocollective.org. nanocode est nanocode-project/nanocode, un projet Python distinct et presque inactif, créé le 1er avril 2026, dont le dernier push date du lendemain. Leurs commandes d’installation, fichiers de configuration et paramètres d’URL de base sont mutuellement incompatibles, et la compatibilité OpenAI annoncée par nanocode n’existe pas dans son code : il encapsule le SDK Anthropic, si bien qu’un point de terminaison chat-completions standard ne fonctionnera pas avec lui.
De quel OpenCode s’agit-il — celui en Go ou celui en TypeScript ?
Celui en TypeScript. Le dépôt qui se trouvait auparavant à l’adresse sst/opencode redirige désormais avec un code 301 vers anomalyco/opencode, et l’organisation GitHub sst est vide, avec un avis indiquant qu’elle a été déplacée vers anomalyco. Le nom du produit reste OpenCode ; la documentation sur opencode.ai utilise les chemins d’installation d’anomalyco et comporte un pied de page indiquant le copyright Anomaly. Un autre projet, opencode-ai/opencode, est une CLI Go archivée dont le dernier push date du 18 septembre 2025 et dont le README redirige les utilisateurs vers Crush. Son format de configuration et sa liste de fournisseurs ne s’appliquent pas à l’OpenCode actuel.
Nanocoder et OpenCode peuvent-ils tous deux utiliser une passerelle API tierce ?
Oui, les deux documentent un point de terminaison personnalisé, mais la surface de protocole accessible diffère. OpenCode choisit le format filaire en nommant un paquet npm dans le bloc du fournisseur : @ai-sdk/openai-compatible pour /v1/chat/completions, @ai-sdk/openai pour /v1/responses, selon sa documentation des fournisseurs. L’union sdkProvider de Nanocoder est limitée à cinq valeurs dans source/types/config.ts — openai-compatible, google, anthropic, chatgpt-codex et github-copilot — et chatgpt-codex est lié à une connexion de navigateur vers le point de terminaison Codex propre à ChatGPT, plutôt qu’à une URL de base arbitraire ; il n’existe donc pas d’option Responses générique. Une passerelle qui fournit /v1/responses doit être jointe via son interface chat-completions dans Nanocoder.
OpenCode vous oblige-t-il à acheter OpenCode Zen ou OpenCode Go ?
Non. La documentation propre d’OpenCode décrit Zen et Go comme facultatifs, et la page des objectifs de Zen s’engage à vous laisser utiliser n’importe quel autre fournisseur avec OpenCode. Le verrou commercial est OpenCode Enterprise, facturé par poste sans montant publié ; il contrôle la gestion centralisée — SSO, configuration à l’échelle de l’organisation, obligation de faire transiter le trafic par une passerelle interne — plutôt que la possibilité de configurer un point de terminaison personnalisé. La page des objectifs de Zen indique également l’intention de répercuter les baisses de prix en vendant au prix coûtant, avec une majoration limitée à la couverture des frais de traitement ; les trois tarifs Claude qu’elle publie correspondent aux tarifs publiés par Anthropic pour ces modèles, vérifiés le 19 septembre 2026.
Pourquoi mon modèle n’affiche-t-il aucun coût ou une limite de contexte incorrecte dans l’un ou l’autre client ?
Parce que les deux clients lisent les métadonnées des modèles depuis models.dev, dont api.json listait 222 fournisseurs lors de la vérification du 19 septembre 2026 et qui n’inclut pas Kunavo. Dans OpenCode, vous déclarez manuellement models.<id>.limit.context et .limit.output, car la documentation précise que seuls les fournisseurs standard récupèrent automatiquement ces valeurs depuis models.dev ; si vous les omettez, le client calcule le contexte restant à partir d’une valeur par défaut qui n’est pas celle de votre modèle. Dans Nanocoder, vous définissez contextWindow ou des contextWindows par modèle, et le pied de page du coût par réponse n’affiche simplement rien lorsqu’aucun tarif n’est disponible ; sa documentation précise qu’un nombre manquant signifie « inconnu », jamais zéro.
Combien coûte le passage de l’un à l’autre ?
Le bloc du fournisseur est la partie facile ; les instructions de l’agent et les extensions ne le sont pas. Les deux acceptent une configuration JSON avec une URL de base, une clé et une liste de modèles ; redéclarer une passerelle prend donc dix minutes dans un sens comme dans l’autre. Ce qui ne se transpose pas, c’est tout ce qui est construit par-dessus : les bundles Skills de Nanocoder sous .nanocoder/skills/ et ses hooks de cycle de vie n’ont aucun équivalent OpenCode dans lequel être copiés, tandis que les règles d’autorisation par outil, les définitions d’agents, les plugins et la configuration LSP d’OpenCode n’ont aucun équivalent dans Nanocoder. Évaluez la migration selon la quantité de ces éléments que vous avez écrits, et non selon le bloc du fournisseur.
Les chiffres relatifs au dépôt, aux versions et aux téléchargements ont été relevés dans l’API GitHub et le registre npm le 19 septembre 2026 ; les affirmations concernant le comportement et les tarifs proviennent de la documentation des deux projets consultée à la même date, tout comme la liste des fournisseurs de models.dev. Aucun des deux clients n’a été testé à l’exécution avec le point de terminaison de Kunavo, aucun test de performance ou de compatibilité n’a été effectué, et chaque montant en dollars indiqué pour Kunavo sur cette page correspond à un calcul illustratif de tokens fondé sur le catalogue actuel, et non au coût mesuré d’une tâche.