DwarfStar (ds4): DeepSeek V4 Flash in locale con API OpenAI, Claude e Codex

Salvatore Sanfilippo — per chiunque scriva codice, semplicemente antirez — è il programmatore siciliano che nel 2009 creò Redis, uno dei database più usati al mondo. L'ha guidato per undici anni come maintainer, poi nel 2020 ha lasciato per dedicarsi ad altri progetti (è tornato brevemente in Redis come evangelist a fine 2024). Il 7 maggio 2026 ha pubblicato su GitHub ds4 (DwarfStar), ed è probabilmente il progetto più rilevante per chi fa vibe coding in locale uscito quest'anno.
Cos'è ds4
ds4 è un motore di inferenza nativo scritto in C, ottimizzato per un modello specifico: DeepSeek V4 Flash (284 miliardi di parametri totali, 13 miliardi attivi, architettura Mixture-of-Experts), con supporto per la versione PRO (1.6T totali, ~49B attivi) su macchine con RAM elevata. Non è un wrapper generico per GGUF, non è un'alternativa a Ollama: è un engine costruito da zero per far girare un modello frontier nel modo più efficiente possibile su hardware consumer.
Tre backend: Apple Metal (target primario), NVIDIA CUDA (incluso DGX Spark), AMD ROCm (Framework Desktop e simili). Il target di RAM minimo è 96 GB, ma con SSD streaming scende a 64 GB.
Perché è rilevante per chi fa vibe coding
1. Server HTTP con API OpenAI, Anthropic e Codex compatibili
Puoi puntarci direttamente Codex CLI, OpenCode (OpenAI-compatibili) e Claude Code (endpoint Anthropic Messages) come provider locale. Gli endpoint supportati:
/v1/chat/completions— OpenAI standard/v1/responses— endpoint preferito da Codex CLI (Responses API)/v1/messages— compatibile Anthropic (Claude Code)
Tool calling nativo in formato DSML, riconvertito in JSON OpenAI/Anthropic. SSE streaming su tutti gli endpoint. CORS per client browser. In pratica: avvii il server sul Mac e hai un endpoint API locale che parla con un modello quasi-frontier, zero costi, zero invio di codice a server esterni.
2. Coding agent nativo
ds4 include ds4-agent, un agente di coding integrato direttamente nell'engine, senza socket/API intermedi. Lo stato della sessione è salvato su disco come KV cache. Vantaggi: latenza minima (nessun overhead di rete), tool calling nativo nel formato del modello, switch istantaneo tra sessioni salvate, resume senza rifare prefill.
L'agente è in alpha — lo dice esplicitamente il README — ma la direzione è chiara: un agente verticalmente integrato con il modello, non un wrapper generico.
3. Prestazioni su hardware consumer
I numeri che seguono sono dal README ufficiale: benchmark Metal con contesto 32768, --nothink, greedy decoding e 256 token generati. "Prompt corto" = qualche frase; altrimenti è indicata la lunghezza in token.
- M3 Max 128 GB (q2), prompt corto: 58,5 t/s prefill · 26,7 t/s generazione
- M3 Max 128 GB (q2), prompt 11.7k token: 250,1 t/s prefill · 21,5 t/s generazione
- M5 Max 128 GB (q2), prompt corto: 87,3 t/s prefill · 34,3 t/s generazione
- M5 Max 128 GB (q2), prompt 11.7k token: 463,4 t/s prefill · 25,9 t/s generazione
- M3 Ultra 512 GB (q4), prompt corto: 79,0 t/s prefill · 35,5 t/s generazione
- DGX Spark GB10 128 GB (q2), prompt 7k token: 343,8 t/s prefill · 13,8 t/s generazione
Nel suo blog, antirez riporta numeri ancora più alti per M5 Max: ~500 t/s in prefill e 35–40 t/s in decoding con Flash q2. Su M3 Ultra 512 GB con PRO q2: ~150 t/s prefill, 10–13 t/s decoding — "non eccezionale ma utilizzabile per certi casi d'uso".
La chiave è la quantizzazione asimmetrica: solo gli esperti routed MoE vengono quantizzati (up/gate a IQ2_XXS, down a Q2_K). Shared experts, proiezioni e routing restano a piena precisione. Il risultato è un modello da 81 GB (q2) o 220 GB (q4) che mantiene qualità molto vicina all'originale. antirez è esplicito: "le quantizzazioni a 2 bit non sono uno scherzo, funzionano bene, chiamano tool in modo affidabile".
4. SSD streaming per modelli più grandi della RAM
Se il modello non entra nella RAM GPU, ds4 può tenere in cache in RAM solo gli esperti routed usati più di frequente e caricare il resto dall'SSD on demand. Su MacBook da 64 GB permette di eseguire la quantizzazione q2 del Flash (81 GB). Su 128 GB permette di eseguire il modello PRO in streaming, anche se con generazione lenta. L'idea di fondo — esplicitata nel README — è che gli SSD veloci dei Mac moderni cambiano il paradigma: la KV cache e gli esperti possono vivere su disco, e la RAM passa da "cutoff rigido" a "spettro continuo di velocità".
5. Inferenza distribuita su più Mac
Due MacBook M5 Max da 128 GB collegati via Thunderbolt 5 possono eseguire insieme la quantizzazione Q4 del Flash (ognuno mappa metà dei layer). La prefill accelera (fino a 1.85x su prompt da 63K token grazie al pipelining), la generazione è più lenta del single-process (da 30,59 a 24,67 t/s, -19%). Due Mac Studio M3 Ultra da 512 GB possono eseguire il modello PRO completo a 4 bit. Nel suo blog, antirez esplora anche approcci più avanzati come l'expert parallelism via Apple RDMA e gli ensemble di modelli diversi.
Chi è il target
ds4 non è per tutti. Il README lo dice senza giri: "If you are not happy with AI-developed code, this software is not for you" — il progetto è stato costruito con forte assistenza di GPT 5.5. antirez lo dichiara apertamente, con la stessa trasparenza con cui riconosce il debito verso llama.cpp e GGML ("this project would not exist without llama.cpp").
Il target è chi ha un Mac con almeno 96 GB di RAM (o 64 GB disposto a usare SSD streaming), vuole eseguire un modello quasi-frontier in locale, e apprezza l'approccio "una scommessa stretta": un modello alla volta, validazione ufficiale dei logit, test a contesti lunghi, integrazione agent. Il modello supportato può cambiare in futuro — se esce un open weight migliore per la classe 128 GB, ds4 potrebbe switchare.
Limitazioni e caveat
- Beta quality. Il README è onesto: "il codice e i GGUF sono da considerarsi di qualità beta. Ci vorranno mesi per raggiungere una forma più stabile."
- L'agente è alpha.
- Modello singolo. Non è un loader generico: funziona solo con i GGUF preparati per ds4. Se cambi idea sul modello, cambi engine.
- Hardware specifico. Serve un Mac con Apple Silicon e 64+ GB di RAM, o una GPU CUDA/ROCm equivalente. Non è per il laptop da 16 GB.
- Sviluppo assistito da IA. antirez lo dichiara, ma per alcuni questo è un deterrente. Per la community del vibe coding è piuttosto una conferma che lo strumento funziona.
- Nessuna encryption/autenticazione nel protocollo distribuito. TCP in chiaro, va usato solo su reti fidate.
Dettagli che fanno la differenza
Directional steering. Una feature da laboratorio ma molto "antirez": ds4 permette di controllare il comportamento del modello a runtime manipolando le attivazioni interne, senza fine-tuning. Funziona con vettori di direzione 43×4096 float32: applichi una modifica dopo l'output dei FFN (--dir-steering-ffn) o dell'attention. Esempio pratico: controllo della verbosità — scala negativa per risposte concise, positiva per risposte dettagliate. Non è un fine-tune, è un edit low-rank a runtime.
La filosofia nel codice. Il file AGENT.md nella repo contiene le regole per gli agenti AI che lavorano al progetto. Ne esce il ritratto di come antirez scrive software: "Try to write elegant code in a state of grace. Don't settle for the first thing that comes to mind. Don't introduce slop. Do not introduce C++. Keep the implementation small, sharp, easy to understand." È la stessa disciplina che ha reso Redis quello che è, applicata all'inferenza.
Disciplina ingegneristica. Il file QA_BEFORE_RELEASES.md elenca le macchine di test per nome (due M5 Max, un DGX Spark, un Framework Desktop Strix Halo), i comandi esatti per verificare ogni backend prima di un rilascio, e richiede il confronto delle performance contro i "last known good numbers". C'è un test di long-context fact recall, test di qualità per il tool calling, e un quality scorer che confronta le continuazioni del modello locale contro i logit ufficiali DeepSeek.
DeepSeek V4 Flash sotto il cofano. Dal MODEL_CARD.md: 43 layer, finestra sliding di 128 token, attenzione compressa ibrida (CSA + HCA), indexer a 64 teste. Esiste anche una variante Flash-Max che, con thinking budget più ampio, può avvicinarsi alle performance di PRO. I benchmark ufficiali in modalità High: 88,4% LiveCodeBench, 78,6% SWE Verified Resolved, 85,1% IMOAnswerBench; in modalità Max il Flash sale rispettivamente a 91,6%, 79,0% e 88,4%.
Come provarlo
Clona e compila: git clone https://github.com/antirez/ds4, poi cd ds4, scarica il modello con ./download_model.sh q2-imatrix (81 GB, per Mac 96/128 GB), compila con make (macOS Metal) ed esegui ad esempio ./ds4 -p "Scrivi una funzione Python per il calcolo dei numeri primi".
Per il server (come provider locale per Codex, OpenCode e Claude Code) basta ./ds4-server --ctx 100000: Codex e OpenCode usano http://localhost:8080/v1, mentre Claude Code punta all'endpoint Anthropic Messages.
Il progetto ha 14.9K stelle, 1.3K fork, 332 commit e una community attiva (70 issue aperte, 138 PR). Non male per un progetto partito il 7 maggio.
Fonti: GitHub antirez/ds4, HuggingFace antirez/deepseek-v4-gguf, blog antirez — Distributed inference in DwarfStar, X @antirez — annuncio lancio.
Avete già provato a usare ds4 come provider locale per Codex, OpenCode o Claude Code? O state usando altre soluzioni per l'inferenza locale di modelli grandi?
📌 Questo articolo riassume una discussione su r/vibecodingitalia. Leggi il post originale.

Scritto da
Michael Gasperini@TheStreamCode
Founder & Sviluppatore
Founder di Vibecoding Italia, la community italiana sull'intelligenza artificiale. Progetta e sviluppa prodotti con l'AI e ne racconta l'applicazione pratica attraverso guide e articoli.

