Get started free
Supervise

It proposes. You approve. Nothing lands until you've read the diff.

Every agent starts in plan mode: it reads, writes a plan, and waits. You approve, steer, or reject — and its finished work sits on its own branch until you have read every hunk. You keep it sharp by curating what it knows, not by nagging it.

The docked chat: the agent's thinking block, a Read tool call, a four-step plan for adding Stripe checkout, and two buttons: approve, or keep planning.
  • every agent reads, proposes, then waits for you
  • how much it may do unattended, per turn
  • one button each; nothing lands by surprise

The plan is the contract

Before it edits anything, the agent shows which files it will touch and what it will do to each. Approve it and the plan becomes a to-do list you watch.

  • Thinking, tool calls and to-dos stream as they happen, never summarised after the fact
  • Steer mid-turn: a message lands in the running turn instead of queuing behind it
  • The same conversation on your phone — an agent that stops at 11pm is one tap from unblocked

Permission is a dial, not a switch

The same conversation can be strict on a migration and loose on a changelog — the composer's mode pill sets how much the agent may do unattended, per turn. An approved plan is the exception: you have read what it intends, so it runs the lot.

Reviewed by file, not by wall of text

Finished work is grouped by repo with per-file line counts, so a 400-line change reads as six decisions. Comments attach to a hunk, and unread files stay marked until you have looked at them.

acme-shop · /workspace
The workspace Changes tab: five uncommitted files grouped by repo with their line counts, and the diff of one of them open beside the list.

The review boundary is a real branch

Landing replays the agent's delta onto your tree as ordinary git changes you can stage, amend or revert. Discarding removes the worktree and leaves your tree untouched. A land conflict comes back as an Attention card the agent can resolve.

One base commit, one branch each
agent/checkout-stripe

its own worktree, its own checkout

agent/soft-deletes

its own worktree, its own checkout

agent/latency-p99

its own worktree, its own checkout

land, one at a time, after you have read the diff

untouched until you land, and still yours to amend or revert afterwards

Steer it by what it knows, not by nagging

You can't make the model smarter; you can make it better equipped. Open the context it loads every turn — skills, runbooks, house style — and the systems it may reach, and the same prompt does a better job.

A prompt

a system prompt and a few .md files
  • Describes your tools. None are installed.
  • No reach into your codebase, data, or services.
  • Starts from the same blank context every run.
  • Hands you generic output you finish by hand.

The whole environment

a sandbox you can open and change
  • Its dev-tools and libraries are really installed.
  • Wired to your repos, databases, and services.
  • Curated context loads every single run.
  • Does the job end to end, shows its work as diffs.

One workspace, two operators

The editor, file tree, search and terminal aren't a viewer bolted onto the chat — they are the same surfaces the agent works through, so what it edits is what you open. Nothing reconciles your view with the agent's, because there is only one.

Surface
You
The agent
Search
the workspace search box
`iq` from Bash
Terminal
a docked terminal tab
shell commands
Files
the tree and the editor
Read and Edit
Network
the VPN panel
/usr/local/bin/vpn

One implementation per row. Nothing synchronises the two columns, because there is only one thing behind them.