Chatto è un servizio che nasce per offrire una piattaforma di messaggistica self-hosted destinata a gruppi e team, con l’obiettivo di lasciare all’utente il controllo di server e dati, andando potenzialmente a conquistare utenti e amministratori che oggi usano Discord.
Il progetto punta sulla leggerezza: il sito ufficiale lo presenta come un’applicazione distribuita in un singolo binario di circa 50 MB, senza dipendenze esterne per l’installazione self-hosted.
Il repository adotta principalmente la licenza AGPL-3.0, mentre alcune componenti utilizzano Apache-2.0. Rispetto ai servizi centralizzati, il modello cambia soprattutto sul piano dell’infrastruttura: l’organizzazione può scegliere dove eseguire il server e come amministrare autenticazione, backup e conservazione.
Architettura e sicurezza puntano sul controllo
La leggerezza non significa però un prodotto minimale. Chatto comprende stanze, ricerca full-text, notifiche, PWA, condivisione dello schermo, backup, ruoli, autenticazione tramite provider esterni e chiamate audio e video. La documentazione corrente descrive un’architettura basata su Go, protobuf e JetStream. Gli eventi vengono registrati in uno stream EVT e le proiezioni in memoria ricostruiscono i modelli utilizzati per le letture. Il sistema impiega optimistic concurrency control e può gestire più repliche collegate allo stesso account NATS, affidando il coordinamento a JetStream e NATS KV.
Un elemento da distinguere rispetto alla descrizione originaria riguarda le API. La documentazione attuale indica il superamento di GraphQL a favore di ConnectRPC basato su protobuf, affiancato da un WebSocket realtime. Questa scelta permette di mantenere un contratto pubblico adatto a client differenti, bot, SDK e integrazioni esterne.
Anche la protezione dei dati è parte rilevante del progetto. Il modulo crittografico utilizza XChaCha20-Poly1305 e chiavi casuali da 256 bit, con supporto al wrapping autenticato. Chatto introduce il crypto shredding: la distruzione della chiave associata a un account può rendere indecifrabili i dati cifrati che ne dipendono, anche se alcune copie restano nello storico o nei backup. Questo meccanismo non sostituisce una strategia completa di gestione delle chiavi, che comprende conservazione, rotazione, caching e integrazione con eventuali KMS.
Installazione e limiti da valutare
Per l’autenticazione sono disponibili OIDC e provider come GitHub, Google e Discord, mentre ruoli come Owner, Admin e Moderator consentono di differenziare i permessi. Le funzioni audio, video e screen sharing utilizzano LiveKit. Per una prova in LAN o tramite VPN si possono usare i binari delle release; il materiale di partenza segnala, al 29 agosto 2026, la v0.5.0-alpha.3 come versione più recente. Il suffisso alpha è importante: il progetto è ancora pre-1.0 e richiede prudenza prima di affidargli comunicazioni critiche.
Persistenza a eventi, cifratura, API protobuf e comunicazioni realtime lo rendono più ambizioso di un semplice clone self-hosted. La scelta può risultare interessante per chi privilegia controllo e autonomia, purché maturità del software e responsabilità operative siano considerate prima di un’adozione in produzione.