A home for your agent.
A Mac app where your coding agent lives: a real browser it drives, an iPhone in the window, chats that survive restarts, your phone in the loop. Open source, on the subscription you already have.
Works with Claude Code, Codex and Antigravity · switch per chat
⬇ Download for Mac · Website · Apple Silicon · free & open source
Your agent already writes the code. Superagent gives it a place to work — and gives you a place to watch. Every project is a chat sitting next to the thing being built: a real browser on the sites you're already logged into, the files it's editing, an iOS Simulator streamed straight into the window. Every chat works in its own copy of the project, so nothing collides. And when you leave the desk, the iPhone app follows the conversation and lets you answer the agent's questions from anywhere.
Everything runs locally on your Mac, on the agent subscription you already have — Claude Code, Codex or Antigravity, switchable per chat. No middleman server, no API key, no AI of its own — and the whole app is open source, so you can read exactly how it touches your browser.
For Antigravity, install the agy CLI and run agy in Terminal to sign in with
Google, then select Antigravity in the chat’s agent picker. Its model picker
reads the models available to your account.
TestFlight, or build it from source — see its README.
- Ask mode. A permission mode where the agent checks with you before it acts — on the Mac, or on your phone if that is where you are.
- More than one Mac. Switch between paired Macs from the title at the top of the phone app; it reopens on the one you picked last.
- Private by construction. Everything between the phone and the Mac is end-to-end encrypted with a per-device key from the pairing QR. Both sides dial out to a tiny blind relay (superagent-relay) that forwards ciphertext and stores nothing, so it works behind any network with no setup. Run your own with one command and change the URL in Settings → Phone.
- Connects only when it is used. The Mac opens its relay connection when a phone is paired or being paired. An install that never pairs a phone never connects anywhere.
- Every chat is its own checkout. A new conversation gets a private copy of the project on its own branch, cut on its first message and named after what you asked for. Keep folds its work back in as one change; Throw away deletes it. The project row keeps a conversation that works in the folder itself, for when that is what you want.
- A board the agent keeps. Backlog, next, doing, done — per project, and Claude moves the cards as it works. Watch them move while you talk to it.
- A plan you can steer. When the agent writes itself a to-do list, it shows up pinned above the conversation — tap a pending step to send it straight back as the next thing to work on.
- Routines. "Check this site every hour," in plain language, on a timer.
/loop, self-paced. Ask it to keep going — reviewing, testing, refining — and it decides its own pace between rounds instead of you re-prompting it every few minutes.- Dashboard. Turns per day, tasks done, a streak — and which projects actually got your time. Computed locally.
- Every project shows what it is. A website's favicon, a native app's own icon from its Xcode AppIcon, or a glyph for a screenplay, design or music folder — pulled straight off the project's own files, even inside a folder that holds several repos. It shows in the sidebar and next to projects and conversations in ⌘K. Pick your own any time.
- Several repos, one row. A project folder that holds several repos folds them away under a caret on its own row, and remembers whether you left it open. A repo that is still cloning says "cloning…".
- Files & PDFs. Click any file to read it — PDFs, images, markdown, source — right beside the tree; annotate PDFs in place; drag files into the chat.
- A screenshot lands in the chat, not just a link to it. When a tool call produces a picture — a simulator screenshot, a page it read — it shows up inline, right under the step that made it. Images the agent puts in its reply show as small previews; click one for full size.
- Snip to attach. ✂ on the browser or the simulator (or ⌘⇧S): drag a box right on the page or the phone screen and the crop lands in your message, at full resolution.
- Multiple browser tabs per chat. Open more than one page without leaving the conversation — switch between them the way you would in a real browser. The agent keeps its own tab, so one you opened to look something up isn't taken over by its next navigation.
- A real phone size. The agent can switch the browser pane to a real 390×844 mobile viewport, to desktop, or to both side by side, so it checks a mobile layout at that size instead of faking one.
@reaches everything. Type@for this project's files, the other projects in your sidebar by name, or any folder on the disk (@/,@~/) — and drill into folders one level at a time.- Context gauge, and what it's costing. Every conversation shows how much of the context window it has used, and a running token count for the turn and the session — updating live while the agent works, not just at the end.
Turn on Beta updates in Settings → About to get these. They reach everyone when they are ready, and may change before then.
- The dot: the best agent is the one that disappears. Turn it on in
Settings → General (or while setting up), close the window, and Superagent
goes on working; what is left is a small tile in the corner of your screen,
over every app. Press
⌥ Space(or⌃⌥ Vto say it out loud) and ask: a question, a job, or the app itself. "Go to the wepush chat about e2e testing." "What's running?" "Start a chat in the portal to fix the header." It finds a conversation from how you describe it and brings the window back on it. Its project list is a switcher too: find a project,⌘↩, and you are there; "switch to the portal", said to the dot, switches the dot itself and leaves the window alone. It tells you when a job is done, window or no window. And it gets out of the way: hidden while Superagent's own window is in front, and faded to an ember when nothing is going on, until the pointer finds it.⌃⌥ Sbrings Superagent forward from anywhere. - Computer use, off until you turn it on. An agent can see the screen, read
an app's controls by name, and press, fill, click and type in other apps,
for the things that have no command line.
- It asks first: for the Mac, again for each app, and every time before anything named Quit, Delete, Send or Pay, before reading your clipboard, and before pasting what you copied. "Ask before each step" puts every click and keystroke to you in words.
- It stays out of password managers, Keychain, password prompts, the lock screen, Superagent itself, and any app you list. An app can be "look only". "Show it only the apps you allowed" covers everything else in its screenshots.
⌥ Escstops it from any app. A ring shows where it is about to click, and there is a record of what it did.- Those questions are answered at the Mac: a paired phone can say no, never yes.
- It is a beta of something powerful. The safeguards are layers, not a proof: an agent also has a shell of its own, and the guard on that is a list of known ways round. Start with "Ask before each step" on.
- Replies that arrive. A reply comes in a word at a time, each word out of a blur into focus, at an even pace however unevenly the agent sends it, and never half a word. In the chat, in the dot, and on the phone.
- Quieter loops. A round of
/loopshows as a small note marked Loop, with what you asked and none of the instructions the agent gets with it. - A name you gave a chat stays. Neither the first message nor the agent's own summary renames a conversation you named.
- A tour of how it works when you set up, and again any time from Settings → About.
- Setting up asks how it should behave. Four decisions, once: what happens when an account runs out (ask, or switch on its own), whether agents keep working with the lid closed, the dot, and computer use. Left untouched, nothing changes; all of it is in Settings afterwards.
- Chat pictures, kept. Every picture sent in a conversation in one place, by day, each one a click from the message it came with and a click from your Downloads.
- Everything survives a restart — panes, open files, active chat — even through updates.
- Never steals your focus. Agents finish quietly in the background; the window comes forward only when you ask.
- Light on memory. Sessions start on your first message and wind down when idle; preview panes are released when a chat is in the background.
- Interject mid-turn. Type while the agent works and it sees your message before it finishes — like the terminal.
- Notifications that say something — done or has a question, with a summary of the agent's actual last reply.
- Many chats per project. They name themselves after what the conversation turned out to be about. Starting a new one never loses the old.
- Talk instead of typing. Hold ⌥Space, speak, let go. Your voice is transcribed on your own Mac and never leaves it.
- Quiet by default. A burst of activity folds into one line you can open, instead of a wall of noise. Consecutive messages sent moments apart cluster together, iMessage-style, instead of every bubble standing on its own.
- See every edit the moment it happens, with just the change highlighted.
- Model and mode pickers that match Claude Code's own. The model list is read from the Claude Code you have installed, so a new model shows up without an app update, and "Default" says which model it actually is. The agent picker shows the real Claude and Codex logos.
- Stop actually stops. Interrupting a turn kills the whole job it started — a build, a dev server — not just the agent process sitting above it.
- Quit means quit. Quitting Superagent stops everything it started: chat agents, their background tasks, and routine runs.
- Light when idle. The pulsing status dots no longer redraw the window every frame, so an idle window uses much less CPU.
- Logs you can clear. They are the app's own notes for finding a fault, nothing of yours; Settings → Advanced → Storage clears them, and a memory snapshot from a crash is removed after a week.
- See what's using the space. Settings breaks storage down by project, so clearing an old conversation's history is a click, not a guess.
- Updates itself. Signed, notarized, delivered in the background — restart when it suits you, with a "What's new" for each release.
- Light and dark, following your system.
- A Mac with Apple Silicon.
- Claude Code, installed and signed in. Your subscription is the only thing Superagent runs on — nothing extra to buy, no key to paste.
- Xcode, only if you want the simulator.
- An iPhone with the companion app, only if you want your phone in the loop.
Network, in full: Claude Code's own connection to Anthropic; a check of this repo's releases for updates; the Whisper model for push-to-talk dictation, downloaded from Hugging Face the first time you hold the key and cached after that (the transcription itself never leaves the Mac); and — only once you pair a phone — one outbound connection to the companion relay (the project's by default; swap in your own in Settings → Phone). Nothing else leaves the machine.
| superagent-desktop | this app — Electron, TypeScript, React |
| superagent-ios | the iPhone companion — SwiftUI |
| superagent-relay | the blind relay between them — a Cloudflare Worker, also runs as plain Node |
All of them in one place: github.com/pungme?q=superagent.
cd app
npm install
npm run devnpm test runs the unit tests, npm run test:e2e builds the app and drives it
with Playwright. Contributions welcome — see CONTRIBUTING.md.
- Other agents. Superagent wraps Claude Code today, but in the end it's an LLM driving a home — the plan is an agent layer that other CLIs and local models can plug into.
- A desktop. A workspace that behaves like a real computer: several things open at once — browser, files, a terminal, a simulator — arranged the way you left them, with the agent working across all of them.
- Memory that writes itself. Your agent relearns the same things in every new session — your conventions, a project's traps, which command actually deploys. Superagent should notice those and carry them across projects, in a list you can read, edit and delete.
- Watchers. Routines already run on a schedule and the browser already reads pages. Point one at a page and get told what changed, with a before and after.






