Un assistente AI che non invia dati all’esterno e lavora interamente sulla macchina su cui viene eseguito.

Ci sono dati che non dovrebbero mai lasciare il luogo in cui nascono.
Gli schemi di un impianto. Le procedure di manutenzione. Le anomalie di un macchinario che nessun concorrente dovrebbe mai vedere.
Eppure, oggi, quando vogliamo chiedere a un’intelligenza artificiale di leggerli, interpretarli o interrogarli, il riflesso quasi automatico è aprire un browser e portarli nel cloud.
Mi sono chiesto se fosse davvero necessario far uscire quei dati.
Da questa domanda nasce LOCUS: un assistente AI completamente locale, offline per progettazione e non per limite tecnico, pensato per contesti in cui dati e documenti devono restare all’interno della propria infrastruttura, per motivi di sicurezza, privacy o proprietà intellettuale.
Penso soprattutto all’industria, ma il principio è più ampio.
Perché il cloud non basta
Non è una posizione ideologica contro il cloud.
È che in certi contesti il cloud semplicemente non è la soluzione più adatta. Un impianto industriale, un ambiente regolamentato o una rete senza una connessione stabile possono avere vincoli che rendono necessario mantenere dati e processi all’interno della propria infrastruttura.
LOCUS parte dal presupposto opposto: tutto gira in locale, su un modello linguistico che vive sulla stessa macchina che risponde.
Nessuna chiamata di rete durante l’inferenza. Nessun dato che esce.
L’unico momento in cui serve una connessione è il download iniziale del modello. Poi, si lavora offline. Per scelta.
Cosa ho costruito, davvero
La parte facile sarebbe stata prendere un modello, costruirci sopra una interfaccia e chiamarlo AI locale.
Non era quello che volevo.
Volevo costruire una base che potesse diventare un prodotto, non un esperimento del fine settimana. Per questo ho separato le responsabilità in componenti indipendenti, testabili e sostituibili.
C’è un livello di configurazione centralizzato, dove lingua, dominio e modello vengono dichiarati invece di essere distribuiti nel codice.
C’è un model registry, che tratta ogni modello locale come una risorsa con i propri metadati: versione, quantizzazione, dimensione, checksum. Il modello non è mai semplicemente un percorso scritto a mano da qualche parte.
Ci sono i Domain Package: cartelle autonome che specializzano LOCUS per un determinato contesto, oggi quello industriale, domani potenzialmente qualsiasi altro, senza modificare il nucleo dell’applicazione.
C’è un System Prompt Builder, che compone identità, lingua, dominio e stile secondo un ordine deterministico. Sempre nello stesso modo, sempre verificabile.
E c’è una Context Architecture che separa già oggi ciò che sarà contesto di sistema, conversazione, conoscenza recuperata, memoria e strumenti.
RAG, memoria e agenti ancora non ci sono.
Ma l’interfaccia per accoglierli è stata progettata prima delle funzionalità.
Mi sembra un dettaglio importante: se sai già dove vuoi arrivare, puoi evitare di costruire ogni volta una strada nuova.
La lezione che non mi aspettavo
C’è un episodio che, più di tutta l’architettura, racconta cosa significa costruire qualcosa del genere.
A un certo punto ho scelto il modello più leggero e veloce tra quelli che avevo a disposizione.
Era tre volte più piccolo e due volte più rapido nelle metriche che avevo misurato con il mio benchmark.
Numeri impeccabili.
Poi ho provato a parlargli in italiano.
Grammatica scorretta. Parole inventate. Alla richiesta più semplice, “presentati in una frase”, rispondeva ripetendo la domanda invece di rispondere.
Tre tentativi su tre.
Il benchmark misurava velocità e dimensione. Non misurava una cosa molto più semplice: se il modello sapesse davvero parlare la lingua che gli avevo chiesto di parlare.
Sono tornato indietro e ho mantenuto il modello più pesante come predefinito.
Da allora mi sono tenuto una regola semplice:
un numero che vince su una metrica non vince automaticamente sul problema reale.
Vale per i modelli AI. Probabilmente vale per molto altro.
Il punto non è far girare un modello in locale
LOCUS oggi è un nucleo, non un prodotto finito.
Non fa ancora RAG. Non ha memoria persistente. Non orchestra agenti. Non comunica con strumenti esterni tramite MCP.
Ma è costruito perché queste funzionalità possano essere aggiunte senza dover riscrivere ciò che esiste già.
È la differenza tra progettare delle fondamenta e aggiungere stanze una alla volta sperando che la casa regga.
L’obiettivo non è dimostrare che si può far girare un LLM su un portatile.
Quello, ormai, è relativamente semplice.
L’obiettivo è capire se si possa costruire una AI seria, specializzabile e davvero multilingua. Non multilingua perché esiste un elenco di lingue supportate, ma perché lingua e dominio fanno parte della progettazione.
E soprattutto un’intelligenza artificiale che non debba chiedere il permesso a un server che non controlli.
Mi chiedo se tra qualche anno un’AI che non lascia mai la fabbrica ci sembrerà una scelta ovvia, invece di una soluzione particolare che bisogna ogni volta giustificare.
Per ora continuo a costruirla.
Un layer alla volta.
P.S. se sei curioso di provare LOCUS in versione sperimentale scrivimi a contact@rheorix.com