A terminal multiplexer for coding agents.
Run many agents at once, and see the one that needs you.
Install
Docs
Agent setup
Changelog
More and more terminal work runs at the same time: coding agents on different tasks, a dev server, tests. Close the window and the work stops. Restart the computer and you set it all up again by hand. And an agent can wait an hour for your answer, in a tab you don't see.
With hive, your sessions keep running when you close the app, and they come back after a restart. You see every agent in one place, and the ones waiting for you come first. Everything you can do in the app, a script or an agent can do through the same API.
- Keeps your sessions. Close the app, stop the server, or reboot. Layouts, scrollback and working directories come back.
- Knows your agents. Claude Code reports what it is doing and when it needs you. After a restart, each agent continues its conversation.
- Has an API for everything. The app, the
hiveCLI, your scripts and your agents all use one self-describing API. - Feels like a normal terminal. It draws terminals with Ghostty's terminal engine. Scrolling and selection are native, with no copy mode.
- Reaches your other machines. Run hive on a Linux box or another Mac, and its sessions sit next to yours. It connects over Tailscale.
- Works from your phone. hive for Android shows the same sessions on your phone, and you can answer an agent from a notification.
- Talks only to your machines. There is no account and no telemetry.
Download from Releases:
| File | For |
|---|---|
hive-VERSION-macos-arm64.tar.gz |
The server and the CLI, on macOS with Apple Silicon |
hive-VERSION-linux-amd64.tar.gz |
The server and the CLI, on Linux x86_64 with glibc 2.28 or later |
Hive-VERSION-macos-arm64.zip |
Hive.app, for macOS 14 or later |
hive-VERSION-android.apk |
hive for Android 10 or later |
SHA256SUMS |
Checksums of the files |
Hive.app isn't signed with an Apple Developer ID yet, so macOS asks you to approve its first launch. Installation shows how, how to check a download, and how to build from source.
Paste this into Claude Code, Codex, or any coding agent:
Fetch and follow the instructions at
https://manueltarouca.github.io/hive/agent-setup/prompt.md
to set me up with hive.
The agent installs hive and its skills, connects Claude Code, and can move your tmux sessions over one window at a time. In Claude Code you can add the skills as a plugin yourself:
claude plugin marketplace add manueltarouca/hive
claude plugin install hive@hiveThen /hive:hive drives hive, /hive:hive-setup sets it up, and
/hive:hive-from-tmux moves tmux sessions over. Update them with
claude plugin update hive@hive.
hive new work --cwd ~/src/app # a session; starts the server if needed
hive -s work split --split below -- htop # a pane under the current one
hive -s work run --label tests --wait -- go test ./... # exits with the tests' status
hive -b tests capture --tail 5 # the last lines it printed
hive ls # every sessionInside a hive terminal, commands act on that terminal's own session and pane,
so you rarely need -s or -b.
A stopped server, a crash or a reboot ends the programs, but not the
sessions. The next hive command brings back every session with its layout
and labels. Each pane gets its screen and scrollback, a ── restored ── line,
then a shell in its last directory, or its agent, resumed in that shell.
Other programs are not run again.
hive agent install claude # add hive's hooks to Claude Code
hive agents # every agent, the ones waiting for you firstSTATE HARNESS SESSION BLOCK DIR SINCE MESSAGE
blocked claude api-gateway …a29f3 ~/src/api now Claude needs your permission to use Bash
working claude hive-demo agent ~/src/hive 2m ago
hive agent uninstall claude removes the hooks again. After a restart, each
agent pane resumes its conversation: claude --resume, codex resume,
opencode -s, gemini --resume or grok --resume.
More about agents.
The CLI wraps a JSON API, on a Unix socket and on your tailnet, and the server describes it:
hive api list # every method
hive api describe session.new_split # its arguments, as JSON Schema
hive events -s work --json # a live stream of what happensCommand names, method names and exit codes are stable: they break only in a new major version. See the CLI and the server API.
A hive server on another machine works like the one on your Mac. Start it with a listener on your tailnet, then add it:
hive server start --tailscale --tailscale-hostname box # on the other machine
hive hosts add box https://box.example.ts.net # here; your tailnet's name
hive -S box ls # any command, on that machineHive.app shows every host's sessions in one list. On Android, add your hosts by scanning the code from Hive → Share Hosts with Phone. Remote hosts and hive on your phone have the details.
One Go program, hive, is both the server and the CLI. The server owns every
terminal: a PTY plus a headless copy of Ghostty's terminal engine
(libghostty-vt). It saves layouts
and terminal snapshots to disk. The Mac app (Swift, AppKit, Metal) and the
Android app mirror each terminal through an ordered byte stream and draw it
themselves. ARCHITECTURE.md has the details.
You need Go 1.27 and Zig 0.16 exactly (Ghostty's build refuses other versions). The Mac app needs Xcode 27 to build.
brew install go zig@0.16
git clone https://github.com/manueltarouca/hive && cd hive
make vt # once: builds Ghostty's terminal library
make build # ./bin/hive
apps/macos/script/bundle.sh && open apps/macos/build/Hive.appInstallation covers Linux and the Android app.
hive is young. The server, the CLI, the Mac app, remote hosts and the Android app work, and Claude Code has the deepest integration. Planned next: scripts and key bindings that run inside hive.
See CONTRIBUTING.md. Report security problems privately, as SECURITY.md says.
hive stands on Ghostty's terminal engine and Tailscale, and uses JetBrains Mono, Inter and Noto.