Quante volte hai un problema sul tuo sistema Linux e sai cosa vorresti fare ma non ricordi il comando esatto, i flag giusti, o la sintassi di quel tool che usi una volta ogni sei mesi? Terminal-system nasce per questo: descrivi il problema in linguaggio naturale, un assistente AI (Claude Code o Codex, chiamato in modo non interattivo e senza accesso diretto a nessun tool) traduce l’istruzione in comando shell, e tu lo vedi comparire pronto da eseguire, non da subire.
A differenza di un assistente AI generico a cui incolli output ed errori a mano, terminal-system vive dentro tmux accanto alla shell vera: il comando generato viene digitato direttamente nel pannello dove lavori, tu lo confermi (o lo modifichi, o lo annulli), e il risultato resta lì, nella tua sessione.
Come funziona
Un layout tmux a due pannelli: a sinistra una shell normale, dove i comandi vengono davvero eseguiti; a destra un prompt di istruzioni. Scrivi cosa vuoi ottenere, l’assistente AI traduce in uno o più comandi shell, e quei comandi vengono digitati nel pannello sinistro in tempo reale.
Si lancia con il comando terminal-system, oppure dalla voce “Terminal System” nel menu SysLinuxOS Tools una volta installato. Per default parte con Claude Code; se Claude non è disponibile passa automaticamente a Codex. Per scegliere esplicitamente il motore: terminal-system claude oppure terminal-system codex.
> trova i file più grandi di 100MB in questa cartella
-> ran: find . -maxdepth 1 -type f -size +100M -exec ls -lh {} \;
Il contesto di sessione è opt-in: con :context on, istruzioni e output recenti vengono passati all’assistente ad ogni richiesta, per gestire richieste di follow-up (“ora cancellalo”, “riprova con sudo”). Per default resta spento e ogni richiesta riparte pulita. In ogni caso non viene mai scritto su disco: sparisce quando chiudi la sessione, o subito con :context clear.
Guida: le modalità di utilizzo
Il pannello destro accetta sia istruzioni in linguaggio naturale sia comandi speciali che iniziano con :
| Comando | Effetto |
|---|---|
:cmd <comando> |
Digita un comando shell manualmente, senza passare dall’AI |
:manual |
Chiede un comando manuale al prompt successivo |
:auto readonly / :auto off |
Attiva/disattiva l’esecuzione automatica, solo per una whitelist di comandi read-only (default: off; :auto on resta valido come alias) |
:context on|off|show|clear |
Attiva/disattiva la memoria di sessione mandata all’AI, la mostra o la svuota (default: off) |
:engine claude / :engine codex |
Cambia motore AI per il resto della sessione |
:quit |
Chiude la sessione |
Per impostazione predefinita ogni comando, generato o manuale, attende conferma: Invio per eseguirlo, e per modificarlo prima di eseguirlo, n per annullarlo. È la modalità consigliata per l’uso quotidiano: vedi cosa sta per succedere prima che succeda.
La modalità :auto readonly esegue automaticamente solo i comandi il cui primo termine è un programma read-only riconosciuto (ls, cat, grep, ps, git status/log/diff, systemctl status e simili ) e che non contengono metacaratteri di shell capaci di trasformare un comando innocuo in uno che non lo è (redirezioni, pipe, backtick, $(), punto e virgola, &). Tutto il resto chiede sempre conferma, anche in questa modalità. Se un motore AI non risponde, terminal-system prova automaticamente l’altro, se disponibile, prima di arrendersi.
Sicurezza e consapevolezza
Un punto va detto chiaramente: terminal-system esegue comandi reali sul tuo sistema. Non è una demo, non è un sandbox: se l’AI genera un comando sbagliato e tu lo confermi senza guardarlo, quel comando gira per davvero.
Alcune protezioni sono integrate:
- In
:auto readonly, un comando salta la conferma solo se supera due controlli: il primo termine è un programma read-only riconosciuto, e la riga non contiene nessun metacarattere di shell che potrebbe fargli fare qualcosa di diverso da quello che sembra (redirezioni, pipe, backtick,$(), punto e virgola, &). Qualsiasi comando non esplicitamente riconosciuto come sicuro chiede sempre conferma, anche in auto-mode. - Come seconda rete di sicurezza, un elenco fisso di pattern sempre pericolosi (
rmdistruttivo,mkfs,ddsu un device, fork bomb,chmodricorsivo su/con qualsiasi permesso, shutdown/reboot,killall -9, rimozione di utenti/gruppi root o sudo,iptables -F, scritture sui device sotto/dev) forza comunque la conferma manuale, indipendentemente dall’allowlist. - Quando un comando è probabilmente interattivo (
sudo,ssh,passwd, un editor, un pager), il focus passa al pannello sinistro: password e prompt interattivi li digiti tu, direttamente nella shell che esegue il comando, mai attraverso l’assistente. - terminal-system gira sul proprio server tmux dedicato, separato da quello di default: le scorciatoie mouse che imposta per il copia-incolla non toccano le tue altre sessioni tmux.
Ma una lista di pattern pericolosi non è una garanzia assoluta, è una rete di sicurezza. La regola di fondo resta: leggi il comando prima di premere Invio. terminal-system è ottimo per risolvere problemi sul tuo sistema — spazio disco che sparisce, servizi che non partono, permessi sbagliati, log da interpretare — proprio perché ti toglie il carico di ricordare la sintassi esatta. Ma la responsabilità di cosa gira sulla tua macchina resta tua, non dell’assistente: usa :auto readonly solo per operazioni di cui comprendi l’effetto, e tienilo spento quando esplori un sistema che non conosci bene.
Quando :context on è attivo, l’output del pannello sinistro viene passato per un filtro che oscura i pattern più comuni di password, token e chiavi API prima di essere tenuto in memoria — su base best-effort, non una garanzia assoluta: controlla con :context show prima di fidartene in una sessione dove è comparso qualcosa di sensibile. Istruzioni e comandi eseguiti non vengono comunque mai scritti su disco, in nessuna modalità: restano in memoria per la sessione tmux corrente.
Installazione
Debian / Ubuntu — pacchetto già pronto
Nelle Release su GitHub trovi il .deb già compilato, pronto da installare senza bisogno di clonare nulla:
wget https://github.com/fconidi/terminal-system/releases/latest/download/terminal-system_1.1.5_all.deb sudo apt install ./terminal-system_1.1.5_all.deb
In alternativa, per compilarlo da sorgente:
git clone https://github.com/fconidi/terminal-system.git cd terminal-system bash build-deb.sh sudo apt install ./terminal-system_*_all.deb
SysLinuxOS
Già pacchettizzato nel repository APT ufficiale:
curl -fsSL https://fconidi.github.io/SysLinuxOS-Tools/client/install-repo.sh | sudo bash sudo apt update && sudo apt install terminal-system
Richiede bash, tmux, xclip (per copiare col mouse), e il CLI claude e/o codex già installato e autenticato — nessuno dei due è una dipendenza rigida del pacchetto, perché nessuno dei due si distribuisce come .deb su questo sistema.
Storico versioni
- 1.0.0 — prima release: launcher tmux a due pannelli, REPL
ts-brain, conferma manuale con modifica/annulla, guardrail sui pattern pericolosi, passaggio di focus per comandi interattivi - 1.1.0 — icona e voce nel menu SysLinuxOS Tools, scorrimento con mouse nei pannelli, richiamo cronologia con le frecce su/giù nel prompt
- 1.1.1 — copia da selezione mouse verso la clipboard di sistema via xclip (mancava su terminali VTE come mate-terminal), fix per l’uso di codex fuori da una directory git/trusted
- 1.1.3 — digitazione dei comandi a blocchi di 6 caratteri invece che uno alla volta (~6x meno sotto-processi), modello AI configurabile via
TS_CLAUDE_MODEL/TS_CODEX_MODEL - 1.1.5 — sostituita la blocklist di
:auto oncon un’allowlist di comandi read-only (:auto readonly); memoria di sessione ora opt-in (:context on|off|show|clear) con redazione automatica di segreti; server tmux dedicato invece di quello condiviso con le altre sessioni
Link utili
- Codice sorgente e .deb già pronto su GitHub (utile anche fuori da SysLinuxOS): github.com/fconidi/terminal-system
- Repository APT: fconidi.github.io/SysLinuxOS-Tools
man terminal-systemper la documentazione completa dopo l’installazione
terminal-system: terminale assistito da AI (Claude Code, Codex) per il tuo sistema Linux

