tempo di lettura : 22 minutes

Mi viene spesso chiesto quanto costa il mio consumo di IA. Rispondo « 20 balles par mois » e mi guardano con gli occhi sgranati. Allora oggi ti apro la scatola nera. Questo articolo è l’audit completo dei miei 73 giorni di vibe coding: la metodologia per estrarre i dati dal database SQLite di OpenCode, il codice SQL per interrogare le tabelle e il confronto esaustivo con tous i fornitori del mercato — occidentali e cinesi. Il risultato è così asimmetrico che ho dovuto verificare i miei calcoli tre volte.

Comprendere lo Stack: Chi fa cosa?

Prima di immergersi nei numeri, chiarifichiamo l’architettura. Ci sono tre attori distinti nel mio setup, ed è importante non confonderli:

@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultFontSize 12

title Les Trois Acteurs de Ma Stack LLM

left to right direction

actor "Moi (Développeur)" as Dev

package "OpenCode\n(github.com/anomalyco/opencode)" as OC {
  rectangle "CLI de vibe coding\nOpen source, gratuit" as CLI
  note right of CLI
    C'est l'outil que j'utilise
    pour coder avec des agents IA.
    Il ne fournit AUCUN modèle.
    C'est un terminal + un orchestrateur.
  end note
}

package "Ollama (Installation Locale)" as OL {
  rectangle "Client d'inférence\nInstallé sur ma machine" as Client
  note right of Client
    C'est le logiciel qui fait tourner
    les modèles. Il peut les exécuter
    en local OU les déléguer au cloud
    selon le tag (:cloud).
    Il s'authentifie via clé SSH.
  end note
}

package "Ollama Cloud\n(ollama.com)" as OCloud {
  rectangle "Service d'inférence cloud\nAbonnement Pro : 20€/mois" as Cloud
  note right of Cloud
    C'est le fournisseur d'inférence.
    Mes modèles avec le tag :cloud
    sont exécutés sur LEURS serveurs.
    L'abonnement Pro donne accès
    à des quotas supérieurs.
  end note
}

Dev --> CLI : "Je tape des prompts"
CLI --> Client : "Appelle ce modèle"
Client --> Cloud : "Clé SSH + requête\n(modèles :cloud)"
Client --> Client : "Exécution locale\n(modèles sans :cloud)"

@enduml

OpenCode non è un fornitore di modelli.È un CLI open source (github.com/anomalyco/opencode) che orchestra agenti IA. Non vende abbonamenti, non fornisce inferenza. È l’equivalente di`git`per il versionamento: uno strumento, non un servizio Ollama Cloud è il fornitore d’inferenza.La mia installazione locale di Ollama agisce come client — si autentica presso i server di Ollama tramite una chiave SSH unica (Device Key) e delega loro l’esecuzione dei modelli taggati.:cloud. L’abbonamento Pro (20€/mese) sblocca quote superiori e consente di accumulare più account su una stessa macchina tramite Docker.

Introduzione : Perché un audit ?

Due mesi fa, utilizzavo i modelli gratuitamente sulla mia installazione locale di Ollama. Poi ho sottoscritto un primo abbonamento Ollama Cloud Pro a 20€ al mese, che mi permette di utilizzare i modelli cloud (quelli con il tag`:cloud`) via il provider`ollama-cloud`. Un secondo abbonamento è seguito un mese più tardi, su un’istanza Docker separata con il proprio account e la propria chiave SSH — il metodo di cumulo descritto in il mio articolo sul cumulo degli abbonamenti

sono giustificati questi 20€ al mese ? Non a caso. Con dei numeri.

Per rispondere, avevo bisogno di dati precisi. Non delle stime. Non delle medie. Il mio consumo reale, token per token, modello per modello, sessione per sessione.

E OpenCode — la CLI — lo memorizza in un database SQLite.

Il Database OpenCode : Una Miniera d’Oro

