La memoria che si organizza da sola
Un albero di astrazioni, non un mucchio di vettori.
Collega il tuo assistente una volta: da lì ricorda fatti, preferenze e decisioni tra una sessione e l'altra — e li ritrova anche quando la risposta sta in un fatto collegato, non in quello che somiglia alla domanda.
La serranda 4 di Sesto è bloccata da marzo.
Il contatore dell'acqua è il TZ-8841-QR.
Il fornitore delle guarnizioni è Bianchi.
Una risposta vera, non un elenco di pezzi: ogni fatto porta tutt'e due le date, quindi quello che ha sostituito è ancora lì e si può ancora chiedere.
Funziona col modello che già paghi
- Claude
- OpenAI
- Gemini
- NVIDIA NIM
- Ollama
- LangChain
Più qualunque endpoint compatibile OpenAI — vLLM, LM Studio, un gateway tuo. Il modello è una stringa in un campo di configurazione, e niente nel codice cambia a seconda di quale sia.
Le parti
Una forma, non un elenco
Ogni ramo è il medoide di quello che ci sta sotto — un figlio reale, mai un punto medio inventato. La profondità si scopre, non si configura.
Due orologi, non uno
Quando era vero, e quando fractal l'ha saputo — tenuti separati, così una decisione di gennaio si giudica su quello che a gennaio si poteva sapere.
Grafo di entità, sempre attivo
Due fatti che nominano la stessa persona o progetto sono collegati da soli. «Che linguaggio conviene per il progetto X» trova la risposta anche se la preferenza è scritta sotto il nome di chi lo guida.
Una memoria ciascuno
Ogni agente ha il suo albero, non uno spazio di nomi — risolto dalla chiave API, così un errore di programmazione non può farlo leggere in quello di un altro.
Chi ha detto cosa a chi
Ogni chiamata fra agenti finisce sul filo mentre passa, rifiuti compresi. Quello che il servizio ha visto non si mescola con quello che gli è stato raccontato. Non porta mai il contenuto.
Meno tool, apposta
Sei gruppi da concedere per agente. Misurato sulla porta MCP vera: il 41% del listino via, ~2.200 token risparmiati a ogni chiamata.
Tre porte, una memoria
Non tre prodotti con tre modelli di permessi — tre modi di entrare, così una regola che vale su uno vale su tutti. Scegli quella che il tuo stack già parla.
Claude Desktop, Claude Code
Un comando avvia il server MCP su stdio.
$ npx github:emanuelediluzio/fractal
Qualunque client MCP, in rete
StreamableHTTP. La chiave è l'identità e il permesso.
$ claude mcp add fractal \
--transport http $HOST/mcp \
--header "Authorization: Bearer fr_…"
Tutto ciò che parla HTTP
Si descrive da sé: il documento è ricavato dai tool vivi, non può divergere.
$ curl -H "Authorization: Bearer fr_…" \
$HOST/api/openapi.json
Tutte e tre passano dallo stesso livello di permessi. La porta MCP è guidata dal client SDK ufficiale in check:mcp; check:api pretende che le rotte OpenAPI generate siano identiche a quelle che quel client vede — una regola che valeva su una porta e non sull'altra qui è già successa.
Perché è diverso
| fractal | memoria vettoriale piatta | |
|---|---|---|
| Struttura | Gerarchica, profondità variabile | Lista piatta, tutto allo stesso livello |
| Ricerca | Beam search O(log N) + BM25 ibrido | Coseno su tutto l'insieme |
| Tempo | Grafo temporale — contraddizione ≠ duplicato | Nessuna nozione di validità |
| Collegamenti | Grafo di entità automatico, multi-hop | Nessuno, solo somiglianza testuale |
| Correzione | Storia preservata, niente si perde | Sovrascrittura o duplicati silenziosi |
| Deploy | Self-hosted, MCP nativo | Quasi sempre solo cloud |
Misurato, non raccontato
npm run verify -- --tutto e contali tu.Iniziare
Crea un account, copia la configurazione che ti diamo dentro il tuo client MCP, e il tuo assistente inizia a ricordare. Le tue memorie restano tue: isolate, esportabili, cancellabili.