New Devpilot 0.3.20 — agent mesh across machines

Mission control for
your AI coding agents

Devpilot is a desktop home for every Claude Code, Codex and ssh session you run. See who is working, who is waiting for you, and what each one touched — in one window.

Devpilot
devpilot i56-devpilotrelease
TerminalBrowser
releaselocal
✻ Welcome to Claude Code · Opus 5.5 · ~/devpilot
>
Opus 5.5 (max, 31k/250k)cpu 12% · mem 41% · disk 6%default · Day 36% ▼ · Week 23% ▼
meshasksasking

Which branch should the mesh fix go to?

SendCtrl ↵
releaseDevpilot 0.3.20 is out.

Hosts the agents you already use

Eight agents.
One of them has been waiting for twenty minutes.

Running agents in parallel is easy. Keeping track of them is not. Tabs hide the session that is asking for a branch name, the build that failed, the pull request that is ready to merge. Devpilot turns the swarm into a board you can read at a glance.

A field of hundreds of coloured dots, each an agent; labels read 'tests failed', 'asking: which branch?' and 'waiting for input · 24 min'.
Status

Every agent.
One window.

Terminals live in a grouped, filterable sidebar. Hooks report what each session is doing — no AI guessing, no title scraping — so the dot next to every name is always the truth.

Filter terminals Ctrl K
DEVPILOT i56-devpilot4
releaseCut the v0.3.20 release
meshGate listens on the tunnel
orb
MOBILE i49-mobile3
android-qa
chiefMerged after one approval
ios-buildBash xcodebuild archive
⠋
idleSession started, or quiet for two minutes after a turn.
workingA prompt is being processed; the row shows the latest step.
running toolA tool is executing. Subagents keep the spinner turning.
askingPermission prompt, plan approval or an open question.
doneTurn finished; the row shows the session's short title.
exitedThe process ended. Press Enter to restart it.

Categories & initiatives

Group terminals by project. Link a category to an initiative and its badge follows you in the sidebar and the top bar.

Comes back after a restart

Every terminal reopens in the same folder, with the same command and environment. Profiles prefill shells, accounts and hosts.

Rename once, everywhere

Renaming a terminal renames the Claude session inside it — queued until the prompt is free, never mid-turn.

Questions

Agents ask.
You answer.

An agent that needs you posts a real question — yes/no, a choice, a line of text. It lands in the Pending tab; your answer goes straight back into the session that asked.

meshclaude-runner-2
● The fix touches the tunnel gate. Asking where it should land.
● Bash(devpilot ask choose --id mesh-branch "Which branch…?")
⎿ asked mesh-branch (new)
⠋ Waiting for your answer…
AllPRs 1Pending 1
Questions
Which branch should the mesh fix go to?
SendReply…answered

Progress you can see from across the room.

Long steps — deploys, test gates, rollouts — report themselves with devpilot progress. The terminal row shows the step instead of the summary, the Pending tab keeps the history, and failures stay red until you clear them.

devpilot progress --id release "Publish 0.3.20" --step 3/5 --detail "Signing"
devpilot progress --id release --done
In progress
⠋
Publish 0.3.20Bumping versions
1/5
⠙
Deploy stageRolling out 2 pods
0%
✓
Test gate412 passed
4m
✕
Android buildGradle daemon out of memory
failed
Overwatch

It tells you
where to look.

The orb floats above every window. It counts who is asking, pulses on each event, and when an agent finishes it speaks one line — while the terminal that spoke glows in the sidebar.

  • Overwatch list. Click the orb for every terminal with its status, latest step and the pull request it is on.
  • Speak and point. devpilot speak plays a short line with a caption; the active terminal never switches under you.
  • Quiet by design. Silence is the default; sound is for turns that ended in a result.
Overwatch1 asking2 working
releaseBash pnpm tauri build
#5940
meshWhich branch should the fix go to?
#331
android-qaRunning 3 subagents
#5932
chiefMerged after one approval
docsidle · 14 min
releaseDevpilot 0.3.20 is out.
1
Context

Every PR, every issue —
surfaced, and one click away.

Devpilot reads what each session does and collects the pull requests it opened, the issues it touched and the links it mentioned. GitHub fills in the rest — and a right-click acts on it.

android-qalocal
● Bash(gh pr create --draft --title "Restore sessions after a reconnect")
⎿ https://github.com/acme/web/pull/5932
● Draft PR opened. CI is running.
>
AllIssues 1PRs 1Links 1
New
acme/web#5932Open
Restore sessions after a reconnect
◷ 9/14ALCnow
Existing
acme/web#5910Open
Sessions drop after Wi-Fi changes
8 commentsFB1d
Links
github.com/acme/web
Release v2.14.0 · Faster deploys
acme/web on Nov 3 Restore sessions after a reconnect #5932
Open

Reattach the tmux session and replay the last status instead of showing the row as exited.

main ← 5932-restore-sessions
ReviewersC✓AL●

New, Existing, Mentioned