OpenCode persiste l’intero storico delle sue sessioni in un file SQLite situato a`~/.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

Lo schema

Il database contiene circa una ventina di tabelle, ma tre di esse sono cruciali per il nostro audit :

@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultFontSize 12

title Schéma Simplifié — OpenCode SQLite

entity "session" as S {
  * id : TEXT
  --
  * model : TEXT (JSON)
  * cost : REAL
  * tokens_input : INTEGER
  * tokens_output : INTEGER
  * tokens_reasoning : INTEGER
  * tokens_cache_read : INTEGER
  * tokens_cache_write : INTEGER
  * time_created : INTEGER
  * project_id : TEXT
}

entity "message" as M {
  * id : TEXT
  --
  * session_id : TEXT <<FK>>
  * data : TEXT (JSON)
  * time_created : INTEGER
}

entity "project" as P {
  * id : TEXT
  --
  * worktree : TEXT
  * name : TEXT
}

S ||--o{ M : "session_id"
S }o--|| P : "project_id"

note right of S
  La table session agrège
  tokens + coût + modèle.
  C'est notre point d'entrée
  principal.
end note

note right of M
  Les messages individuels.
  Le champ data contient
  le modèle utilisé (format JSON)
  même si la session change
  de modèle en cours de route.
end note

@enduml

Il tavolo`session`è perfetta per un audit globale : ogni sessione ha il suo conteggio aggregato di token, il modello utilizzato, e il suo costo. Il campo`model`è del JSON grezzo :

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

Il campo`cost`nel database OpenCode riflette solo le spese API esterne pagate a consumo tramite API key (Google Gemini, OpenAI, ecc.). Le chiamate tramite Ollama — sia in locale che tramite Ollama Cloud Pro — sono marcate`cost=0`perché il costo è forfettario (abbonamento), non per-token. Il vero costo di queste chiamate è l’abbonamento mensile.

Il Codice di Estrazione

Non è necessario installare nulla. Node.js 22+ incorpora un modulo SQLite sperimentale (node:sqlite) che funziona perfettamente. Ecco lo script che mi ha dato tutto :

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();

Il flag`--experimental-sqlite`è necessario su Node.js 22.x. Con Node.js 24+, il modulo è stabile e non richiede più il flag.

I risultati: 73 giorni di consumo

Vista globale

Metrica Valore Contesto

Sessioni OpenCode

1 022

~14 sessioni/giorno in media

Input dei token

2,62 miliardi

di cui 94,5M hit nella cache

Questo valore di $0,22 è cruciale: rappresenta tutto ciò che ho pagato in più rispetto al mio abbonamento Ollama Cloud Pro. Cioè praticamente niente. L’abbonamento copre l’essenziale.

@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultFontSize 12

title Évolution Mensuelle — Tokens Input

rectangle "Mars 2026\n9 sessions\n37,7M tokens" as MARS #FFE082
rectangle "Avril 2026\n486 sessions\n1,33 Md tokens" as AVR #81C784
rectangle "Mai 2026\n527 sessions\n1,25 Md tokens" as MAI #64B5F6

MARS -right-> AVR : ×35
AVR -right-> MAI : stable (période en cours)

note bottom of MAI
  Mai comptabilisé jusqu'au 18.
  Projection mois complet : ~2,1 Md tokens
  si la tendance se maintient.
end note
@enduml

Il decollo tra marzo e aprile è spettacolare: ×35 in un mese. È la transizione dall’uso « test » all’uso « production » — quando ho iniziato a far girare continuamente gli agenti OpenCode per i miei plugin Gradle.

Ventilazione per modello e fornitore

Il campo`model`del tavolo`session`essendo JSON`json_extract()`permette di ventilare correttamente:

Modello × Provider Sessioni input Output Costo

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

Tre provider diversi per esattamente lo stesso modello DeepSeek V4 Pro : * ollama-cloud→ via abbonamento Pro a pagamento (cloud gestito da Ollama) * ollama-b→ secondo abbonamento Pro, isolato in un contenitore Docker distinto * ollama→ istanza locale nativa, gratuita (funziona direttamente sulla mia macchina) La somma dei tre dà 936M input, 8,4M output — è il mio consumo totale DeepSeek V4 Pro, tutti i provider sommati. Solo`ollama-cloud`(220M input) costa un abbonamento. I rimanenti 716M sono gratuiti (locale o accumulo di abbonamenti).

I Modelli Intra-Sessione : Ciò che la tabella Session non vede

Il tavolo`session`cattura solo il modello principale della sessione. Ma durante la stessa sessione, un agente OpenCode può passare tra diversi modelli. La tabella`message`lo rivela :

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%)

Non utilizzo più Qwen, GLM, Kimi né gli altri modelli. Appaiono nella cronologia perché ho testato parecchie cose ad aprile. Da metà maggio, sono bloccato su DeepSeek V4 Pro — è l’unico che regge il carico su contesti lunghi con governance agent (cf. il mio confronto Kimi/GLM/DeepSeek). Il 32% dei messaggi deepseek nella cronologia è fuorviante: oggi è il 100%.

Comparativo Tariffario — Fornitori Occidentali

La domanda spinosa: quanto costerebbe questo stesso consumo presso i fornitori tradizionali?

La mia base di calcolo per il confronto :220M token di input + 1,9M token di output— solo il volume passato per`ollama-cloud`(l’unico che corrisponde al mio abbonamento a pagamento). I restanti 716M sono gratuiti (Ollama locale e istanza Docker B)

Fornitore modello \$/M Output \$/M Costo/mese × il mio abbonamento

Il mio setup

DeepSeek V4 Pro

0

0

\~20€

1×

Anthropic — Claude

Modello $/M Uscita $/M costo/mese × il mio abbonamento

Opus 4.7

\$5

\$25

\$1 148

57×

sonetto 4.6

\$3

\$15

\$689

34×

Haiku 4.5

\$1

\$5

\$230

11×

Anche Haiku 4.5, il modello più « economico » di Claude, costa 11 volte il mio abbonamento. E non conosce nulla del mio codebase, non genera nel mio stile e allucina sulle API Gradle Kotlin DSL.

OpenAI — GPT

Modello $/M Uscita \$/M Costo/mese × il mio abbonamento

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

9×

Google — Gemini

Modello $/M Uscita \$/M Costo/mese × il mio abbonamento

Gemini 3.1 Pro

\$2,00

\$10

\$459

23×

Gemini 3 Flash

\$0,30

\$1,50

\$69

3,5×

Gemini 3 Flash a 69€ è l’unico concorrente « vicino » in termini puri di prezzo — ma è un modello denso leggero, non un MoE 1.6T come DeepSeek V4 Pro. La qualità del codice generato non ha nulla a che vedere.

HuggingFace Inference Providers

HuggingFace non esegue inferenza da sé stesso — aggrega provider terzi (Novita, Together, DeepInfra, Cerebras, SambaNova, Fireworks, Groq…) tramite un’API unificata. Si sceglie il provider più economico o più veloce. Ecco le tariffe rilevate a maggio 2026 per DeepSeek V4 Pro :

Fornitore HF $/M $/M Costo/mese × il mio abbonamento

Novità (il più economico)

\$1,67

\$3,38

\$374

19×

DeepInfra

\$1,74

\$3,48

$389

19×

Insieme

\$2,10

\$4,40

\$470

23×

fuochi d’artificio

tariffa non pubblica

—

—

—

Anche il provider più economico su HuggingFace (Novita) addebita 19× il prezzo del mio abbonamento. E diversamente da Ollama Cloud, HuggingFace addebita in più i costi di piattaforma se non hai un abbonamento PRO HF ($9/mese).

Groq

Groq non ha nessuno dei modelli che uso — il loro catalogo si limita a GPT-OSS, Llama e Qwen 32B. Impossibile da confrontare.

Confronto tariffario — Fornitori cinesi

Il vero test è il mercato cinese. Se DeepSeek è un modello cinese, la sua API nativa dovrebbe essere più economica, no?

API diretta di DeepSeek (platform.deepseek.com)

Periodo $/M Uscita $/M Costo/mese

Promo -75% (fine 31 maggio)

\$0,435

\$0,87

\$98

Tariffa intera (a partire da giugno)

\$1,74

\$3,48

$390

Anche con la promozione aggressiva di DeepSeek (-75% prolungata), l’API diretta costa5×più costoso. Alla tariffa normale,20×. E è uniquement DeepSeek — nessun accesso ad altri modelli.

Kimi Moonshot (platform.kimi.com)

Kimi propone solo i suoi modelli. Niente DeepSeek.

Alibaba Bailian (bailian.aliyun.com)

L’unico fornitore che aggrega tutti i modelli cinesi — ma tramite rivendita con margine. I prezzi sono caricati dinamicamente tramite JavaScript, rendendo lo scraping impossibile.

Tabella Riepilogativa — Tutti Provider

Fornitore Modello \$/M Uscita \$/M Costo/mese × il mio abbonamento

Ollama Cloud Pro

DeepSeek V4 Pro

0

0

~20€

1×

Gemini 3 Flash

Gemini 3 Flash

\$0,30

\$1,50

\$69

3,5×

DeepSeek API (promo)

DeepSeek V4 Pro

\$0,44

\$0,87

\$98

5×

GPT 5.4 Mini

GPT 5.4 Mini

\$0,75

\$4,50

\$174

9×

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×

@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultFontSize 11

title Costo Mensile Previsto — 220M Input + 1,9M Output
rectangle "Ollama Cloud Pro\n~20€" as OC #4CAF50
rectangle "Gemini Flash\n\$69" as GF #8BC34A
rectangle "DeepSeek promo\n\$98" as DSP #FFC107
rectangle "GPT Mini\n\$174" as GM #FF9800
rectangle "Claude Haiku\n\$230" as CH #FF5722
rectangle "HF/Novita\n\$374" as HF #F44336
rectangle "DeepSeek normale\n\$390" as DSN #F44336
rectangle "GPT 5.4\n\$579" as G4 #D32F2F
rectangle "Claude Sonnet\n\$689" as CS #D32F2F
rectangle "Claude Opus\n\$1 148" as CO #B71C1C
rectangle "GPT 5.5\n\$1 157" as G5 #880E4F

note bottom of OC
DeepSeek V4 Pro 1.6T MoE
+ accesso a tutto il catalogo
Ollama Cloud (Qwen, GLM, Kimi...)
Incluso nell'abbonamento
end note
@enduml

Il Costo Nascosto : Prompt Engineering e Iterazioni

Il costo token è solo una parte dell’equazione. Il vero costo è il tempo dello sviluppatore.

Con OpenCode + Ollama Cloud Pro + il mio agente di governance (EAGER/LAZY/Hot/Warm/Cold, descritto in l’articolo sulla governance), ottengo:

  • 0 prompt engineering ripetitivo: il contesto viene iniettato automaticamente

  • oltre il 90% di precisione al primo colpo: il codice compila al primo colpo

  • Zero allucinazioni deepseek su 8 sessioni consecutive(documentato in la comparazione Kimi/GLM/DeepSeek)

Con Claude o GPT senza fine-tune né governance :

  • 2-3 iterazioni per attività in media

  • Ingegneria del prompt sistematica

  • Allucinazioni sulle API Kotlin/Gradle non appena il contesto supera i 30K token

Il costo « effettivo » mensile — token × iterazioni × tempo di correzione — è da 27× a 54× quello della mia soluzione, come ho dimostrato in l’articolo sul rapporto di efficienza.

_ Non è solo una questione di prezzo per token. Un Claude Opus al prezzo 57× che richiede 3× più iterazioni ha un costo effettivo ~170× superiore. Per dirla brutalmente: pagare uno stagista lo stipendio di un partner McKinsey. _

Cumulare gli abbonamenti Ollama Cloud Pro: Il metodo Docker

Se un solo abbonamento non basta, li accumuliamo. Il principio consiste nell’isolare ogni abbonamento nella propria installazione Ollama, con la propria chiave SSH di autenticazione. Docker lo rende banale.

Il metodo completo è dettagliato in l’articolo sul cumulo Docker, ecco il principio :

@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultFontSize 12

title Architettura — Due Abbonamenti Ollama Cloud Pro su Una Macchina
left to right direction

node "La Mia Macchina Fisica" {
  frame "Istanza Ollama A (nativa)\nporta :11434" as Native {
    database "Identità A\n/usr/share/ollama/.ollama/id_ed25519"
  }
  frame "Istanza Ollama B (Docker)\nporta :11435" as Docker {
    database "Identità B\n~/ollama-b-data/id_ed25519"
  }
}

cloud "Ollama Cloud" {
  actor "Account Pro A\n(email 1)" as A
  actor "Account Pro B\n(email 2)" as B
}

Native --> A : "Chiave Dispositivo A"
Docker --> B : "Chiave Dispositivo B"

note bottom of Docker
Container Docker isolato:
- Chiave SSH distinta
- Porta di rete distinta (11435)
- Volume persistente (`~/ollama-b-data`)
- `restart: always
end note
@enduml

