La cronologia della shell, su Linux e macOS, non è cambiata davvero da quando il file ~/.bash_history è stato concepito. Si tratta di un file di testo piatto che salva i comandi in sequenza, senza metadati, senza contesto e senza la possibilità di recuperare nulla quando viene sovrascritto da un’altra sessione.
Chi lavora abitualmente su più macchine, un laptop, un fisso, qualche server remoto, sa bene cosa significa cercare quel comando docker run con i flag esatti che funzionavano tre mesi fa, e non trovarlo da nessuna parte.
Atuin è un progetto open source scritto in Rust che riscrive completamente questa logica. Sostituisce la cronologia testuale con un database SQLite locale che registra, per ogni comando, il timestamp, la directory di lavoro, il codice di uscita, la durata e l’host su cui è stato eseguito.
Aggiunge un’interfaccia di ricerca a tutto schermo che rimpiazza il classico Ctrl+R, e consente di sincronizzare i dati fra più macchine con cifratura end-to-end. La versione 18.3.0, rilasciata ad aprile 2026, segna il punto di maturità di un progetto attivo da tre anni e arricchito da una nuova applicazione desktop.
L’aspetto rilevante non è il singolo dettaglio, ma il fatto che Atuin trasforma la cronologia da artefatto passivo in asset riutilizzabile. Una volta installato, smettere di usarlo diventa difficile perché tornare a un file di testo che si autosovrascrive somiglia a un passo indietro.
Installazione rapida su tutte le shell che contano
L’installazione su Linux e macOS è gestita da uno script ufficiale che scarica il binario precompilato e registra l’integrazione con la shell in uso.
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | shSu macOS è disponibile anche tramite Homebrew (brew install atuin), mentre su Arch Linux il pacchetto si trova nei repository ufficiali. Il binario viene posizionato in ~/.atuin/bin e va aggiunto al PATH.
L’integrazione vera e propria, quella che intercetta i comandi e li registra nel database, si attiva con una riga nel file di configurazione della shell.
# Per zsh, in ~/.zshrc
eval "$(atuin init zsh)"
# Per bash, in ~/.bashrc
eval "$(atuin init bash)"
# Per fish, in ~/.config/fish/config.fish
atuin init fish | sourceAtuin supporta nativamente bash, zsh, fish, nushell e xonsh. Una volta riavviata la shell, il comando atuin import auto rileva la cronologia esistente e la importa nel database SQLite, preservando ciò che hai accumulato negli anni.
Il file originale rimane intatto e Atuin continua a scrivere in parallelo, così che gli strumenti che leggono direttamente da ~/.zsh_history non smettano di funzionare. A questo punto, premere Ctrl+R apre la nuova interfaccia di ricerca, mentre la freccia su mostra l’ultimo comando arricchito di metadati. Se preferisci che la freccia mantenga il comportamento tradizionale, basta una riga nel file ~/.config/atuin/config.toml per disattivare il binding e lasciare il solo Ctrl+R sotto il controllo di Atuin.
Gli utenti Windows possono utilizzare Atuin tramite WSL, seguendo la stessa procedura di installazione Linux. Atuin CLI non ha attualmente un supporto nativo per PowerShell o il terminale di Windows.
Cercare comandi con la stessa precisione dei file
La parte più visibile di Atuin è l’interfaccia di ricerca. Una volta premuto Ctrl+R si apre un TUI a tutto schermo che mostra ogni comando con la directory in cui è stato eseguito, il tempo trascorso e il codice di uscita.
La ricerca è interattiva: mentre digiti, i risultati si filtrano in tempo reale, con la possibilità di scegliere fra modalità prefix, fuzzy o full-text dalla configurazione.
La vera forza arriva però dalla riga di comando. Atuin espone una sintassi di query che permette di filtrare per directory, codice di uscita, host o intervallo temporale.
# Solo comandi con docker eseguiti con successo
atuin search --exit 0 docker
# Comandi nella directory di un progetto specifico
atuin search --cwd ~/work/api-server
# Tutto ciò che hai eseguito dopo le 15 di ieri
atuin search --after "yesterday 3pm"
# Comandi su una specifica macchina
atuin search --host laptop-personalePer default il filtro mostra la cronologia globale, ma si può alternare al volo con Ctrl+R per limitare la ricerca alla sessione corrente, alla directory in cui ci si trova o a un singolo host. Significa che, quando entri in un repository e cerchi make, ottieni soltanto le invocazioni che hai fatto dentro quel progetto.
Ci sono anche delle statistiche, accessibili con atuin stats. Mostrano i comandi più usati, la durata media e il numero di sessioni, fornendo una mappa delle proprie abitudini in terminale. Per chi è abituato al Ctrl+R minimale di bash, il salto è netto.
Sincronizzazione cifrata, anche su server proprio
La funzionalità che ha fatto crescere Atuin più rapidamente è la sincronizzazione fra macchine. Ogni record del database viene cifrato lato client con AES-256 prima di essere caricato sul server, e la chiave di cifratura non lascia mai il dispositivo.
Il server di sincronizzazione vede solo blob crittografati, illeggibili senza la chiave generata in fase di registrazione. Il flusso, sulla prima macchina, è il seguente.
# Prima registrazione (mostra la chiave)
atuin register -u nomeutente -e [email protected] -p password
atuin key
# Sincronizzazione manuale
atuin syncSulle macchine successive ci si autentica con atuin login e si fornisce la stessa chiave. La sincronizzazione iniziale può richiedere qualche minuto se la cronologia è corposa, dopodiché funziona in background. Vale la pena salvare la chiave in un password manager, perché in caso contrario diventa impossibile decifrare la cronologia anche conoscendo le credenziali.
Per chi non vuole appoggiarsi al server hosted ufficiale, esiste la via del self-hosting. Il server è scritto in Rust e si avvia da un container Docker, con PostgreSQL come storage. L’installazione è veloce e adatta a un VPS dietro un reverse proxy oppure a una soluzione con Pangolin.
Resta da ricordare che Atuin non è una soluzione di backup completa, perché se cancelli la cronologia in locale e poi sincronizzi, la cancellazione si propaga. Il comando atuin history delete rimuove voci specifiche, utile quando ti accorgi di aver salvato un token API in chiaro.
Atuin Desktop e i runbook
Da fine 2025 il progetto si è esteso con Atuin Desktop, un’applicazione disponibile per macOS, Windows e Linux che porta a un livello superiore il concetto di runbook, ovvero la documentazione operativa che da sempre accompagna i sistemi.
L’idea è semplice. Invece di scrivere un documento Markdown che descrive come eseguire un deploy, lo si compone con blocchi che eseguono effettivamente quello che descrivono.
Un runbook può contenere blocchi shell che lanciano comandi, blocchi database che eseguono query su PostgreSQL, MySQL, ClickHouse o SQLite mostrando i risultati inline, blocchi HTTP per chiamare API e blocchi terminale interattivi.
Il sistema di templating in stile Jinja consente di parametrizzare i blocchi con variabili condivise, così che modificando un singolo valore in alto si aggiornino le query e i comandi sottostanti.
SELECT * FROM ordini
WHERE creato_il > '{{var.data_inizio}}'
AND stato = '{{var.stato}}';L’esecuzione seriale, attivabile con un pulsante, fa girare l’intero runbook dall’alto verso il basso ed è particolarmente adatta a onboarding, incident response e procedure di rilascio. Il nuovo motore di esecuzione persiste lo stato fra riavvii, perciò chiudi la finestra, la riapri, e i valori calcolati sono ancora lì.
Va detto che Atuin Desktop è in open beta (versione 0.2.20 a marzo 2026) e che, a differenza della CLI, la sincronizzazione tramite Atuin Hub non è end-to-end encrypted. Per workflow sensibili conviene usare le workspace file-based e versionarle con Git.
Atuin: trent’anni dopo, è tempo di ripensare la cronologia
Cambiare la propria cronologia della shell sembra un’operazione minore, ma è uno di quei piccoli investimenti che si ripagano ogni giorno. Dopo qualche settimana, la sensazione è quella di avere un secondo cervello a portata di Ctrl+R. Comandi vecchi di mesi tornano disponibili in due caratteri, le sessioni multiple non si sovrascrivono più e il passaggio fra macchine perde gran parte delle sue difficoltà.
Non è una soluzione perfetta: la sincronizzazione, pur cifrata, comporta comunque l’invio di metadati a un server, perciò chi lavora in contesti molto regolamentati dovrebbe valutare il self-hosting o disattivarla del tutto. L’integrazione con bash, in particolare, beneficia molto dall’uso parallelo di ble.sh per syntax highlighting e completamento, che richiede un setup aggiuntivo non da poco.
Atuin Desktop, infine, è ancora un progetto in maturazione e non sostituisce, almeno per ora, strumenti di runbook più strutturati per ambienti enterprise. Detto questo, il rapporto fra sforzo di setup e qualità della vita guadagnata è nettamente sbilanciato a favore del primo.
Se passi diverse ore al giorno in terminale e lavori su più di una macchina, dedica quei dieci minuti per installarlo, importare la vecchia cronologia e configurare la sincronizzazione. La probabilità di tornare al file di testo piatto, dopo un mese di uso, è molto bassa.













