Pre-release · masterOpen source · Apache-2.0 · For the pi coding agent

Every agent session, one calm workspace. On your desk, or folded in your pocket.

A browser workspace for the pi coding agent. Hand work to subagents you can follow, and read every change as steps before it lands.

curl -fsSL https://raw.githubusercontent.com/Naomarik/sova/master/scripts/install.sh | bash

Then run sova, and sova open. Needs Git and Node.js ≥22.19.

Sova on a desktop: the sessions sidebar with 2 sessions that need you, the Retry policy session in Delegate mode waiting on its 3 workers, and the session detail pane's Agents tab with the working worker's transcript.
On your desk
Your sessions, read in place
~/.pi/agent
Loopback by default
127.0.0.1:4800
One token per install
sova/auth-token
Open source
Apache-2.0
Off the desk

Not chained to your desk.

Sova is one web app at every width: pair your phone once by scanning a one-use QR code, install it to the Home Screen, and a session that needs you reaches your lock screen. Folded or open, the same session follows you.

What you get

More work, less window switching.

For people who already run coding agents. Your pi sessions, logins, and extensions come with you.

01 Delegate

Hand the work to subagents. Follow every one.

In Delegate, a session's agent becomes an orchestrator: it sends each kind of work to the model you routed it to. Every worker opens in the side pane with its own transcript.

The shipped routes use Claude Code models, so install the claude CLI or pick your own in Settings → Subagents.

Delegate docs

The Agents tab beside a Delegate session: 3 workers with their model, tokens and state, and the working worker's transcript: its task, a read, 2 edits and a new test file.
02 Alignments

Agree on the plan before anything gets built.

With align on, the agent works out what to build with you first, and records the approach, the alternatives it rejected, and its open questions, each with a recommendation. Answer with just “1a”.

Alignment docs

An alignment card in the chat: what the agent found, its approach, a rejected alternative, and an open question with 2 options and a recommendation.
03 Worktrees and changes

Review every change as steps.

Ask what changed and the agent lays it out as numbered steps, each with a line on why, and no hunk left out. A session also keeps track of the git worktrees it works in.

The changes viewer only reads, and Sova never removes a worktree on its own.

Worktrees and changes docs

The changes viewer: 3 numbered steps, each with why it was made, and the first step's diff.
04 Needs you

Know which session needs you, even away from the desk.

The Needs you list shows every session waiting on you: a question, an error, a failed worker. The Overseer, a session that reads all the others, can tell you what needs you, start sessions, or send them prompts.

The list costs no tokens. The Overseer has no shell and edits no files.

Needs you docs Overseer docs

The Overseer page after asking what needs you: a card that lists 2 finished sessions, each with why, and asks before archiving them.
05 On your phone

Check in from your phone.

Pair once by scanning a one-use QR code, then answer a question, steer a turn, or start a session. With notifications on, a session that needs you reaches your lock screen.

Sova listens on 127.0.0.1. For a phone to reach it, use tailscale serve or your own HTTPS proxy. On iPhone, add Sova to the Home Screen for notifications.

Phone docs

The Access page on a phone: a one-use pairing code, its QR and the link to open it.
A session on a phone, waiting on an open question with 2 options and a recommendation.
And the rest

Small things that add up.

  • Rewind, regenerate, fork, steer

    Rewind to before any message you sent, regenerate or fork from a reply, steer a running turn without stopping it, or switch models mid-session. The context you built stays.

    Changing direction, in the docs

  • Claude logins, with failover

    Use Claude Code's models in chat and in workers, across several logins. A session or worker that hits a usage limit moves on to the next one.

    Needs the claude CLI installed and logged in.

  • A sandbox per session

    On runs a session's bash in an OS sandbox and checks file tools against the same policy. The default keeps a worker in a worktree writing only there.

    It contains an agent's mistakes, not hostile code, and it hasn't been audited.

  • Playbooks and schedules

    Markdown recipes an agent runs against a project, picked from the composer or run on a schedule. Sova ships 5.

    A schedule fires only after you approve it.

  • Share a session

    A read-only link to a session or part of it, as a snapshot or live. You see who opened each one.

    Needs an address you set up (how). Recipients need no account.

  • And more

    Voice input, tools on your SSH or Docker targets, usage and load pages, and model rules.

    More in Customization

Beyond one machine Preview

More hosts, more people.

Each needs setup beyond the install.

Make it yours

18 themes. Yours is 1 JSON file.

Pick one in Settings → Themes, or save your own in ~/.pi/agent/sova/themes/. No rebuild, no restart.

// ~/.pi/agent/sova/themes/desk-lamp.json
{
  "name": "Desk Lamp",
  "extends": "dark",
  "vars": { "amber": "#ffb454" },
  "colors": {
    "accent": "$amber",
    "accent-tint": "#3a2f1c"
  }
}
  • Darkdark
  • Lightlight
  • Catppuccin Frappédark
  • Catppuccin Lattelight
  • Catppuccin Macchiatodark
  • Catppuccin Mochadark
  • Draculadark
  • Monokai Classicdark
  • Monokai Machinedark
  • Monokai Prodark
  • Monokai Ristrettodark
  • Nord Auroradark
  • Nord Classicdark
  • Nord Frostdark
  • Nord Lightlight
  • Tokyo Night Daylight
  • Tokyo Night Moondark
  • Tokyo Night Stormdark
How it works

One process that runs pi, on your machine.

A server with the pi coding agent embedded, plus a web app. It uses pi's own agent directory: your sessions, logins, and extensions.

Your browser

The desktop workspace, or the folded layout installed on a phone.

sova server

Hono and the pi SDK, on 127.0.0.1:4800 by default.

  • runs pi sessions
  • runs workers and the Overseer
  • checks the install's token

~/.pi/agent

pi's agent directory. Sova's own state lives in sova/.

  • sessions/*.jsonl
  • auth.json
  • extensions/
  • sova/

pi's terminal UI

Optional. A session it has open streams into Sova live, and stays read-only there.

Model requests go from Sova to your configured provider. Tools and extensions may use the network too.

What it touches.

  • Not a hosted service. It runs on your machine.
  • Not a team app. One person runs it; others see only what you share.
Install
~/.local/share/sova and a ~/.local/bin/sova launcher. No sudo, no system packages, no shell-profile edits, no settings.
pi extensions
One link per Sova extension in ~/.pi/agent/extensions/. --no-extensions skips this.
Login service
Only if you say yes, or pass --service.
Access
Loopback by default, and one token per install. Delete ~/.pi/agent/sova/auth-token and restart to sign every browser out.
Off by default
The share listener and Mesh, until you set them up.

Run your next pi session here.

Sessions you already have show up as soon as it starts.

curl -fsSL https://raw.githubusercontent.com/Naomarik/sova/master/scripts/install.sh | bash

Then run sova, and sova open.

Open source

Apache-2.0, built in the open.

TypeScript end to end: a SolidJS web app and a Hono server with the pi SDK embedded. Read the code, file an issue, or run a checkout.

# Run a checkout: Git, Node.js ≥22.19, pnpm, and Bun 1.4.2
git clone https://github.com/Naomarik/sova.git
cd sova
pnpm install --frozen-lockfile
pnpm run build
pnpm start   # http://127.0.0.1:4800, on Bun
pnpm start --node   # the same, on Node