temps de lecture : 22 minutes

On me demande souvent combien coûte ma consommation d’IA. Je réponds « 20 balles par mois » et on me regarde avec des yeux ronds. Alors aujourd’hui, je vous ouvre la boîte noire. Cet article est l’audit complet de mes 73 jours de vibe coding : la méthodologie pour extraire les données depuis la base SQLite d’OpenCode, le code SQL pour interroger les tables, et la comparaison exhaustive avec tous les fournisseurs du marché — occidentaux comme chinois. Le résultat est tellement asymétrique que j’ai dû vérifier mes calculs trois fois.

1. Comprendre la Stack : Qui Fait Quoi ?

Avant de plonger dans les chiffres, clarifions l’architecture. Il y a trois acteurs distincts dans mon setup, et c’est important de ne pas les confondre :

stack architecture

OpenCode n’est PAS un fournisseur de modèles. C’est un CLI open source (github.com/anomalyco/opencode) qui orchestre des agents IA. Il ne vend pas d’abonnement, il ne fournit pas d’inférence. C’est l’équivalent de git pour le versionnement : un outil, pas un service.

Ollama Cloud est le fournisseur d’inférence. Mon installation locale d’Ollama agit comme client — elle s’authentifie auprès des serveurs d’Ollama via une clé SSH unique (Device Key) et leur délègue l’exécution des modèles tagués :cloud. L’abonnement Pro (20€/mois) débloque des quotas supérieurs et permet de cumuler plusieurs comptes sur une même machine via Docker.

2. Introduction : Pourquoi un Audit ?

Il y a deux mois, j’utilisais des modèles gratuitement sur mon installation locale d’Ollama. Puis j’ai souscrit un premier abonnement Ollama Cloud Pro à 20€/mois, qui me permet d’utiliser les modèles cloud (ceux avec le tag :cloud) via le provider ollama-cloud. Un deuxième abonnement a suivi un mois plus tard, sur une instance Docker séparée avec son propre compte et sa propre clé SSH — la méthode de cumul décrite dans mon article sur le cumul d’abonnements.

La question qui me taraudait : est-ce que ces 20€ par mois sont justifiés ? Pas au doigt mouillé. Avec des chiffres.

Pour répondre, j’avais besoin de données précises. Pas des estimations. Pas des moyennes. Ma consommation réelle, token par token, modèle par modèle, session par session.

Et OpenCode — le CLI — stocke tout ça dans une base SQLite.

3. La Base de Données OpenCode : Une Mine d’Or

OpenCode persiste l’intégralité de l’historique de ses sessions dans un fichier SQLite situé à ~/.local/share/opencode/opencode.db. La mienne pèse 660 Mo pour 73 jours d’utilisation — une base de données de production tout à fait respectable.

$ ls -lh ~/.local/share/opencode/opencode.db
-rw-r--r-- 1 cheroliv cheroliv 660M mai 18 12:25 opencode.db

3.1. Le Schéma

La base contient une vingtaine de tables, mais trois d’entre elles sont cruciales pour notre audit :

schema principal

La table session est parfaite pour un audit global : chaque session a son décompte de tokens agrégé, son modèle utilisé, et son coût. Le champ model est du JSON brut :

{
  "id": "deepseek-v4-pro:cloud",
  "providerID": "ollama-cloud",
  "variant": "default"
}

Le champ cost dans la base OpenCode ne reflète que les frais d’API externes payés à la consommation via API key (Google Gemini, OpenAI, etc.). Les appels via Ollama — que ce soit en local ou via Ollama Cloud Pro — sont marqués cost=0 parce que le coût est forfaitaire (abonnement), pas per-token. Le vrai coût de ces appels, c’est l’abonnement mensuel.

3.2. Le Code d’Extraction

Pas besoin d’installer quoi que ce soit. Node.js 22+ intègre un module SQLite expérimental (node:sqlite) qui fonctionne parfaitement. Voici le script qui m’a tout donné :

const { DatabaseSync } = require('node:sqlite');
const db = new DatabaseSync(
  `${process.env.HOME}/.local/share/opencode/opencode.db`,
  { readonly: true }
);

// 1. Statistiques globales
const global = db.prepare(`
  SELECT
    COUNT(*) as sessions,
    SUM(tokens_input) as total_input,
    SUM(tokens_output) as total_output,
    SUM(tokens_reasoning) as total_reasoning,
    SUM(tokens_cache_read) as total_cache_read,
    SUM(cost) as total_cost
  FROM session
`).get();

// 2. Ventilation par modèle et fournisseur
const byModel = db.prepare(`
  SELECT
    json_extract(model, '$.id') as model_id,
    json_extract(model, '$.providerID') as provider,
    COUNT(*) as sessions,
    SUM(tokens_input) as total_input,
    SUM(tokens_output) as total_output,
    SUM(cost) as total_cost
  FROM session
  WHERE model IS NOT NULL
  GROUP BY model_id, provider
  ORDER BY SUM(tokens_input) DESC
`).all();

// 3. Par mois
const monthly = db.prepare(`
  SELECT
    strftime('%Y-%m', datetime(time_created/1000, 'unixepoch')) as month,
    COUNT(*) as sessions,
    SUM(tokens_input) as total_input,
    SUM(tokens_output) as total_output,
    SUM(cost) as total_cost
  FROM session
  WHERE time_created IS NOT NULL
  GROUP BY month
  ORDER BY month
`).all();

// 4. Messages par modèle (détection des changements intra-session)
const msgByModel = db.prepare(`
  SELECT
    json_extract(m.data, '$.model.providerID') as provider,
    json_extract(m.data, '$.model.modelID') as model_id,
    COUNT(*) as messages
  FROM message m
  WHERE json_extract(m.data, '$.model') IS NOT NULL
  GROUP BY provider, model_id
  ORDER BY COUNT(*) DESC
`).all();

console.log({ global, byModel, monthly, msgByModel });
db.close();

Le flag --experimental-sqlite est nécessaire sur Node.js 22.x. Sur Node.js 24+, le module est stable et ne nécessite plus de flag.

4. Les Résultats : 73 Jours de Consommation

4.1. Vue Globale

Métrique Valeur Contexte

Sessions OpenCode

1 022

~14 sessions/jour en moyenne

Tokens Input

2,62 milliards

Dont 94,5M en cache hit

Tokens Output

21 millions

Ratio input/output ~125:1

Tokens Reasoning

141 000

Négligeable — quasi pas de thinking

Coût API externe

\$0,22

Frais hors abonnement (Gemini + free tiers)

Ce chiffre de \$0,22 est crucial : il représente tout ce que j’ai payé en plus de mon abonnement Ollama Cloud Pro. C’est-à-dire quasiment rien. L’abonnement couvre l’essentiel.

repartition mensuelle

Le décollage entre mars et avril est spectaculaire : ×35 en un mois. C’est la transition de l’usage « test » à l’usage « production » — quand j’ai commencé à faire tourner des agents OpenCode en continu pour mes plugins Gradle.

4.2. Ventilation par Modèle et Fournisseur

Le champ model de la table session étant du JSON, json_extract() permet de ventiler proprement :

Modèle × Provider Sessions Input Output Coût

deepseek-v4-pro @ ollama-cloud

63

220 M

1,94 M

\$0

deepseek-v4-pro @ ollama-b

124

463 M

4,15 M

\$0

deepseek-v4-pro @ ollama

100

252 M

2,25 M

\$0

deepseek-v4-flash-free @ opencode

16

1,3 M

279 K

\$0

qwen3.6-plus-free @ opencode

1

369 K

25 K

\$0

gemini-2.5-flash @ google

1

211 K

19 K

\$0,04

