Keep your terminal
You don’t have to switch terminals to use Alto. Keep iTerm, Ghostty, Windows Terminal, the VS Code terminal, or a plain ssh session. Alto isn’t the window: it’s the backplane underneath, a small service on each of your machines that keeps your terminals alive, plus one command, alto, that reaches them from anywhere. The app is one way to plug in. Your terminal is another. So is your phone, and so is an agent.
Start where you are
Section titled “Start where you are”alto # a new session, shown right here in this terminalThat’s a shell like any other, in the terminal you’re already in. The difference is who owns it. Press Ctrl-\ to detach, close the window, quit the terminal app, log out: the session keeps running. Come back later:
alto ls # what's running, and what each is doingalto attach 3 # back into session 3, exactly as you left italto attach # or pick from a listThere’s no prefix key to learn: Ctrl-\ is the only key Alto takes, and everything else goes straight to your program.
What a plain terminal can’t do
Section titled “What a plain terminal can’t do”Your sessions outlive more than the window. Each session is its own process, holding the whole terminal state: the screen, the scrollback, the modes a full-screen program set. Attaching from any terminal redraws it exactly. Updating Alto moves running sessions onto the new build without restarting the programs in them (alto reload). If one crashes, the others don’t notice.
Every machine is one command away, with no ssh. Your machines on Tailscale reach each other directly. A session’s address is machine:id, and it works wherever an id does:
alto ls --all # every session on every machine you reachalto attach studio:3 # the desktop's session 3, from your laptopalto --on build-box # a new shell on another machine, hereThere are no keys to copy, no ports to open, and nothing exposed to the internet. See Remote access.
It knows what’s going on inside. Alto tells working, needs you and done apart, for any program and exactly for agents like Claude Code and Codex. So instead of flipping through tabs to see which agent is stuck on a permission prompt:
alto ls --waiting # everything waiting for you, on every machinealto events --all # what happens, as it happens, everywhereIt tells your phone. When a session needs you, your phone gets a notification, and tapping it opens that session. That’s the service’s doing, not the window’s: it works when no app is open anywhere. See From your phone.
One view of everything, in the terminal. alto fleet is a full-screen view, made for the terminal: what needs you, every session and machine, every device with access, and what happened lately. It works the same over ssh, on a Linux server, or in your phone’s terminal. See Every session, every machine.
Scripts and agents get a real handle on terminals. Read a session’s screen, type into it, run a command in it and get back only that command’s output and exit status, wait until it’s idle or prints something:
alto capture studio:3 --last 40alto run studio:3 -- cargo test # just the output, and the exit statusalto wait studio:3 --until needs-you --timeout 10mThese are the commands agents use to work in terminals you can watch, and to talk to the agents running in other ones. An agent started in an Alto session is told where it is, and alto guide tells it the rest. See Scripting sessions.
On a machine with no screen
Section titled “On a machine with no screen”A server, a VM, a container, a Raspberry Pi: install the alto command, run alto install, and it becomes one of your machines. Its service starts with the machine (on Linux, with nobody logged in). You reach its sessions from your laptop’s terminal, from the app if you use it, and from your phone. Nothing there needs a window, a desktop, or the app. See Servers.
When the app is worth it
Section titled “When the app is worth it”The app is the same sessions, drawn by Alto itself. It adds what’s hard to do inside another terminal:
- each tab marked working, needs you or done, and a count of what’s waiting on every machine;
- panes beside an agent where it runs its commands for you to watch (work panes);
- ended sessions shown with their last screen, and a button to start them again where they were;
- fonts, themes and profiles, picked by sight.
Use it on the machine you sit at, if you like. Or don’t: everything above works without it, and the sessions don’t care what’s showing them.