For developers running Claude Code, Codex or OpenCode on a Mac

Agents say done. Hesper checks.

Run your coding agents side by side in one Mac window. When one says “done”, Hesper runs your tests and sends the failures back before you ever look.

Works withClaude CodeCodexOpenCodeand any CLI agent

Hesper 1.2 runs today. Invites go out in small batches, one email when yours is ready. macOS 15 or later. Three releases in six days · changelog

FIG. 01 — THE WORKSPACE · PRESS 1, 2 OR 3 TO ANSWER CODEXFIG. 01 — THE SIDEBAR

“Coding agents are pretty good at telling you they finished something they didn’t actually finish.”

RaysonTech, Hacker News

Tests pass? Hesper runs them anyway.

When Claude Code says it’s finished, Hesper holds the finish and runs your test command in that task’s own copy. If tests fail, the failures go back to the agent, up to twice, before the task ever reaches you.

Still failing? You see exactly why: which tests, and whether the agent edited them. Keep anyway stays on the card. The call is yours.

No test command set? The row says untested instead of pretending.

Ready to review

Empty state copyClaude · proven · 31m
Coupon codesClaude · fixing 2 failing tests
Retry on flaky uploadClaude · not proven · 9m

✕Not proven: tests fail 2 of 42 fail · 2:41

Your summary said tests pass. Tests were edited in this session; 3 assertions were removed.

Keep anywayAsk the agent to fixOpen review

Ask the agent to fix

Hesper ran pnpm test: 2 failing (auth.spec.ts:41 “refreshes an expired session”, toolbar.spec.ts:18 “applies the colour”). Your summary said tests pass. Tests were edited in this session and 3 assertions were removed in toolbar.spec.ts; put them back. Fix the code without editing the tests.

Sent as a normal message to the agent · secrets masked · nothing from outside this session

Cancel EscEditSend ↩

FIG. 02 — THE PROOF CARD, AND THE MESSAGE IT DRAFTSFIG. 02 — THE PROOF CARD

Stop tab-hunting. The agent that needs you comes first.

Every agent from every project in one list, with one mark for what it’s doing: asks, working, done, stopped. The ones waiting on you rise to the top, Claude and Codex approvals included. The Dock badge only counts agents that are truly blocked.

New agent⌘T

Resume⌘R

api

Pricing questionasks
Rate limiter21m
Coupon codes7m
Billing webhookproven
README refreshdone

web

Flaky teststopped
Dark mode togglereconnecting
Empty state copydone
Old spike

api · Claude Codeasked just now

Pricing question has a question.

Which plan should the pricing page show first?

Later NOpen its terminal A

FIG. 03 — THE SIDEBAR · ANSWER THE CARD WITH 1, 2 OR 3

Answer with the agent’s real options, from whichever window you’re in. It carries on. You don’t go hunting for the right terminal.

Out of Claude? Keep the conversation.

Hesper reads every account’s usage and says when the limit lands at this pace. If it lands before the reset, the agents you looked at least wait at their next turn end, so the rest can finish.

Or carry the same conversation, terminal and copy of the project on to another account, without logging in again.

Each account logs in with its own login, in its own home. Credentials never move between them.

At this pace the 5-hour limit is reached in ~40 min (resets 14:30).

Continue on Personal

Same conversation, same terminal, same copy of the project. Claude picks up where it left off.

Offered when the limit is close. The current turn finishes first.

Claude

✓Work Max · you@acme.devin use · resets 14:306% left · 5-hour59% left · week
Personal Pro · you@gmail.com62% left · 5-hour88% left · week

Codex

Personal Plus · you@gmail.com80% left · 5-hour45% left · week
Team Team · you@acme.dev71% left · 5-hour64% left · week

+ Add account…New launches use it now ⌃⌘A

FIG. 05 — ACCOUNTS · THE SAME NUMBERS AS /USAGE, PER ACCOUNT

Also in the box.

  • ⌘T

    New agent. Claude, Codex, OpenCode or a shell, with the model and effort, from one box.

  • ◇

    What the agent assumed. Before you keep a task, Hesper lists its guesses. Change one and it tries that in a second copy; keep whichever passes.

  • ⌘Z

    Undo. Every turn is saved, so a wrong guess costs one step, not the work.

  • ✳

    A copy per task. Each agent works in its own copy of the project, ready to run.

  • @

    Agents ask each other. By name; across trust lines, it waits for your OK.

  • ⏻

    Crash recovery. Quit Hesper, or crash it; the agents keep running.

  • ♪

    Sounds. Off by default. One soft note when an agent is ready or truly blocked.

Hesper has no server of its own.

Each agent talks to its own service, as it does in your terminal today. No account, no telemetry in v1. The update check asks GitHub for the latest release and sends nothing about you.

  • Your logins stay with the agents. Hesper opens each one’s own login and never sees a password or token.
  • Secrets live in the Keychain, per project.
  • Test and build commands always ask before they run.

I build Hesper with Hesper, four to six agents a day. What I wanted wasn’t more agents. It was to stop checking on them, and to stop finding out at merge time that “tests pass” meant the tests had been edited. So I built the part that checks.

Pradipta Putramaker of Hesper, built with Hesper GitHub · @PradiptaPutraChangelog

Released so far

  1. 1.0Proof card. Terminals keep running when you quit Hesper. Continue on another account.
  2. 1.1Agent sidebar and stage. Answer from anywhere. Ready-to-run task copies. Undo after every destructive action.
  3. 1.2Stop babysitting: “done” is checked before you see it, failures go back to the agent, limits let the rest finish.

Questions people ask before trying it.

What leaves my machine?

Nothing through Hesper. Each agent talks to its own vendor exactly as it does in your terminal. Hesper has no server, no account and no telemetry in v1.

Is Hesper just a wrapper?

It runs the real claude, codex and opencode CLIs in real terminals; nothing is re-implemented. What Hesper adds is around them: one list of who needs you, approvals bound to each request, a checkpoint every turn, and a test run before any task is called done.

Which agents work?

Claude Code, Codex and OpenCode out of the box, with their own logins and subscriptions. Any CLI agent can be added as a custom agent (Gemini CLI, Aider and others).

Does it work with my GitHub or GitLab?

Yes. Branches, history, push and open pull or merge requests with your own gh login. When a PR is merged, Hesper tidies the copy away.

Can I use it now?

It works today; it’s how Hesper itself is built. Invites go out in small batches so each person gets set up properly. Join and you get one email when yours is ready, nothing else.

How do I start?

Your invite comes with a disk image: drag Hesper to Applications, open it, point it at a folder. First run takes about two minutes: it finds the agents you have, opens their own logins, and gives your first agent a small task in a separate copy of the project.

What does it cost?

Not decided yet. Early access needs no account to run, and joining commits you to nothing. You’ll see the price before you pay anything.

Why not Claude’s own agent view, or Orca?

Claude’s agent view groups Claude sessions. Orca runs many agents well, and does things Hesper doesn’t: a built-in browser, a phone app, open source. Hesper’s bet is narrower: one list across vendors, and your tests run before any task is called done. If you use one vendor and never hit a limit, you may not need Hesper.

What Mac?

macOS 15 or later. Native Swift, no Electron.

Let them work. Hesper checks.

One quiet Mac window for every agent you run. Invites go out in small batches.

One email when your invite is ready. No newsletter. Unsubscribe with one click.