Trois providers différents pour exactement le même modèle DeepSeek V4 Pro :

  • ollama-cloud → via abonnement Pro payant (cloud managé par Ollama)

  • ollama-bdeuxième abonnement Pro, isolé dans un conteneur Docker distinct

  • ollama → instance native locale, gratuite (tourne directement sur ma machine)

La somme des trois donne 936M input, 8,4M output — c’est ma conso totale DeepSeek V4 Pro, tous providers confondus. Seul ollama-cloud (220M input) coûte un abonnement. Les 716M restants sont gratuits (local ou cumul d’abonnements).

4.3. Les Modèles Intra-Session : Ce Que la Table Session Ne Voit Pas

La table session ne capture que le modèle principal de la session. Mais pendant une même session, un agent OpenCode peut basculer entre plusieurs modèles. La table message le révèle :

Modèles utilisés dans les messages (ollama-cloud provider) :
├─ deepseek-v4-pro      1 441 msgs  (32%)
├─ qwen3.5:397b         1 217 msgs  (27%)
├─ glm-5.1                712 msgs  (16%)
├─ kimi-k2.6:cloud        634 msgs  (14%)
├─ qwen3-coder:480b       414 msgs   (9%)
├─ gpt-oss:20b             34 msgs  (0,8%)
├─ qwen3-coder-next        27 msgs  (0,6%)
└─ gemma4:31b               7 msgs  (0,2%)

Je n’utilise plus Qwen, GLM, Kimi ni les autres modèles. Ils apparaissent dans l’historique parce que j’ai testé pas mal de choses en avril. Depuis mi-mai, je suis verrouillé sur DeepSeek V4 Pro — c’est le seul qui tient la charge sur du long contexte avec gouvernance agent (cf. ma comparaison Kimi/GLM/DeepSeek). Les 32% de messages deepseek dans l’historique sont trompeurs : aujourd’hui c’est 100%.

5. Comparatif Tarifaire — Fournisseurs Occidentaux

La question qui fâche : combien coûterait cette même consommation chez les fournisseurs traditionnels ?

Ma base de calcul pour le comparatif : 220M tokens input + 1,9M tokens outputuniquement le volume passé par ollama-cloud (le seul qui correspond à mon abonnement payant). Les 716M restants sont gratuits (Ollama local et instance Docker B).

Fournisseur Modèle Input \$/M Output \$/M Coût/mois × mon abonnement

Mon setup

DeepSeek V4 Pro

0

0

\~20€

5.1. Anthropic — Claude

Modèle Input \$/M Output \$/M Coût/mois × mon abonnement

Opus 4.7

\$5

\$25

\$1 148

57×

Sonnet 4.6

\$3

\$15

\$689

34×

Haiku 4.5

\$1

\$5

\$230

11×

Même Haiku 4.5, le modèle le plus « économique » de Claude, coûte 11× mon abonnement. Et il ne connaît rien de mon codebase, ne génère pas dans mon style, et hallucine sur les APIs Gradle Kotlin DSL.

5.2. OpenAI — GPT

Modèle Input \$/M Output \$/M Coût/mois × mon abonnement

GPT 5.5

\$5

\$30

\$1 157

58×

GPT 5.4

\$2,50

\$15

\$579

29×

GPT 5.4 Mini

\$0,75

\$4,50

\$174

5.3. Google — Gemini

Modèle Input \$/M Output \$/M Coût/mois × mon abonnement

Gemini 3.1 Pro

\$2,00

\$10

\$459

23×

Gemini 3 Flash

\$0,30

\$1,50

\$69

3,5×

Gemini 3 Flash à 69€ est le seul concurrent « proche » en prix pur — mais c’est un modèle dense léger, pas un MoE 1.6T comme DeepSeek V4 Pro. La qualité du code généré n’a rien à voir.

5.4. HuggingFace Inference Providers

HuggingFace ne fait pas d’inférence lui-même — il agrège des providers tiers (Novita, Together, DeepInfra, Cerebras, SambaNova, Fireworks, Groq…) via une API unifiée. On choisit le provider le moins cher ou le plus rapide. Voici les tarifs relevés en mai 2026 pour DeepSeek V4 Pro :