Created by this session, worked on, or just referenced — with GitHub state, checks, labels and reviewer verdicts.

GitHub hover cards

Title, body, branches, labels and reviewers without opening a browser. Ctrl+Shift+F searches all of it.

PR actions

Right-click to toggle labels, request a review from your bots, or send /review-locally and /babysit-pr to the terminal.

Browser

Review the mockup
where the agent made it.

Every terminal has its own browser tabs. An agent runs devpilot preview and its HTML mockup opens next to it — read in place, from this PC or a remote host — with the sign-off question docked under the page. Pick an option, add a note, and the agent gets back to work.

videomaker
Terminallogin.html · this PC
login.htmlserved from this PC · reload picks up edits
Sign in to Acme Email Password Continue Forgot your password? · Create an account
videomakerasksApprove the login layout?1 of 1
Send
✓ Sent to videomaker · it is editing the page

A browser per activity

Tabs belong to the terminal they were opened from: pull requests, docs, dashboards, rendered Markdown — beside the work, not in another window.

Served in place

Mockups load from where the agent wrote them, assets included, local or over ssh. Reload picks up the agent's edits.

Feedback with a note

Choose an option and say why. The answer — and the note — arrive in the agent's session as a single message.

reviewerlocal
Prompts
Summarise this PR for the changelog
Run the test gate and report failures
Address the open review threads
Add prompt
● Review threads resolved. 0 open.
>
F1chief F9devops F10reviewer F11docs
devops created from its launch spec · ssh claude-runner-2
Custom commands

Say it once.
Send it anywhere.

Save the prompts you type every day and send one to the active terminal from its toolbar. Bind F-keys to launch specs: press one to jump to that terminal, or create it — category, profile, folder and command — if it is not open yet.

  • Prompts. Name, body, done. One click pastes and presses Enter.
  • Launch hotkeys. F1 and F9–F12 focus or create; Shift+F edits the spec.
  • Command palette. Tap Shift twice for everything else.
Mesh

Sessions talk.
Across machines.

Remote terminals run inside tmux on your build boxes and survive restarts and dropped networks. A per-host tunnel brings their status, questions and voice home, and the agent mesh lets one session message another — on any host, with or without the app open.

this-pcWindows● agent
chief
release
videomaker
claude-runner-2Linux● agent
android-qa
soak-r20
reviewer
claude-runner3Linux● agent
mesh
docs
ios-build
Run the QA pass on build 84
› Message from @chief · Run the QA pass on build 84

tmux that reattaches

Open a remote profile and you land in a named tmux session. Close Devpilot, lose Wi-Fi — it is still there when you come back.

Notify by name

devpilot notify --to android-qa drops a message in that session's inbox, on whichever machine it runs.

Drop files anywhere

Drag a file or paste a screenshot onto a remote terminal: it is uploaded to that host and its path typed at the prompt.

Usage

Know your limits
before you hit them.

The status bar shows the active session's model, effort and context, your machine's health and the daily and weekly usage of its account — with a pace arrow that projects where you will land at the reset.

Opus 5.5 (max, 31k/250k)
cpu 12% · mem 41% · disk 6%
default · Day 36% ▼ (1:10pm) · Week 23% ▼
▲Runs outOn this slope you hit 100% before the reset. Day adds the time: out ~6:13pm.
▶On paceYou will end the window between 85 and 99% — using what you pay for.
▼HeadroomBelow 85% at the reset. Week projections skip weekends.

One chip per account

Every Claude config dir you use is its own account, tracked live from the status line and Anthropic's usage endpoint.

Pick the fullest tank

A new Claude terminal suggests the account with the most weekly quota left. One click to accept, still yours to change.

Hover for the forecast

Reset times, rate per hour and the projected percentage at reset for every account, side by side.

Built for the hundredth hour.

The small things that make a terminal you live in all day.

› rel
release ~/devpilot
+New terminal from profile…
?Answer question…

Command palette

Tap Shift twice — even inside a terminal — to switch, create, move, answer or open anything.

CtrlTabAlt1

Keyboard first

Ctrl+Tab cycles terminals, Alt+number jumps to a category, F2 renames, Ctrl+P opens quick-access profiles.

Themes & accents

Nine terminal themes, eight accents or any hex. Spinner and attention colours are yours too.

Drop to upload to claude-runner-2
→ tmp/devpilot-drop

Drop & paste files

Files and screenshots become paths at the prompt, locally or on a remote host, exactly like a native drop.

✳Claude ~/.claude
✳Claude max ~/.claude-max
◎Codex ~/.codex

Profiles & accounts

Command, environment and folder presets: several Claude or Codex accounts, ssh hosts, plain shells.

GET /terminalsPOST /speakPOST /point

Scriptable

A loopback API and the devpilot CLI let agents and scripts drive terminals, tabs and toasts.

See it in forty seconds.

The Devpilot mascot: a chrome helmet with a white visor.

Fly the whole fleet.

Devpilot runs on Windows, built with Tauri, Rust and xterm.js.