Il pattern è semplice :

  1. Creare un volume`~/ollama-b-data`

  2. Avvia un contenitore Docker`ollama/ollama:0.20.2`mappato su`11435:11434`

  3. Recuperare la chiave SSH del contenitore → salvarlo su ollama.com

  4. fare`ollama signin`con una seconda email

  5. Configurare OpenCode con due provider (`ollama`su :11434,`ollama-b`su :11435)

Due conti, una carta blu, zero conflitto.

Ciò che l’audit non misura

angolo cieco impatto

Qualità del codice prodotto

2,6 miliardi di token non dicono se il codice compila. Le mie 8 sessioni DeepSeek V4 Pro hanno un tasso di first-shot >90%.

Ecosistema OpenCode

La CLI è gratuita, ma il suo valore (agenti, sandbox, cronologia, caching dei prompt) è enorme. Non è incluso nel prezzo dell’abbonamento — è uno strumento separato.

Costo opportunità

Passare 2h/giorno a fare il debug delle allucinazioni di un modello inferiore costa più di 20€/mese.

Tranquillità d’animo

Forfait fisso = nessuna sorpresa. Con il pagamento per-token, un pic di attività può far molto male.

I prezzi citati sono quelli di maggio 2026. Tra sei mesi, tutto sarà diminuito. Ma il rapporto di forza strutturale — abbonamento fisso vs pagamento a consumo — rimarrà favorevole all’abbonamento per i grandi consumatori.