Provider HF Input \$/M Output \$/M Coût/mois × mon abonnement

Novita (le moins cher)

\$1,67

\$3,38

\$374

19×

DeepInfra

\$1,74

\$3,48

\$389

19×

Together

\$2,10

\$4,40

\$470

23×

Fireworks

tarif non public

Même le provider le moins cher sur HuggingFace (Novita) facture 19× le prix de mon abonnement. Et contrairement à Ollama Cloud, HuggingFace facture en plus les frais de plateforme si vous n’avez pas d’abonnement PRO HF (\$9/mois).

5.5. Groq

Groq n’a aucun des modèles que j’utilise — leur catalogue se limite à GPT-OSS, Llama et Qwen 32B. Impossible de comparer.

6. Comparatif Tarifaire — Fournisseurs Chinois

Le vrai test, c’est le marché chinois. Si DeepSeek est un modèle chinois, son API native devrait être moins chère, non ?

6.1. DeepSeek API Direct (platform.deepseek.com)

Période Input \$/M Output \$/M Coût/mois

Promo -75% (fin 31 mai)

\$0,435

\$0,87

\$98

Plein tarif (à partir de juin)

\$1,74

\$3,48

\$390

Même avec la promo agressive de DeepSeek (-75% prolongée), l’API directe coûte plus cher. Au tarif normal, 20×. Et c’est uniquement DeepSeek — pas d’accès à d’autres modèles.

6.2. Kimi Moonshot (platform.kimi.com)

Kimi ne propose que ses propres modèles. Pas de DeepSeek.

6.3. Alibaba Bailian (bailian.aliyun.com)

Seul fournisseur qui agrège tous les modèles chinois — mais via revente avec marge. Les prix sont chargés dynamiquement en JavaScript, rendant le scraping impossible.

7. Tableau Récapitulatif — Tous Providers

Fournisseur Modèle Input \$/M Output \$/M Coût/mois × mon abonnement

Ollama Cloud Pro

DeepSeek V4 Pro

0

0

~20€

Gemini 3 Flash

Gemini 3 Flash

\$0,30

\$1,50

\$69

3,5×

DeepSeek API (promo)

DeepSeek V4 Pro

\$0,44

\$0,87

\$98

GPT 5.4 Mini

GPT 5.4 Mini

\$0,75

\$4,50

\$174

Claude Haiku 4.5

Claude Haiku 4.5

\$1

\$5

\$230

11×

HuggingFace/Novita

DeepSeek V4 Pro

\$1,67

\$3,38

\$374

19×

DeepSeek API (normal)

DeepSeek V4 Pro

\$1,74

\$3,48

\$390

20×

Together AI

DeepSeek V4 Pro

\$2,10

\$4,40

\$470

23×

GPT 5.4

GPT 5.4

\$2,50

\$15

\$579

29×

Claude Sonnet 4.6

Claude Sonnet 4.6

\$3

\$15

\$689

34×

Claude Opus 4.7

Claude Opus 4.7

\$5

\$25

\$1 148

57×

GPT 5.5

GPT 5.5

\$5

\$30

\$1 157

58×

cout comparaison barres

8. Le Coût Caché : Prompt Engineering et Itérations

Le coût token n’est qu’une partie de l’équation. Le vrai coût, c’est le temps développeur.

Avec OpenCode + Ollama Cloud Pro + ma gouvernance agent (EAGER/LAZY/Hot/Warm/Cold, décrite dans l’article sur la gouvernance), j’obtiens : * 0 prompt engineering répétitif : le contexte est injecté automatiquement * 90%+ first-shot correct : le code compile du premier coup * Zéro hallucination deepseek sur 8 sessions consécutives (documenté dans la comparaison Kimi/GLM/DeepSeek)

