History ⌘Y
One history across all your Macs. Search every Claude and Codex session you ever ran. Resume it where it ran, continue it on another Mac, fork it, or hand it from Claude to Codex.
Hesper runs Claude Code and Codex on your laptop, the Mac mini under the desk and the Studio in the office. Every agent is a live terminal tile on one wall. The ones that need you are one key away.
Free and MIT licensed. macOS 14 or newer, Apple Silicon and Intel, signed and notarized. Nothing leaves your machines.
$ brew install --cask derzierau/hesper/hesper⌘J jumps to the next agent that needs you: approvals first, then questions, then errors. Allow, always-allow or deny right on the tile. Tiles never move to get your attention; the one that needs you lights up.
$ claude "add a users table" read migrations/ write migrations/0042_users.sql
Try it: press to jump to it, then to allow.
Every agent is a live terminal tile. ⌘J jumps to the next one that needs you: approvals first, then questions, then errors. ⏎ A N answer it right on the tile.
Start an agent on any Mac from any Mac. Move or fork a running agent, with its uncommitted changes and its conversation. One ⌘Z moves it back.
Native AppKit on libghostty, no web view. MIT. A single Mac needs no relay. Several Macs talk through a relay you host, encrypted so the relay cannot read or forge anything.
Hand off a running agent. Continue on another Mac checkpoints the worktree (staged, unstaged and untracked), sends only the changes, sealed, and resumes the same Claude or Codex conversation there. One ⌘Z moves it back. Fork keeps the original and starts a twin. If the other Mac lacks the folder, Hesper brings it along.
laptop
reading internal/api/routes.go running go test ./internal/api/
sealed
never your branches or index
mini
reading internal/api/routes.go running go test ./internal/api/
Try it: press to continue on the mini, to move it back.
A native AppKit app on libghostty, a small Go daemon per Mac, and a budget for every hop.
| Measurement | Condition | Result |
|---|---|---|
| Keystroke to frame | local agent, p50 | 2.7 ms |
| Wall frame rate | 16 live agents | 120 fps, 0 dropped |
| Remote keystroke echo | same LAN / via relay | 0.4 ms / 45 ms |
| Daemon CPU | 30 idle agents, 2 s window | 0.15 ms |
| State change on another Mac | to your wall, p50 | 22 ms |
One history across all your Macs. Search every Claude and Codex session you ever ran. Resume it where it ran, continue it on another Mac, fork it, or hand it from Claude to Codex.
Review what came back. Finished work from every Mac in one inbox, as a native diff in reading order. See the commands the agent ran and which turn wrote each line. Accept, reject or send it back with notes.
New in 0.2.0.
The CLI drives Hesper from a shell. The same commands are MCP tools for Claude Code and Codex, and an agent skill teaches them to fan work out to more agents.
# start an agent on another Mac, in its own worktree$ hesperctl new --machine mini --worktree "add rate limits to /login"mini/a7f3k2 api starting# block until it needs you$ hesperctl wait a7f3k2 --until needs-youa7f3k2 needs-you Allow edit to 0042_users.sql?# the same commands as MCP tools$ ./install.sh --mcpregistered hesper with claude and codex
hesperctl reference prints the whole CLIhesperctl mcp serves it over stdioskills/hesper teaches Claude Code and Codex to delegate and waitEvery request is signed by a key in your Mac’s Secure Enclave and checked by the receiving Mac. Terminal traffic is encrypted between your Macs with pinned keys. Macs on the same network skip the relay.
Your Macs talk Noise_IK_25519_ChaChaPoly_BLAKE2s to each other, and controllers rekey every hour for forward secrecy. A single Mac needs no relay at all.
Swift 6 and Go 1.25, MIT licensed.
Hesper is young and used daily by its author. Every number on this page has a measurement behind it, and every claim is in the README.
$ brew tap derzierau/hesper https://github.com/derzierau/hesper.git$ brew install --cask derzierau/hesper/hesper$ /bin/sh /Applications/Hesper.app/Contents/Resources/hesper-setup.sh$ open /Applications/Hesper.app
Then run /hooks once in Codex.
A single Mac needs nothing more. Several Macs talk through a relay you host; it needs a public DNS name and a GitHub OAuth app. The deployment guide walks through it.
Prefer a zip? Signed and notarized builds for Apple Silicon and Intel are on the releases page.
Current release 0.3.0