Conclusion : Il verdetto dei numeri

Dopo 73 giorni, 1 022 sessioni OpenCode, e 2,6 miliardi di token:

Metrica Verdetto

Costo API esterno cumulativo

$0,22(quasi nullo)

Costo abbonamento Ollama Cloud Pro

~20€/mese

Equivalente Claude Opus

\$1 148/mese— 57× più caro

Equivalente GPT 5.5

$1 157/mese— 58× più caro

Equivalente HuggingFace/Novita

$374/mese— 19× più caro

Equivalente diretto dell’API DeepSeek

\$390/mese— 20× più caro

Equivalente più economico (Gemini Flash)

$69/al mese— 3,5× più caro, modello inferiore

Migliore offerta del mercato

Ollama Cloud Pro a 20€/mese— imbattibile

__ A 20€ al mese per accedere a DeepSeek V4 Pro (1,6T param, MoE, CSA+HCA, 1M di contesto) tramite Ollama Cloud, ho il miglior rapporto qualità/prezzo del mercato mondiale. Anche i fornitori cinesi diretti sono 5× a 20× più costosi. Anche HuggingFace, con la sua aggregazione di provider low-cost, è 19× più caro. Il mercato occidentale (Claude, GPT) è a 50-60× — un altro pianeta.

Questo rapporto è così squilibrato che non può durare per sempre. Approfitta finché esiste. __

Allora sì, i miei 20 euro al mese sono l’investimento tecnico migliore della mia vita di sviluppatore. E ora hai i numeri per provarlo.


Articoli correlati