Avec Claude ou GPT sans fine-tune ni gouvernance : * 2-3 itérations par tâche en moyenne * Prompt engineering systématique * Hallucinations sur les APIs Kotlin/Gradle dès que le contexte dépasse 30K tokens

Le coût « effectif » mensuel — tokens × itérations × temps de correction — est de 27× à 54× celui de ma solution, comme je l’ai démontré dans l’article sur le ratio d’efficacité.

Ce n’est pas juste une histoire de prix au token. Un Claude Opus à 57× le prix qui nécessite 3× plus d’itérations, c’est un coût effectif ~170× supérieur. Pour le dire crûment : payer un stagiaire le salaire d’un partner McKinsey.

9. Cumuler les Abonnements Ollama Cloud Pro : La Méthode Docker

Si un seul abonnement ne suffit pas, on en cumule. Le principe est d’isoler chaque abonnement dans sa propre installation Ollama, avec sa propre clé SSH d’authentification. Docker rend ça trivial.

La méthode complète est détaillée dans l’article sur le cumul Docker, voici le principe :

architecture dual abonnement

Le pattern est simple : . Créer un volume ~/ollama-b-data . Lancer un conteneur Docker ollama/ollama:0.20.2 mappé sur 11435:11434 . Récupérer la clé SSH du conteneur → l’enregistrer sur ollama.com . Faire ollama signin avec un deuxième email . Configurer OpenCode avec deux providers (ollama sur :11434, ollama-b sur :11435)

Deux comptes, une carte bleue, zéro conflit.

10. Ce Que l’Audit Ne Mesure Pas

Angle mort Impact

Qualité du code produit

2,6 milliards de tokens ne disent pas si le code compile. Mes 8 sessions DeepSeek V4 Pro ont un taux de first-shot >90%.

Écosystème OpenCode

Le CLI est gratuit, mais sa valeur (agents, sandboxes, historique, prompt caching) est immense. Il n’est pas inclus dans le prix de l’abonnement — c’est un outil séparé.

Coût d’opportunité

Passer 2h/jour à debugger des hallucinations d’un modèle inférieur coûte plus cher que 20€/mois.

Tranquillité d’esprit

Forfait fixe = pas de surprise. Avec du per-token, un pic d’activité peut faire très mal.

Les prix cités sont ceux de mai 2026. Dans six mois, tout aura baissé. Mais le rapport de force structurel — abonnement fixe vs paiement à l’usage — restera favorable à l’abonnement pour les gros consommateurs.

11. Conclusion : Le Verdict des Chiffres

Après 73 jours, 1 022 sessions OpenCode, et 2,6 milliards de tokens :

Métrique Verdict

Coût API externe cumulé

\$0,22 (quasi nul)

Coût abonnement Ollama Cloud Pro

~20€/mois

Équivalent Claude Opus

\$1 148/mois — 57× plus cher

Équivalent GPT 5.5

\$1 157/mois — 58× plus cher

Équivalent HuggingFace/Novita

\$374/mois — 19× plus cher

Équivalent DeepSeek API direct

\$390/mois — 20× plus cher

Équivalent le moins cher (Gemini Flash)

\$69/mois — 3,5× plus cher, modèle inférieur

Meilleure offre du marché

Ollama Cloud Pro à 20€/mois — imbattable

À 20€ par mois pour accéder à DeepSeek V4 Pro (1.6T params, MoE, CSA+HCA, 1M contexte) via Ollama Cloud, j’ai le meilleur rapport qualité/prix du marché mondial. Même les fournisseurs chinois en direct sont 5× à 20× plus chers. Même HuggingFace, avec son agrégation de providers low-cost, est 19× plus cher. Le marché occidental (Claude, GPT) est à 50-60× — une autre planète.

Ce ratio est tellement déséquilibré qu’il ne peut pas durer éternellement. Profitez-en tant que ça existe.

Alors oui, mes 20 balles par mois, c’est le meilleur investissement technique de ma vie de développeur. Et maintenant vous avez les chiffres pour le prouver.



Articles connexes