Tutto ciò che fa Unterm
L'elenco completo: ogni interfaccia, ogni capacità e il perché è costruita così.
Cos'è Unterm, in 60 secondi
specifiche verificabili nel sorgente · aggiornate a ogni release- Ultima versione
- v0.71.18 · 2026-10-04 · MIT
- Agent AI inclusi
- 7 manifest firmati — Claude Code · Codex CLI · Gemini CLI · OpenCode · Aider · Kimi Code CLI · Trae Agent. Busta verificata Ed25519 da unterm.app/api/agents/manifests; selettore della modalità di autenticazione per ogni agent.
- Prezzo
- $0 per sempre · nessun piano a pagamento · nessun abbonamento · nessun acquisto in-app
- Piattaforme
- macOS (universale) · Linux x86_64 + arm64 (.deb + AppImage) · Windows 10/11 x64 + arm64 (.msi + .zip portatile) — 9 pacchetti per release
- Dimensione dell'installer
- DMG 50 MB · .deb 27 MB · AppImage 43 MB · MSI 43 MB (x86_64 / x64)
- Memoria a riposo
- ~110 MB residenti · cresce linearmente con i pannelli aperti
- Lingue dell'interfaccia
- 9 — en · 简体 · 繁體 · 日本語 · 한국어 · Deutsch · Français · Italiano · हिन्दी
- Superfici di controllo
- MCP (JSON-RPC su TCP) · Impostazioni Web HTTP ·
unterm-cli· GUI — lo stesso stato JSON per tutte e quattro - Integrazioni con agent testate
- Claude Code · Cursor · Codex CLI · client MCP personalizzati in Python / Node — tutti tramite 1 socket, ~30 righe di codice
- Raccolta dati
- Zero telemetria · nessun account · nessuna analytics · ogni server in ascolto su 127.0.0.1
- Stack tecnologico
- Rust · motore nativo next-core · wgpu · MCP (JSON-RPC delimitato per riga) · Tailwind + Alpine per le Impostazioni Web
Installa ogni agent di coding. Un clic ciascuno. Zero fatica di setup.
Se hai mai provato a usare più di una CLI di coding AI fianco a fianco, conosci la fatica: npm install, flusso OAuth, chiave API, ~/.config/<vendor>/<different format each>, variabili d'ambiente, separazione dei profili. Unterm v0.18 riduce tutto a una scheda delle impostazioni + una CLI. Nessun altro terminale lo fa.
Installa dalla GUI o via CLI
Fai clic su Install in una qualsiasi scheda agent, o esegui unterm-cli agent install <id>. Unterm esegue il comando giusto per la tua piattaforma (npm / pipx / ecc.), verifica che il binario finisca nel PATH e lo rileva di nuovo automaticamente.
Prima l'abbonamento ufficiale. La tua chiave resta facoltativa.
La maggior parte degli agent offre un accesso con account o abbonamento ufficiale (Claude Pro, ChatGPT Plus, Google AI Pro). Unterm usa questa modalità come predefinita — nessuna chiave API viene mai iniettata in silenzio. Passa esplicitamente a usa la tua chiave o endpoint personalizzato nel modulo Configura quando vuoi davvero la fatturazione per token o un gateway aziendale.
Catalogo di manifest firmati Ed25519
L'elenco degli agent e dei loro comandi di installazione non è scritto nel codice di Unterm — è una busta firmata servita da unterm.app/api/agents/manifests. Una compromissione della CDN non può spingere un curl | sh sulla tua macchina; la chiave pubblica è incorporata in ogni binario di Unterm.
L'AI controlla il terminale. MCP lo rende possibile.
La maggior parte dei terminali integra l'AI dentro il binario. Unterm fa il contrario: tiene l'AI fuori ed espone il terminale come una superficie che qualsiasi agente esterno può afferrare via MCP. Il terminale è ciò che viene controllato; l'agente è chi fa il lavoro.
Un'AI controlla un'altra AI attraverso il terminale.
L'agent esterno possiede la sessione del terminale. Cambia cwd, avvia un agent di coding interno in un pannello, legge i log e continua a iterare finché il repository non è verde.
L'agent esterno punta il pannello attivo alla radice del progetto, così ogni comando, log e screenshot resta ancorato alla stessa directory di lavoro.
Avvia un agent di coding in un pannello diviso, gli assegna il compito e lascia che quell'agent esegua il ciclo di modifica dentro il terminale.
L'agent esterno legge l'output dei test e lo stato del pannello, riprova quando serve e passa al commit o al rilascio solo quando il terminale dice che il lavoro è finito.
Tre modi di usare Unterm
Non l'abbiamo costruito per un solo flusso di lavoro. Grazie alla superficie MCP, ogni profilo ottiene lo stesso piano di controllo da punti di accesso diversi.
Guida più pannelli del terminale da Claude Code, Cursor o dal tuo agente. Ogni pannello è un compito; è l'agente a scegliere dove scrivere. I nomi NATO delle istanze (alpha, bravo, charlie…) rendono banale l'instradamento tra finestre.
- Schema director / worker: un agente esterno supervisiona un agente interno in un pannello
- Monitoraggio di lunga durata: avvia una build, interroga finché non è inattiva, decidi il passo successivo
- Orchestrazione multi-pannello: distribuisci il lavoro tra progetti, aggrega i risultati
- Registrazione con token oscurati per revisione e fine-tuning
Una CLI adatta a cron per tutto ciò che puoi fare nella GUI. unterm-cli è incluso in ogni release; passa --json a qualunque strumento a valle che voglia JSON-RPC grezzo. La stessa superficie per script operativi, dashboard e runbook.
- Rilevamento automatico del proxy: macOS scutil / registro di Windows / GNOME gsettings
- Screenshot e lettura dei pannelli in modalità headless per la documentazione degli incidenti
- Registrazione → markdown per generare runbook, dati personali oscurati per impostazione predefinita
- Niente telemetria, niente login, ogni server legato a 127.0.0.1
Licenza MIT, sul proprio kernel next-core dalla v0.61 (~12k righe, 10 dipendenze dirette), con integrazione degli agenti di prima classe. Le patch sono benvenute su GitHub. Compilalo da te; la CLI binaria è inclusa in ogni release. L'interfaccia delle impostazioni Web è una SPA Tailwind + Alpine: fai il fork della pagina e cambia i colori.
- Binario macOS universale arm64 + x86_64, firmato con Developer ID
- Linux .deb (apt) e AppImage (qualsiasi distribuzione)
- MSI per Windows con WiX 6 + .zip portabile
- 9 lingue già incluse, rilevamento automatico della lingua di sistema
Quattro superfici di controllo, un solo motore
Ogni finestra di Unterm avvia un server MCP locale e un server HTTP per le impostazioni. Leggi e scrivi lo stesso stato JSON da uno qualsiasi di essi.
JSON-RPC delimitato per riga su 127.0.0.1:19876, protetto da token. Avvia shell, leggi lo stato dei pannelli, cattura screenshot, controlla le sessioni.
La stessa superficie da qualsiasi shell, cron job o script. Un client JSON-RPC leggero sopra l'MCP locale: nessuna logica applicativa duplicata.
Un'interfaccia di configurazione moderna nel browser, non nella griglia di celle. SPA Tailwind + Alpine su 127.0.0.1:19877. Temi, proxy, registrazioni, lingua.
en / 简体 / 繁體 / 日本語 / 한국어 / Deutsch / Français / Italiano / हिन्दी già incluse. Rilevamento automatico della lingua di sistema.
Markdown suddiviso in blocchi OSC 133, con oscuramento integrato. Le registrazioni si trovano in <cwd>/.unterm/sessions/.
Cattura di un'area con un clic dalla barra di stato. PNG su disco, immagine negli appunti, percorso negli appunti di testo.
Rileva automaticamente le impostazioni di macOS / Windows / GNOME / variabili d'ambiente, con override HTTP/SOCKS manuali, nodi con nome, rotazione e supporto per i controller Clash/mihomo.
Costruito sul motore di terminale nativo next-core di Unterm, con rendering wgpu multipiattaforma.
La superficie di controllo completa
Non un tour di screenshot — la vera superficie che ogni agent e script può chiamare. 152 metodi MCP in 30 namespace, più 34 comandi CLI, tutti con lo stesso JSON in risposta.
Guarda lo stato live di ogni agent CLI (al lavoro / in attesa / inattivo), salta dalla inbox a quello che ha bisogno di te, lancia una flotta di N agent sullo stesso compito in git worktree isolati, poi rivedi, fai merge o rollback di ciò che hanno prodotto — dalla GUI, via MCP o da CLI.
Crea, dividi, metti a fuoco, ridimensiona e distruggi pannelli dall'esterno del terminale. Scrivi in qualsiasi pannello carattere per carattere, leggi la sua cwd, attendi finché è inattivo — senza simulare tasti.
Ottieni il testo live del viewport, l'intero scrollback come un'unica stringa, la posizione del cursore o una ricerca regex. detect_errors segnala i comandi falliti a cui un agent può reagire.
Esegui un comando e ricevi l'output in streaming, esegui e attendi il codice di uscita, invia byte grezzi, interroga lo stato, annulla o invia un segnale POSIX — risultati strutturati, non scraping dello schermo.
Installa, autentica, configura e avvia Claude Code / Codex / Gemini / OpenCode / Aider. Il bridge mcp-stdio collega automaticamente ognuno al server MCP di questo terminale.
Associa una finestra a un'identità da sviluppatore — GitHub PAT, chiavi AWS, token npm, chiave SSH, autore git. Le credenziali vivono nel vault del sistema operativo; 7 sniffer trovano quelle esistenti in sola lettura.
Ogni finestra è un'istanza con un nome NATO (alpha, bravo, charlie…). Elenca ogni Unterm attivo sulla macchina, metti a fuoco uno, o rinominalo — un agent smista il lavoro tra le finestre in base a cwd o titolo.
Registra qualsiasi pannello in Markdown suddiviso in blocchi di comando OSC 133 — ogni blocco contiene comando, output, codice di uscita e durata — con i token oscurati. Elenca, leggi o esporta le registrazioni via MCP o CLI. Non c'è riproduzione: i vecchi comandi asciicast record / replay sono stati rimossi.
Cattura lo schermo, una finestra o un rettangolo (macOS e Windows; su Linux per ora restituiscono «not implemented»); renderizza l'intero scrollback di un pannello in un unico PNG alto su ogni piattaforma; fai uno screenshot lungo della finestra di un'altra app su macOS; leggi gli appunti; o carica un file nel tuo bucket Aliyun OSS / Tencent COS / Qiniu e ricevi un URL pubblico — tutto via MCP.
Leggi lo stato del proxy del sistema operativo, passa da un nodo configurato all'altro, testa la latenza degli endpoint o applica / rimuovi override del proxy di sistema (macOS scutil · registro di Windows · env di Linux) — zero URL da incollare.
Ogni scrittura di un agent viene registrata con la sua identità; una policy di conferma delle scritture controlla il primo contatto. Testa le decisioni della policy, esegui la suite di autotest integrata e leggi i flag di liveness/readiness.
Salva il layout completo di pannelli / schede della finestra corrente, elenca i layout salvati e ripristinane uno — un agent può fotografare un insieme di lavoro e riportarlo indietro più tardi.
meta.surface restituisce ogni metodo MCP (con gli schemi dei parametri), ogni sottocomando CLI e ogni scorciatoia attiva in una sola chiamata — così un agent appena connesso impara l'intera API senza documentazione.
Agent e script raggiungono questa superficie tramite MCP (JSON-RPC su TCP) e il binario unterm-cli; le persone usano la GUI e la pagina delle Impostazioni Web, la cui API HTTP può essere chiamata anche dagli script. Le quattro si sovrappongono invece di rispecchiarsi — tema, lingua e unterm.conf, per esempio, non sono su MCP. Un solo round-trip verso meta.surface (o unterm-cli reference) restituisce in tempo reale ogni metodo MCP, comando CLI e scorciatoia da tastiera.
Dove Unterm si distingue
Tre affermazioni che puoi verificare con grep, compilare o eseguire tu stesso. Niente nebbia di marketing.
La v0.18 rende Unterm un launcher con un clic per Claude Code, Codex CLI, Gemini CLI, OpenCode e Aider. Il comando di installazione, il flusso OAuth, la chiave API e il file di configurazione nativo di ogni agent sono descritti da un manifest firmato scaricato da unterm.app; il runtime salva la chiave nel portachiavi del sistema operativo, scrive la configurazione JSON/TOML/YAML dell'agent (preservando i campi sconosciuti), espone Unterm stesso all'agent come server MCP e registra la sessione nell'audit — tutto raggiungibile dalla CLI e dalla nuova scheda Agent AI delle Impostazioni Web.
session.split + session.focus via MCP permettono a un agent esterno (Claude Code, Cursor, il tuo script) di dividere la finestra attiva a sinistra / destra / sopra / sotto e passare il focus al nuovo pannello — senza simulare alcun tasto. Incluso nello snippet Python in apertura. Nessun altro terminale espone così la geometria dei pannelli ai processi esterni.
Ogni session.input / exec.send viene registrato con l'identità dell'agent chiamante. La prima scrittura di un nuovo agent fa apparire un banner Consenti / Blocca / Consenti sempre. La fiducia viene salvata in ~/.unterm/trusted_agents.json ed è revocabile con un clic dalla scheda MCP delle Impostazioni Web. La barra di stato mostra il conteggio live delle scritture MCP.
Piccoli tocchi che fanno la differenza
Rifiniture per l'uso quotidiano — nessuna è una funzione di punta, ma insieme eliminano l'attrito.
Una previsione grigia in stile fish completa il tuo input dalla cronologia shell di qualsiasi pannello; → o End la accetta.
Gli agent propongono comandi senza toccare il PTY — sopra la barra di stato; Tab accetta, Alt+Enter accetta ed esegue.
Seleziona trascinando qualsiasi rettangolo dalla barra di stato; PNG su disco, immagine negli appunti, percorso del file come testo — tutto insieme.
7 temi inclusi; unterm-cli theme set midnight li cambia tutti in tempo reale. La barra di stato mostra la cwd del pannello attivo relativa a $HOME.
Clic destro nel Finder → Apri in Unterm. Usa l'estensione Services di AppleScript — nessun menu contestuale interno all'app.
Il profilo di identità attivo (GitHub PAT / chiavi AWS / token npm associati a questa finestra) appare nella barra di stato; fai clic per passare al profilo successivo.
Legge macOS scutil / registro di Windows / GNOME gsettings / env. Un solo interruttore on/off. Nessun URL da incollare.
Le registrazioni si dividono automaticamente ai confini del prompt della shell. Ogni blocco ha comando, output, codice di uscita, durata — ricercabili.
Il tasto destro incolla. È la selezione a copiare.
L'intero ciclo copia-incolla vive sul mouse, ma le due metà stanno su due gesti diversi. Rilascia una selezione ed è già negli appunti; premi il tasto destro e incolla al cursore — sempre, con o senza selezione. Nessun menu contestuale si apre mai, niente da chiudere.
Trascina sull'output, o fai semplicemente doppio clic su una parola. Nel momento in cui rilasci il tasto il testo è negli appunti. Non c'è un secondo gesto da ricordare né niente da premere per confermare.
Un tasto, un compito. Incolla al prompt che ci sia o meno una selezione. Copia da un pannello, fai clic in un altro, premi il destro — comando spostato, zero tasti. Con gli appunti vuoti non succede nulla, mai un errore.
macOS tratta Ctrl+clic come clic secondario, e così fa Unterm — trackpad, Magic Mouse o qualsiasi driver di terze parti. Conta solo un Ctrl da solo, così le tue combinazioni Ctrl del mouse e il trascinamento della finestra con Ctrl+Shift restano intatti. macOS consegna quel gesto come due eventi; Unterm agisce una volta sola. Le TUI che usano il mouse, come vim o Claude Code, si comportano allo stesso modo.
Cambiato nella v0.71.6. Prima la pressione copiava ogni volta che c'era una selezione — ripetendo un lavoro che la selezione aveva già fatto, a scapito dell'incolla a cui mirava.
Il tuo terminale ora vede gli agent che ci girano dentro
Claude Code, Codex, Gemini, Aider — ogni pannello riporta chi sta lavorando, chi è fermo in attesa di te e cosa ha modificato. Zero configurazione per iniziare; un solo comando per un reporting preciso a livello di hook.
Quattro livelli di segnale — hook ufficiali, parsing di titoli/OSC, rilevamento dei processi, euristiche dello schermo — convergono in un unico stato per pannello: al lavoro (blu che respira), tocca a te (ambra), fatto, inattivo. La barra in alto conta su tutte le finestre e diventa ambra nell'istante in cui qualcosa aspetta te.
Ctrl+Shift+A: tutti gli agent di tutte le finestre, prima quelli in attesa, con da quanto tempo sono fermi e su cosa. Invio salta dritto al pannello. «Vai a premere y da qualche parte» ora sono due tasti.
Fai gareggiare claude × 2 + codex sullo stesso compito — ogni membro nel proprio git worktree e branch accanto al tuo repository, con la propria scheda e il proprio badge di stato. La tua copia di lavoro non viene mai toccata.
Nel momento in cui un agent inizia a lavorare, Unterm crea un checkpoint del repository (un commit dangling — HEAD, index e file intatti). Diff riga per riga inclusi i file creati dall'agent, squash-merge come staged (il commit resta tuo), rollback a qualsiasi checkpoint, confronto dei membri fianco a fianco.
Il cockpit stesso è MCP + CLI: agent.status, cockpit.inbox, fleet.launch, review.merge… un agent orchestratore può lanciare flotte e rivedere diff senza nessun umano ai comandi. Local-first — niente di tutto questo tocca un cloud.
Novità della v0.71
Un terminale che si apre su una macchina senza driver grafico, una seconda finestra in 31 ms invece di 587, shell che sopravvivono alla finestra in cui sono state aperte e caratteri CJK che finalmente si copiano come testo — le ultime otto release, in sette schede.
Unterm ora disegna le immagini in linea — protocollo grafico di kitty, immagini in linea di iTerm2 e sixel — così chafa, img2sixel, viu, timg e unterm-cli imgcat mostrano l'immagine stessa. Le immagini scorrono con il testo accanto, restano nella cronologia, vengono tagliate in modo pulito ai bordi di un riquadro e restano sullo schermo (anche alternativo) su cui sono state disegnate. I programmi che chiedono la dimensione della cella in pixel ricevono quella reale. Gli agenti le elencano con screen.images. Inoltre: le sezioni [platform.*] della configurazione ora si applicano, close_confirmation funziona e le impostazioni senza effetto lo segnalano.
Aggiornamenti con un clic: unterm-cli update, «Installa aggiornamento» nella palette dei comandi o il pulsante nelle Impostazioni web scaricano la nuova versione, ne verificano lo SHA-256 (su macOS anche la firma) e riavviano. L'integrazione della shell si carica da sola in zsh, bash, fish e PowerShell: un comando fallito segna la sua scheda con ▲, un output che contiene soltanto «error» no. Gli agenti ottengono ciò che chiedono ai terminali: Maiusc+Invio non è Invio (protocollo tastiera kitty), richieste di colore risposte in base al tuo tema, barre di avanzamento sotto la scheda (OSC 9;4) e ridisegni a schermo intero senza strappi (mode 2026). Inoltre: Git Bash e ogni distribuzione WSL nel menu delle shell di Windows, una finestra di crash che apre una issue GitHub precompilata, e l'installazione con Homebrew e Scoop.
L'avvio provava i percorsi hardware e si fermava lì. Su una macchina Windows senza un driver video utilizzabile — una VM, un'immagine pulita, una sessione remota — DX12 trovava un adapter ma non riusciva a configurare una superficie, OpenGL non aveva un driver da trovare, e il terminale si rifiutava di partire con «no working GPU path», senza aver mai chiesto WARP, che è incluso in D3D12 e non richiede alcun driver. Ora la catena termina con un passaggio software. Nella stessa release: `unterm-cli start` lo segnala quando ripiega su un secondo processo invece di affidare la finestra a quello già in esecuzione, perché quel ripiego costa un secondo adapter GPU e un Core condiviso; e il manifest dei provider ora viene validato rispetto al contratto che lo legge.
Una seconda finestra era un secondo Unterm: un altro adapter GPU, un'altra connessione al Core, 587 ms di attesa. Ora si apre dentro il processo già in esecuzione, in 31 ms. Le finestre hanno un id, quindi `instance.new_window` risponde con quella appena creata e `instance.focus` la accetta; una sessione appartiene a una sola finestra, e chiudere una finestra chiude la vista mentre le shell restano nel Core per la finestra rimasta. Solo l'ultima finestra chiede se intendevi uscire.
Le capacità ora stanno dietro a lease: un agent ne acquisisce una, la usa con una chiave che puoi vedere e la perde quando la revochi — invece di far tenere a ogni chiamante lo stesso socket senza limiti. Le approvazioni sono diventate rispondibili, con la domanda che nomina ciò che sta per accadere invece del metodo che capita di implementarlo. Le flotte vengono salvate in modo durevole invece che in un file JSON, così un crash a metà esecuzione non fa più perdere quale membro stava facendo cosa.
«Continua in background» ora lascia qualcosa sullo schermo — un indicatore nell'area di notifica su tutte e tre le piattaforme che mostra quante sessioni sono ancora attive e riporta indietro una finestra parcheggiata con un clic. Un agent può fare lo stesso via MCP: `instance.focus` risveglia una finestra parcheggiata invece di fallire. I due pulsanti di chiusura hanno smesso di contraddirsi sulle tue shell, ed era questo a far sì che «chiudi» significasse due cose diverse a seconda di quale premevi.
Digitare in CJK si frantumava in spazzatura di byte `<009d>` quando la GUI passava alla shell una locale che non aveva mai impostato. Il testo copiato conteneva la cella di riempimento della griglia invece del testo, così un incolla tornava pieno di buchi. Il doppio clic selezionava mezza parola e perdeva l'altra metà. Ora i caratteri larghi sono un solo carattere — nella selezione, negli appunti e in ingresso. Più la fine della tempesta di ridisegni: confrontare il frame nel modo sbagliato significava ridipingere che qualcosa si fosse mosso o no.
unterm-core ora possiede le tue sessioni: un processo per utente conserva shell, scrollback e layout, serve l'intera superficie MCP e le passa da una finestra all'altra (v0.62). Chiudere l'ultima finestra lo ferma, a meno che non sia parcheggiata nell'area di notifica o il Core sia stato avviato con --headless. v0.63 è la release che l'installazione meritava: il demone core è davvero in tutti e nove i pacchetti, la pagina impostazioni funziona in modalità Core, le emoji vengono renderizzate per la prima volta — il font incluso era un COLRv1 che FreeType non sa disegnare — il ritardo di digitazione dopo una pausa passa da 96ms a 8ms, macOS indossa il nuovo marchio e il tasto destro di Explorer guadagna “Open in Unterm tab”.
Unterm non gira più su un fork di WezTerm. next-core è un kernel terminale scritto per questo prodotto — parser, modello dello schermo, runtime PTY, stack dei font e un renderer wgpu — tenuto entro un budget di ~12k righe di sorgente e 10 dipendenze dirette. 22 ms dall'avvio a una superficie MCP attiva (prima 7,1 s), il 6,6% di un core in idle (prima 80%), throughput identico su 200k righe. La parità di funzionalità con il vecchio kernel è stata chiusa voce per voce contro un registro di 159 requisiti, con tipografia nativa per piattaforma: veri semafori su macOS, dimensioni esatte al pt e CJK finalmente renderizzato bene. Leggi la storia sul blog.
Sei principi, nessuna eccezione
Ogni server, ogni endpoint API, ogni registrazione vive su 127.0.0.1. Niente login, niente telemetria, niente abbonamento. La cronologia della tua shell è tua.
Nessun overlay di chat, nessun pannello IA integrato, nessun modello nel terminale. Il terminale è la superficie — Claude Code, Cursor, i tuoi script lo afferrano via MCP. L'unica previsione che fa è il testo fantasma grigio al prompt della shell, costruito dalla tua cronologia, e non compare nei pannelli in cui gira un agente come Claude Code.
Le funzioni pensate per gli agenti escono con un metodo MCP e un comando CLI. Le eccezioni sono volute: tema, lingua e file di configurazione restano nelle tue mani — impostazioni Web, <code class="font-mono text-xs">unterm-cli</code> e <code class="font-mono text-xs">unterm.conf</code> — così nessun agente cambia l'aspetto del terminale a metà sessione.
Una funzione che va su Windows ma si blocca su macOS o Linux è un bug, non un «non ancora supportato». Mac, Linux e Windows escono insieme.
Quando una funzione spetta al sistema operativo, usa il sistema operativo. Tieni la generazione AI fuori dal terminale, il funzionamento di base in locale e usa l'integrazione nativa con il Finder su macOS.
Quando installi un agent AI tramite Unterm, la modalità di autenticazione predefinita è l'abbonamento ufficiale del fornitore (OAuth) — il tuo piano Pro / Plus / Team. Non iniettiamo mai in silenzio una chiave API in una sessione; la fatturazione per token avviene solo se cambi esplicitamente la modalità di autenticazione in «usa la tua chiave API» o «endpoint personalizzato» nel modulo Configura. È una scelta consapevole, non una trappola.
Un terminale non ha bisogno dell'AI integrata.
Ha bisogno di poter essere guidato dall'AI.
È questo il bivio tra Unterm e Warp — non una differenza di funzioni, ma una direzione.
Un terminale è uno strumento da trent'anni; un modello AI è un componente da sei mesi. Salda l'AI dentro il terminale e lo strumento più longevo che possiedi viene definito dalla sua parte più effimera — quando il modello invecchia, invecchia con lui tutto il terminale.
Claude Code, Codex, Gemini CLI, Aider — usi già i migliori agent di coding che esistano, e migliorano ogni mese. Una chat dentro il terminale è solo un altro copilota a cui fare login, e non sarà mai quello che preferisci davvero.
Agli agent non manca l'intelligenza — mancano le mani sul terminale. Unterm rende il terminale una superficie guidabile via MCP: crea pannelli, esegui comandi, leggi lo schermo, cattura screenshot a scorrimento, cambia impostazioni, registra sessioni. Un agent usa il terminale come lo usi tu, invece di guardarlo da dietro un vetro.
- AI incorporata nell'interfaccia del terminale, legata al loro cloud — login, abbonamento, quote
- I modelli scelti da loro, aggiornati secondo i loro tempi
- Il nucleo AI è chiuso; il contesto dei tuoi comandi passa dai loro server
- Il terminale è una superficie MCP — qualsiasi agent si collega e lo guida, quello di oggi o quello dell'anno prossimo
- Scegli tu l'agent e il modello; Unterm non ti vincola mai
- MIT, completamente open source; tutto resta su 127.0.0.1 — niente login, niente abbonamento, niente telemetria
Tra trent'anni userai ancora un terminale. Nessuno sa quale AI lo guiderà allora — ed è per questo che l'unico terminale a prova di futuro è quello costruito per essere guidato.
Unterm vs. un terminale nativo vs. un terminale AI a pagamento
Il terminale nativo (Terminal.app) è la base che hai già. Warp è il terminale AI a pagamento. iTerm2 e Ghostty sono i terminali gratuiti per power user. Unterm corre nella propria corsia: tutto ciò che un agent esterno può afferrare dall'esterno.
| Funzionalità | Unterm | Terminal.app | Warp | iTerm2 | Ghostty |
|---|---|---|---|---|---|
| pensato per agent | nativo | a pagamento | gratuito | gratuito | |
| Guidabile dall'esterno via MCP | ✓ | ✗ | ✗ | ✗ | ✗ |
| CLI programmabile per ogni azione | ✓ | ✗ | ✗ | Python API | ✗ |
| Avviatore di agenti di programmazione IA integrato | ✓ ×7 | ✗ | ✗ | ✗ | ✗ |
| Gli agent si collegano da soli all'MCP del terminale | ✓ | ✗ | ✗ | ✗ | ✗ |
| Cabina degli agenti (posta · flotte · revisione) | ✓ | ✗ | ~ cloud | ✗ | ✗ |
| Profili di identità (credenziali per finestra) | ✓ | ✗ | ✗ | ✗ | ✗ |
| Orchestrazione multi-istanza | ✓ | ✗ | ✗ | ✗ | ✗ |
| Registrazione delle sessioni → markdown | ✓ md | ✗ | ~ | ✓ | ✗ |
| Screenshot + caricamento file via MCP | ✓ (Linux ~) | ✗ | ✗ | ~ | ✗ |
| Selezionare copia, clic destro incolla — nessun menu | ✓ gesture | menu | menu | menu | menu |
| Gestione del proxy integrata | ✓ | ✗ | ✗ | ✗ | ✗ |
| Prima in locale, niente cloud / niente login | ✓ | ✓ | ✗ | ✓ | ✓ |
| AI integrata nel terminale | ✗ per scelta | ✗ | ✓ (cloud) | plugin | ✗ |
| Rendering GPU | ✓ | ✗ | ✓ | ✓ | ✓ |
| macOS + Linux + Windows | ✓ | ✗ | ✓ | macOS | mac+Linux |
| Client open source | ✓ MIT | ✗ | ✗ | ✓ GPL | ✓ MIT |
| Lingue native dell'interfaccia | ✓ ×9 | OS | en | en | en |
| Prezzo | $0 | $0 | freemium $ | $0 | $0 |
✓ sì · ✗ no · ~ parziale · ×N numero. Il ✗ per scelta su «AI integrata» è l'intera tesi: Unterm tiene l'AI fuori ed espone il terminale come la superficie che afferra.
Riflette le funzionalità documentate pubblicamente al 2026-05. Warp è closed source, con un piano gratuito basato sul cloud + piani Team/Pro a pagamento; iTerm2 offre un'API di scripting Python e un plugin AI per i comandi da attivare manualmente; Ghostty non ha ancora una build per Windows. Correzioni benvenute su GitHub.
Confronti diretti completi:
Domande frequenti
Che cos'è Unterm?
Un emulatore di terminale multipiattaforma con superfici di controllo MCP, HTTP e CLI integrate. L'idea del prodotto: il terminale come superficie controllabile via MCP, così qualsiasi agente AI esterno può guidarlo dall'esterno, invece di avere un'AI incorporata nel terminale stesso.
Come faccio a sapere quando Claude Code aspetta la mia approvazione?
Unterm traccia lo stato dell'agent di ogni pannello. Quando Claude Code (o Codex, Gemini, Aider) si ferma su una conferma, il punto della sua scheda diventa ambra, il chip nella barra in alto diventa ambra con un contatore e l'agent sale in cima alla inbox degli agent (Ctrl+Shift+A) — Invio ti porta dritto a quel pannello. Il rilevamento è a zero configurazione per Claude Code e Gemini; «unterm-cli agent enable-hooks» aggiunge un reporting preciso a livello di hook.
Posso eseguire più istanze di Claude Code in parallelo senza conflitti?
Sì — le flotte servono proprio a questo. «unterm-cli fleet launch --agents claude,claude,codex -- compito» dà a ogni membro il proprio git worktree e branch accanto al tuo repository, così non possono calpestarsi a vicenda né toccare la tua copia di lavoro. Ogni membro ha la propria scheda con badge di stato live, e la pagina Review confronta i risultati fianco a fianco.
Come rivedo o annullo le modifiche di un agent di coding AI?
Unterm crea un checkpoint del repository nel momento in cui un agent inizia a lavorarci — un commit git dangling che non tocca mai HEAD, il tuo index o i tuoi file. La pagina Review (nelle impostazioni Web) mostra diff riga per riga inclusi i file creati dall'agent, e ti permette di fare squash-merge di un risultato nel tuo repository come modifiche staged (il commit lo fai tu), scartarlo, o riportare il worktree a qualsiasi checkpoint.
Quali agent di coding AI supporta Unterm?
Il launcher installa e collega Claude Code, Codex CLI, Gemini CLI, OpenCode e Aider con un clic ciascuno. Il rilevamento dello stato del cockpit riconosce inoltre kimi, trae e cursor-agent senza alcuna configurazione, e qualsiasi agent che emetta segnali standard del terminale (titoli, OSC 9/777, BEL) ottiene gratis il tracciamento di base. Tutto il resto può integrarsi via «unterm-cli agent signal».
Come copio e incollo usando solo il mouse?
Seleziona per copiare, clic destro per incollare. Al termine di un trascinamento o di un doppio clic il testo è già negli appunti. Un clic destro incolla sempre al cursore — con o senza selezione, e in ogni pannello, compresi i programmi che catturano il mouse (vim, htop, Claude Code): Unterm tiene per sé il clic destro invece di passarlo a loro. In quei programmi, tieni premuto Shift mentre trascini per selezionare. Su macOS un semplice Ctrl+clic vale come clic destro, e anche il tasto centrale incolla. Non c'è alcun menu contestuale da chiudere, e con gli appunti vuoti non succede nulla.
Come funziona con Claude Code, Cursor o altri agenti?
Ogni finestra di Unterm avvia un server MCP locale (TCP, JSON-RPC, protetto da token). Punta il tuo client MCP a 127.0.0.1:<port> — porta e token vengono scritti in ~/.unterm/server.json all'avvio. L'agente può avviare shell, eseguire comandi, leggere lo stato dei pannelli, fare screenshot, attivare la registrazione e usare l'Agent Cockpit (stato, inbox, flotte, revisione). Tema, lingua e configurazione volutamente non sono su MCP; cambiali nelle impostazioni Web, con unterm-cli o in unterm.conf.
Come guido più finestre di Unterm da un solo agente?
Ogni processo di Unterm è un'istanza con un nome dell'alfabeto NATO (alpha, bravo, …) registrato in ~/.unterm/instances/<name>.json. Chiama instance.list su una qualsiasi per elencarle tutte; scegli in base a cwd / titolo / ordine di avvio; connettiti alla porta di quell'istanza con il suo token di autenticazione. ~/.unterm/active.json punta all'istanza attiva più recente, come ripiego per le configurazioni a istanza singola.
In cosa è diverso da Warp?
Warp incorpora l'AI in un orchestratore cloud chiuso (Oz): strumenti esterni come Claude Code non possono guidare Warp dall'esterno. Unterm sceglie la terza via: tiene l'AI fuori dal terminale, espone il terminale stesso come superficie controllabile via MCP e lascia che qualsiasi agente lo afferri. Niente cloud, niente login.
Dove finiscono i miei dati?
Da nessuna parte all'esterno. I server MCP e delle impostazioni Web ascoltano solo su 127.0.0.1. Le registrazioni delle sessioni finiscono in <project>/.unterm/sessions/, con oscuramento integrato dei token. Niente telemetria, niente analytics, niente login, nessun passaggio dal cloud. La cronologia della tua shell è tua.
Unterm contatta casa, anche solo una volta?
Niente telemetria, niente analytics, nessun ping di crash o installazione, nessun account. Unterm effettua due richieste per conto proprio, e nessuna delle due contiene nulla su di te: (1) un controllo degli aggiornamenti — una semplice GET a api.github.com/repos/zhitongblog/unterm/releases/latest circa 20 secondi dopo l'avvio e poi ogni 6 ore, con uno User-Agent fisso (unterm-update-check) e nessun identificativo; la risposta viene salvata in cache in ~/.unterm/update_check.json. (2) il catalogo degli agent AI — una GET a unterm.app/api/agents/manifests quando apri Agent AI nelle Impostazioni Web o esegui un comando unterm-cli agent, che invia solo la versione di Unterm nello User-Agent e un ETag di cache; se fallisce, viene usata la copia firmata inclusa nell'app. Nessuna delle due può ancora essere disattivata dalle impostazioni — blocca quei due host nel firewall se ti serve Unterm completamente offline. Tutto il resto è traffico avviato da te: download, caricamenti nel tuo bucket, controlli di salute verso i tuoi nodi proxy e qualunque cosa faccia la tua shell.
Esiste una versione a pagamento o funzioni premium?
No. Unterm è sotto licenza MIT; lo stesso binario contiene ogni funzionalità. Nessun abbonamento, nessuna versione Pro, nessun marketplace di plugin, nessun «paga per sbloccare i riquadri divisi». Se vuoi sostenere il progetto, il link «Sostieni» nel piè di pagina è l’unica richiesta.
Quanto occupano l'installazione e il runtime?
macOS DMG ~50 MB · Linux .deb 27 MB · AppImage 43 MB · Windows MSI 43 MB. A riposo con una finestra aperta, la memoria residente è ~110 MB; cresce linearmente per pannello. Il motore nativo next-core renderizza tramite wgpu; il costo a runtime è di solito dominato dalla shell e dalle applicazioni in ogni pannello.
Unterm rileva la lingua del mio sistema?
Sì. Al primo avvio, Unterm legge la lingua del sistema operativo (defaults su macOS, $LANG su Linux, il registro su Windows) e sceglie la più vicina tra le 9 lingue dell'interfaccia incluse. Puoi cambiarla per singola finestra in Impostazioni Web → Lingua. Le traduzioni si trovano in unterm-services/src/i18n/locales/*.json — le patch sono benvenute.
Cosa impedisce a un agent fuori controllo di eseguire rm -rf sul mio repository?
Diversi controlli. (1) Il server MCP ascolta solo su 127.0.0.1 — nessun accesso di rete. (2) È protetto da token; il token si trova in ~/.unterm/instances/<name>.json, e un agent senza accesso in lettura a quel file non può nemmeno connettersi. (3) Ogni richiesta viene collocata in una di sette fasce di rischio — read, local_mutation, exec, external_side_effect, credential_access, financial, destructive. Le letture passano. Le modifiche locali e l'esecuzione di comandi passano senza richiesta di conferma, nei limiti dei pattern di comandi bloccati e consentiti della tua policy. Tutto ciò che va da external_side_effect in su aspetta il tuo sì, e per credenziali, denaro e distruzione quel sì vale per una sola chiamata. (4) Scrivere in una shell conta come exec, quindi ciò che separa un agent da rm -rf è il banner della prima scrittura: la prima volta che un nuovo agent scrive in un pannello ricevi Consenti / Blocca / Consenti sempre, e il log di audit registra ogni tentativo di scrittura con l'identità del chiamante. Revoca la fiducia in qualsiasi momento dalla scheda MCP delle Impostazioni Web.
Come lo controllo da script?
Usa unterm-cli: session list, proxy status, theme set midnight, session record start, screenshot. Aggiungi --json a qualsiasi sottocomando per un output JSON-RPC grezzo, adatto a pipeline della shell e cron job.
Quali piattaforme vengono distribuite firmate e autenticate?
macOS: DMG universale arm64 + x86_64 firmato con Developer ID, autenticato da Apple e con ticket allegato (nessun avviso di Gatekeeper). Linux: .deb per Debian/Ubuntu e AppImage per qualsiasi distribuzione. Windows: installer MSI creato con WiX e .zip portabile. Tutto pubblicato su GitHub Releases a ogni tag minor.
È open source?
Sì — licenza MIT. L'attuale GUI e il runtime del terminale usano il motore nativo next-core di Unterm, con MCP, Impostazioni Web, registrazione, i18n e strumenti di rilascio nello stesso repository. Sorgente su github.com/zhitongblog/unterm.
Come posso contribuire?
Apri una issue o una PR su GitHub. Bug, richieste di funzionalità e discussioni passano da un'unica coda. Raccogliamo le correzioni accumulate in release minor: le versioni patch non avviano build CI. La documentazione si trova nel repository, in /docs.
Sostieni Unterm
Un solo sviluppatore costruisce e mantiene Unterm nel tempo libero. Se velocizza il tuo lavoro quotidiano, una piccola sponsorizzazione tiene vivo il progetto.
Livello internazionale mensile o una tantum. Elaborato da Stripe tramite GitHub. Annullabile in qualsiasi momento.
Mancia una tantum da tutto il mondo. Scegli qualsiasi importo nella tua valuta locale.
Gli sponsor vengono elencati nel README e nella finestra Informazioni dell'app (con il loro permesso). Nessun paywall, nessun piano premium — tutto viene distribuito nello stesso binario con licenza MIT.
Preferisci dare tempo invece di denaro? Diventa ambassador →
Community e contatti
Coda aperta, nessuna barriera. Il posto giusto per la tua domanda dipende dal tipo di domanda.
Segnalazioni di bug, richieste di funzionalità, regressioni. La coda di triage è una sola: ogni segnalazione viene letta.
Domande su schemi di integrazione MCP, configurazione degli agenti, progettazione dei flussi di lavoro. Altri utenti potrebbero aver incontrato la stessa cosa.
Linea diretta per problemi di sicurezza, collaborazioni o qualsiasi cosa non adatta a un forum pubblico.