¶ Muffin · case study
Un agente AI personale che osserva una persona nel tempo e ne costruisce la comprensione, sul mio hardware. Non accelera la to-do list. Aiuta a vedere i punti ciechi. I modelli sono commodity. Il vero moat è il dataset. Una traiettoria di osservazione coerente che non si replica in due settimane.
Il mio agente, e un esempio concreto di cosa costruisco su misura per i clienti.
Perché non è un chatbot
- Non è un assistente di produttività. Ottimizza come ricordo e ragiono, non la mia task list.
- Non è un companion. Ha un punto di vista e mi corregge invece di compiacermi.
- Non è un SaaS. Niente account, niente cloud. Gira sul mio hardware e i dati non escono.
«Il moat non è il dato grezzo. È la continuità e la correzione. “Lavora su X” si replica in due conversazioni. “A novembre era bloccato, a gennaio ha risolto, a marzo ha virato su Y” no. Richiede tempo vissuto insieme.»
L’architettura, in breve
- Strumenti. Agire, con zone di permesso calibrate sul rischio. Verso terzi, sempre in bozza prima.
- Memoria. Continuità nel tempo. Substrato immutabile, derivati rigenerabili.
- Contesto. Retrieval ibrido, semantico + keyword + grafo, con decay temporale.
- Pianificazione. Risveglio mirato sullo stato, non un cron. Gate meccanici fuori dal modello.
- Verifica. Confidence esplicita, belief revision, ricalibrazione notturna.
- Modularità. Substrato (sacro) vs harness (sostituibile).
Come funziona la memoria
La memoria è a layer. Si va dal substrato grezzo, gli episodi immutabili e mai cancellati, fino a un profilo rigenerato ogni notte. Ogni layer derivato è ricostruibile da zero. Il grezzo non cambia mai.
Le garanzie stanno a livello di schema. Con la bi-temporalità ogni fatto sa quando è diventato vero e quando il sistema l’ha appreso, e puoi chiedere «cosa sapevi di me a gennaio?». Con la provenance ogni claim è ancorato agli episodi che l’hanno prodotto. E ogni claim porta una confidence esplicita. Quando non sa, lo sa.
Di notte un ciclo separato consolida. Rivede le contraddizioni, rigenera il profilo da zero così non va in drift, e produce un counterpoint che cerca dove mi legge male. Un osservatore che corregge invece di confermare. Le fasi pesanti girano su un modello più capace, perché di notte la latenza non conta.
Lo stack
Quale modello gira è di proposito sostituibile. I modelli sono commodity, lo schema dei dati no. Il substrato è sacro, l’harness si butta. Gira tutto in locale. Un file SQLite con vector e full-text tiene l’intera memoria, zero dipendenze esterne, su una macchina che controllo io.
- Substrato
- SQLite + sqlite-vec + FTS5 · un file
- Inferenza
- Local-first · embedder on-device · model-agnostic
- Consolidamento
- Ciclo notturno · modello più capace
- Contesti
- Privato e gruppo, isolati a livello di schema
- Linguaggio
- TypeScript, Node 22
Cosa significa per il tuo prodotto
Quello che ho risolto su Muffin si trasferisce sul lavoro cliente.
Memoria bi-temporale, con provenance. Sistemi di conoscenza che reggono nel tempo e si lasciano correggere senza perdere la storia.
Gate meccanici fuori dal modello. AI proattiva che non diventa rumore. Il modello vede tutto, ma quando agisce lo decidono le regole, non lui.
Confidence esplicita e belief revision. Sistemi che sanno quando non sanno. Niente confabulazione, per struttura.
Contesti isolati a livello di schema. Privacy che il codice non può violare per sbaglio. La separazione è nel database. Per settori sensibili come studi legali, commercialisti o sanità, dove il dato non deve mai mescolarsi.
Onestà
Muffin non è autonomo. Osserva, propone, agisce in modo stretto, e scrive in memoria solo su conferma. Ha mesi di dati, non anni. Il moat è la traiettoria, non un traguardo. Un audit di aprile 2026 ha trovato lo scarto tra la tesi dichiarata e il sistema reale, e l’ho chiuso. Un sistema longitudinale resta onesto solo se lo verifichi, non basta progettarlo bene una volta.
Architettura e filosofia, per intero, nei docs pubblici. Leggi i docs Muffin ↗
Vuoi un sistema con questa serietà nel tuo prodotto? Parliamone.