boo turns detached terminal sessions into something AI agents can actually inspect

updates

coder/boo is a Zig terminal multiplexer built on libghostty that preserves real screen state, adds agent-friendly automation primitives, and makes detached interactive sessions far easier to inspect and drive.

GitHub README capture for coder/boo

A lot of terminal tooling is excellent for humans right up until you want to detach, come back later, and still understand exactly what happened. The moment a workflow becomes asynchronous, scripted, or agent-driven, the terminal often collapses into a less trustworthy interface. You can keep a process alive, sure, but reconstructing the real screen state usually means depending on raw logs, brittle sleep loops, or an ad hoc pile of control commands.

That is why boo caught my eye. It is a GNU screen-style terminal multiplexer written in Zig, but the more interesting part is what sits underneath: it uses libghostty-vt, Ghostty's terminal emulation core, to parse every session's output and preserve the actual terminal state. That means boo is not just keeping a PTY alive. It is keeping a faithful model of what the terminal looked like: contents, styles, cursor position, scrollback, and terminal modes.

For builders working with interactive CLIs, remote sessions, or AI agents that need to drive tools safely, that is a much stronger foundation than another wrapper around terminal persistence.

What boo actually ships

At the surface level, boo is easy to explain. You can create a named session, detach it, reattach it later, list sessions, kill them, and manage them in a full-screen UI. If you have used GNU screen before, the mental model is deliberately familiar.

But the repo is more interesting once you get past the surface commands. The README highlights four core product bets:

  • sessions should survive disconnects cleanly
  • the tool should have a focused full-screen session manager instead of assuming you will memorize everything
  • redraws should be faithful because they come from a real terminal state model, not a crude text log
  • automation should work without a TTY, through explicit primitives like send, peek, wait, and --json

That last point is the one that makes boo feel especially current. Many terminal tools are scriptable in theory, but not actually pleasant to automate. They expose just enough control to be possible, then leave you to discover the synchronization, quoting, and output-parsing edge cases yourself. boo is clearly trying to productize that layer instead of treating it as a side effect.

Why the Ghostty core matters

The repo's architectural argument is simple and convincing: classic multiplexers solved persistence a long time ago, but old terminal emulation layers do not always keep up with what modern terminal apps emit. If the emulator cannot correctly understand the stream, your rehydrated screen can drift from what a user really saw.

boo's answer is to replace that weak point with Ghostty's VT engine. That changes the value proposition in a practical way. When a detached session is reconstructed from terminal state instead of a byte dump, modern TUIs, cursor movement, screen clears, redraws, and style changes become much more trustworthy. That makes reattachment better for humans, but it also matters a lot for automation.

An agent or script rarely needs the raw escape sequence history. What it actually needs is the rendered result: what is on screen right now, what the cursor is doing, whether the process appears idle, whether a prompt is visible, whether a specific message has appeared. boo is built around that higher-level question.

That is a much smarter abstraction for the current wave of terminal-heavy developer workflows.

The automation layer is the real hook

The README includes a four-step loop that basically explains the product in one glance: create a detached session, send text into it, wait until output settles, then peek at the screen. That is a small API surface, but it maps unusually well to how people actually orchestrate interactive tools.

Instead of inventing sleep-and-poll hacks, you get explicit waiting semantics like wait --text and wait --idle. Instead of scraping whatever happened to be logged, you get peek output reconstructed from terminal state. Instead of wrestling with shell escaping every time you need to inject input, you get a literal send --text flow plus named control keys.

This is exactly the kind of product decision that matters more than adding ten more features. The repo is not trying to become a giant terminal ecosystem. It is trying to make a specific loop, running an interactive session headlessly and observing it reliably, much less fragile.

That makes boo feel relevant beyond terminal nerds. It is useful for CI-adjacent local workflows, remote task management, debugging long-lived commands, and especially for AI agents that need to interact with programs in a way that stays inspectable.

Why I think the scope is well judged

One thing I like about boo is that it does not pretend to out-tmux tmux. The project explicitly keeps a screen-like model: one session per task, a simple prefix system, and a dedicated boo ui for juggling sessions. It is not chasing panes, plugin ecosystems, or a giant configuration surface.

That restraint gives the tool a clearer identity. If your main problem is intricate pane choreography, tmux is still the obvious answer. But if your problem is that detached interactive sessions become hard to reason about, especially for automation, boo is aiming at a more specific and arguably newer pain point.

That is a product-minded choice. It is easier to explain, easier to adopt, and easier to evaluate. The tool knows what job it wants to do.

The implementation details are unusually builder-friendly

The repository is also appealing because it is not hiding the machinery. The architecture section is straightforward: your terminal talks to a client, the client talks over a Unix socket to a daemon, and the daemon owns a PTY-backed child process plus a persistent Ghostty-powered terminal model. That makes the design legible.

The automation behavior is similarly concrete. The README spells out machine-readable output, explicit exit codes, idle waiting, and structured state reporting. For anyone building tooling on top of terminal programs, those operational details are the difference between a cool demo and a tool you can actually trust.

I also like that the project is written in Zig. Not because every infrastructure tool needs to be, but because the choice matches the product goals: a compact native binary, predictable behavior, and a tight systems-level implementation around PTYs, sockets, and terminal state. It feels coherent rather than trendy.

Where the boundaries are

boo is still early, and the repo is honest about that. It is not yet a drop-in GNU screen replacement. There is only one attached client per session. There are no splits or multiple windows inside a session. The Ctrl-a prefix is not configurable yet. Sessions currently run with TERM=xterm-256color.

Those are real limits, but they do not weaken the pitch for me. In fact, they make the repo easier to take seriously because the scope is explicit. boo is not trying to win every terminal use case on day one. It is trying to prove that better state fidelity plus better automation primitives can make detached sessions much more usable.

That is a credible, focused thesis.

Why builders should care

The interesting thing about boo is not just that it is another terminal multiplexer. It is that it treats terminal state as a product surface.

That sounds subtle, but it matters. A lot of developer tools still assume the terminal is either a direct human interface or a raw stream of bytes. boo sits in the middle and says the rendered screen itself should be durable, queryable, and automation-friendly. That is a useful shift in perspective, especially now that more workflows involve background tasks, remote execution, and coding agents bouncing between commands.

If you build infrastructure for developers, there is a good lesson here. Sometimes the win is not inventing a new workflow from scratch. Sometimes it is identifying the weakest layer in an old workflow and replacing it with a more truthful model plus a smaller, better automation API. That is what boo appears to be doing.

For that reason alone, it is one of the more interesting recent terminal-tool repos I have seen.

Repo

GitHub: https://github.com/coder/boo