You opened Shelley on your phone.
Your Mac had gone to sleep.

Shelley's whole idea is that the agent runs on your machine and you drive it from a browser — including from your phone, away from the desk. Which is exactly when macOS decides nobody's home and suspends the Mac your agent is running on. Here's why that happens and how to stop it.

To keep your Mac awake while Shelley runs: the free way is macOS's built-in caffeinate — put it in front of however you start the server (caffeinate -i shelley) and the Mac can't idle-sleep until the server exits. Because Shelley is a long-lived server, that means no idle sleep at all while it's up. AgentBarista (14-day free trial, then $19 one-time) instead holds sleep off only while there's real work happening — see the honest status below, because Shelley is new to us and it is not in our built-in list yet.

The direct answer

Why your Mac sleeps while Shelley is still working

Shelley, from Bold Software, is a web-based coding agent: a single binary you run on your own machine that serves a browser UI, stores conversations in SQLite, and streams updates to whatever device you have open. The team's stated reason for the single-user design is that it makes sense to "bring the agent to the compute" — and on a Mac, the compute is a laptop that sleeps.

macOS decides to idle-sleep from your idle time — how long since real keyboard or mouse input — and from the sleep assertions running processes hold. CPU load is not part of that decision, which surprises people: a Mac pinned at 100% still idle-sleeps on schedule. So an agent that's working hard doesn't protect itself, and driving that agent from a phone produces no input on the Mac at all. When the idle timer runs out, the machine suspends. The shelley process isn't killed — it's frozen with everything else, the SSE connection your browser was holding drops, and the turn that was in flight goes nowhere until you go back and wake the Mac up.

Two things make this sting more with Shelley than with a terminal agent. First, the pitch is specifically that you can start work from anywhere — the times you'd use that are the times the Mac is unattended. Second, if the way you leave the desk is closing the lid, that's a separate and harder problem: closing the lid doesn't consult the idle timer at all, it just sleeps. The supported way around that one is clamshell mode — on power, with an external display and an external keyboard or mouse connected.

The free option

Free tools can keep your Mac awake too

If you run Shelley now and then, you don't need to buy anything. Everything here ships with macOS or is free:

  • Wrap the server in caffeinate. Whatever command you use to start Shelley, put caffeinate -i in front of it — caffeinate -i shelley. The Mac can't idle-sleep for as long as the server runs, and normal sleep comes back by itself the moment it exits. Nothing to remember to undo.
  • Attach to a server that's already up. You don't have to restart it: caffeinate -i -w $(pgrep -n shelley) holds sleep off until that specific process ends. Check what you'd be attaching to first with pgrep -l shelley — if nothing matches, caffeinate just prints a usage error, and if you built from source or renamed the binary, confirm the name before trusting the match.
  • Amphetamine (free, Mac App Store) if you'd rather flip a menu-bar switch than type a command. Keeps the Mac awake on a timer or while a chosen app is running.
  • Free agent-aware tools exist too. Keepresso (free, GPL-3.0) and adrafinil (free, MIT) detect when an agent's turn starts and ends by hooking into the agent itself rather than guessing from CPU — for the agents they support, that's more accurate than any heuristic, ours included. Worth knowing before you pay anyone, including us.

The honest catch with a bare caffeinate, and it's bigger for a server-shaped agent than a terminal one: it doesn't know the difference between working and waiting. A one-shot command exits when it's done, so caffeinate -i claude -p "…" releases itself — but an interactive session sitting at its prompt holds sleep off just as long as a server does, and a Shelley server stays up for hours after your last turn finished. Wrapping it means your Mac simply never idle-sleeps while the server is running, and on battery that is how people come back to 0%. You can stop it yourself when you remember, or you can have something watch for actual work.

The purpose-built option — honest status

What AgentBarista does today for Shelley

Straight answer: Shelley is not in AgentBarista's built-in agent list yet — we found it on 3 August 2026 and this page went up the same day. You can still use it today by adding shelley yourself under Settings → custom apps, which is the one place AgentBarista still matches on a name rather than an exact catalog entry. A custom app is trusted on CPU: when the process and its children are busy above the work threshold (8% by default), that counts as real work and your Mac is held awake, with a 90-second grace window before it lets go. What that does not cover is the long, silent model wait — network time at near-zero CPU. For some agents in the built-in list we catch those from session-file timestamps, and we have not looked at Shelley's SQLite storage to see whether it gives us a signal that's true only while work is happening. One more thing worth naming rather than letting you discover: Shelley's UI lives in a browser tab, browser watching is off by default, and the phrases it looks for come from other products' web UIs — so it is not looking for Shelley's screen. Treat Shelley as usable-via-custom-app today, not verified.

Works today, with one step

Add shelley as a custom app in Settings and its CPU counts as work — the same path any tool we haven't catalogued yet takes. No permission needed for this part.

The gap we'd rather name

CPU alone misses a long model wait. No session-file signal for Shelley yet, and the browser UI isn't a text source we read. Short gaps are covered by the grace window; a five-minute silent turn may not be.

Has a safety net regardless

A battery cutoff, plus a one-click restore — it asks for your password once — for the rare case a crash leaves sleep disabled — true for every app AgentBarista watches, catalogued or custom.

Shelley (custom app today, not in the built-in list) Claude Code Cursor Codex Gemini CLI Copilot CLI OpenCode Zed Antigravity Claude ChatGPT + more

It runs on your Mac.

AgentBarista never opens your files. To tell a working agent from a finished one it looks at process command lines and CPU, at the names and modification times of your agents' session files, and — only if you grant macOS Accessibility permission — at the on-screen text of the agent apps you enable and of the terminals we support. Two of those can contain your own words: a command line includes any prompt you pass on it, and on-screen text includes whatever is visible in that window, your code included. Both are matched against status phrases on your Mac and discarded on the spot: never stored, never sent. Nothing about your work leaves your Mac — no file contents, no code, no prompts, no file names, no activity data. Your stats and settings stay on this Mac. The app contains no analytics or telemetry of any kind. Its one network call is license validation, sent to our payment provider, Lemon Squeezy: activating a license sends your license key and your Mac's name, and the routine check after that sends your license key and an anonymous instance id — nothing else.

Pricing

Try it free, then keep it. No subscription.

Pro, one-time
$19 once
  • 14-day free trial, no card needed
  • $15 founding price for the first 200 customers
  • Includes 1 year of updates
  • Lifetime option: $39 once, updates forever
Get notified at launch

Not live yet — leave your email and we'll ping you the moment it is.

Running agents across a team instead? See team pricing.

More agents

Also running Claude Code, Codex CLI, or another agent?

Same Mac-goes-to-sleep problem, different tool. Each of these guides covers the fix for that agent specifically: