Skip to content

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.

Terminal window
alto # a new session, shown right here in this terminal

That’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:

Terminal window
alto ls # what's running, and what each is doing
alto attach 3 # back into session 3, exactly as you left it
alto attach # or pick from a list

There’s no prefix key to learn: Ctrl-\ is the only key Alto takes, and everything else goes straight to your program.

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:

Terminal window
alto ls --all # every session on every machine you reach
alto attach studio:3 # the desktop's session 3, from your laptop
alto --on build-box # a new shell on another machine, here

There 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:

Terminal window
alto ls --waiting # everything waiting for you, on every machine
alto events --all # what happens, as it happens, everywhere

It 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:

Terminal window
alto capture studio:3 --last 40
alto run studio:3 -- cargo test # just the output, and the exit status
alto wait studio:3 --until needs-you --timeout 10m

These 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.

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.

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.