Vai al contenuto
Nicola Sabaini

Progetti

NucleoOS

Un sistema operativo per M5Stack Cardputer: 512 KB di RAM, nessuna PSRAM, e sopra ci girano un assistente AI offline, una voce bilingue e una shell desktop servita dal dispositivo.

Tipo
Sistema
Stato
In sviluppo
SoC
ESP32-S3
RAM
512 KB, no PSRAM
Heap libero
~18 KB
Stack
C · ESP-IDF · WASM
Stelle GitHub
57
ANIMA, l'assistente offline di NucleoOS, aperto nella shell da browser servita dal Cardputer

Il Cardputer sta in una mano e ha un ESP32-S3: 512 kilobyte di RAM, nessuna PSRAM, e dopo che il sistema ha caricato restano circa diciotto kilobyte di heap. NucleoOS ci mette sopra un sistema operativo vero — non un menù di strumenti, che è quello che di solito gira su questo hardware.

Registro di applicazioni con permessi dichiarati, bus di eventi con event sourcing, accoppiamento e autenticazione, aggiornamento OTA con rollback, motore di localizzazione, notifiche, gestore dell’alimentazione.

La decisione che rende possibile il resto

Ci sono due interfacce complete che parlano lo stesso contratto: il firmware nativo sullo schermo da 240×135, e una shell web servita dal dispositivo che si apre in qualunque browser della rete locale.

Non è una duplicazione, è una divisione del lavoro, ed è l’unica idea che tiene in piedi tutto il resto: il lavoro pesante va nel browser, mai sull’heap da 18 KB. Il file manager, il foglio di calcolo, l’editor di immagini, l’IDE girano sulla macchina di chi guarda. Il dispositivo serve i dati e tiene lo stato.

Anche la cattura dello schermo segue quella regola: GET /api/screen manda fuori il pannello fisico come BMP, senza canvas e senza praticamente toccare l’heap.

Un solo binario copre sia il Cardputer originale sia il Cardputer ADV: la mappa dei tasti e il codec audio si riconoscono all’avvio, quindi si compila una volta e si flasha l’uno o l’altro.

ANIMA, che non inventa

ANIMA è l’assistente, e gira in due posti contemporaneamente.

Sul firmware è un motore di linguaggio naturale scritto in C: cascata di recupero su tre livelli, ragionamento neuro-simbolico, grafo di conoscenza, matematica e unità di misura, livelli di apprendimento e profilo. Non è un modello linguistico, e questa è la scelta: è ancorato per costruzione, non può affermare un fatto che non ha. Un LLM su 18 KB di heap non ci starebbe, ma anche potendo, un assistente che inventa dentro un sistema operativo è peggio di nessun assistente.

Nella shell web è lo stesso assistente compilato in WebAssembly, che gira per intero dentro il browser: offline, privato, immediato.

E parla. La sintesi vocale è concatenativa e bilingue: un vocabolario finito viene pre-vocalizzato sul PC, e a runtime si incollano le clip giuste. Voce naturale, RAM praticamente zero, nessuna rete. Legge l’ora al minuto, conferma i lanci, dice lo stato — e per le cose che non vanno dette ad alta voce risponde che si leggono sullo schermo.

Quando serve un modello vero

Per il lavoro che ANIMA non può fare ci sono i modelli di frontiera — Claude, Groq, Grok, Gemini — configurabili anche insieme, con ricaduta automatica. Due dettagli contano:

  • Le chiavi stanno sulla SD del dispositivo e non finiscono mai nei log.
  • È il browser a parlare col fornitore, non il Cardputer: il microcontrollore non è nel percorso, e non deve reggere una sessione TLS verso l’esterno mentre fa tutto il resto.

C’è anche ANIMA Code, un runtime JavaScript in sandbox con un’API os.* (os.fs, os.http, os.anima, os.notify): si scrive uno script, si preme Run, e si guida il sistema.

E il resto

Trascrizione sul dispositivo con un modello Vosk in WebAssembly, italiano e inglese, con lo schermo spento per non consumare batteria. Registrazione che si può trasmettere in diretta alla shell web per trascriverla sul grande schermo. Un editor di immagini con generazione locale via WebGPU. Multiplayer nativo su ESP-NOW, quindi senza router: ogni gioco riparte con un heap pulito, che su questa macchina è l’unico modo di avere memoria a sufficienza.

Il progetto è libero per uso non commerciale; l’uso commerciale richiede una licenza a pagamento. Include strumenti di test di sicurezza, destinati a verifiche autorizzate, ricerca e didattica.

Come è andata a finire

Tutto questo è raccontato per esteso in 512 KILOBYTE, il libro: com’è cominciato con un chip che rispondeva no Embedded PSRAM, cosa è stato buttato via lungo la strada, e le regole che sono rimaste.