DroidmacOS menu bar app

Every Droid session, at a glance.

Perch sits in your menu bar and watches every session of Factory’s droid CLI on your Mac — working, waiting on a permission or a question, or finished — with the model, the effort and the context used. When one needs you, Allow or Deny from your phone, your watch or the Mac notification.

Get Perch — $29One-time purchasemacOS 13 or later

Answering from your phone, watch or notification needs Droid running in tmux. Watching it needs nothing.

The Perch panel open from the macOS menu bar, showing agent sessions with live state, model, context window and spend

How it works

Hooks, a status line, and the transcript underneath

Hooks

Seven hooks, beside your own

Perch adds its hooks to Droid's own hooks file — or its settings file, when there is no hooks file — handler by handler next to anything you already have. They report starting, working, waiting on you and finished as it happens, and bind each session to its own process, so two Droids in one folder are two rows.

Status line

Model, effort and context, from Droid itself

A small status line reports the model, the reasoning effort and how full the context is. If you already had your own status line it still shows, and it is put back as it was if you remove Perch.

Transcript scan

Sessions that started before Perch did

Droid writes each session to a transcript under ~/.factory, and every turn ends with a record of how it ended. So a session Perch's hooks never saw still shows up, and the scan can tell a finished turn from one you cancelled with Escape — only a finished one is announced.

What lands on the row

The question itself, not a count of questions

Working, with the tool and the time

Which tool the turn is running and how long it has run. An edit made with a patch shows the file it touches.

Waiting, and on what

A permission prompt reads “needs you” the moment Droid draws it. When Droid asks a question, the row and the alert show the question itself — “Question: Red or blue?” — instead of “Factory CLI is asking the user 1 question(s)”.

Finished, with the reply

When a turn ends on a reply, the “finished” notification says what Droid replied. A turn that ended on a command or a tool gets a plain “Droid finished its turn.”

Subagents stay inside their session

A subagent counts as part of the session that started it, rather than appearing as an extra row that reads “finished” and chimes. When it needs a permission, its parent shows as waiting for you.

Waiting for you to trust a folder

The first time you open Droid somewhere new, it asks whether to trust the folder and runs no hooks until you answer. That session gets a row reading “Waiting for you to trust this folder”, and becomes a normal row once you accept. A folder inside one you already trust doesn’t ask, and Perch knows that too.

On your phone and your watch

Droid rows reach Perch Companion and the Apple Watch app alongside every other agent: working, needs you and finished, with the model and the context used.

Answering

Perch reads the screen before it presses anything

Droid has no hook that can hold a permission decision: the one that fires before a tool runs fires for every tool, whether Droid then asks or not. So for Droid running in tmux, Allow and Deny are keys pressed in the pane, from your phone, your watch or the Mac notification. Before pressing one, Perch checks the terminal: the dialog must still be up, with the same command or the same file you were shown. If it isn’t, nothing is pressed and the prompt waits for you at the terminal. That part comes with every licence.

With Perch Pro you can also type a message to a Droid session and stop a turn that’s working. Perch checks which session the terminal is in right now before sending, so a reply never lands in a conversation you left with /new, /clear or /sessions. Stop is offered only while Droid is working, because Escape pressed at an idle prompt can open Droid’s rewind picker instead.

What stays at the terminal

Two tools asked for at once, and Droid’s “always allow”. Perch never offers those, so there is no way to widen what Droid may do from your phone.

A reply or Stop while Droid waits on a permission or a question. Both are switched off then, so a typed message can’t land on a dialog and approve it. If Perch’s hooks are off, both stay off and the row says why.

Stats

Tokens, models and active days

Droid sessions count in Stats: tokens, models, active time and prompts per day, the heatmap and your streaks, with a Droid filter beside the other agents on the Mac and in the iPhone’s Stats tab.

Droid keeps token totals per session, not per message, so a session that spans days has its tokens split across them by its prompts — an estimate. Cache reads are left out, the same rule as Claude Code, and Factory credits are not counted as cost.

The Perch stats panel showing a contribution heatmap, streaks, and a per-model token breakdown

What it doesn’t do

The gaps, named

Remote answers need tmux

Allow, Deny, replies and Stop were each measured against Droid in tmux, and that is the only place Perch sends them. A session anywhere else is watched, and answered at its terminal.

No usage bars or cost

Droid keeps per-session tokens and Factory credits on disk, and Perch doesn’t show them on the row yet. There is no account-usage strip for Droid either.

Not droid exec

One-shot droid exec runs have no prompt to answer and get no row.

Open sessions need a restart

Droid reads its hooks when it starts. A session already open when Perch installed them is watched through its transcript, without the live waiting state, until you restart it.

Each of these is where Perch stopped because it hadn’t watched the next step work, not a guess about what Droid can do. Claude Code is the agent Perch reads most completely, if you want to compare.

Pay once for the fleet. Subscribe for the conversation.

One licence covers every agent Perch supports, not just Droid — and includes the iPhone companion and all future updates.

Solo

$29one-time
  • Lifetime license — pay once, keep it
  • One Mac at a time; deactivate in-app to move
  • iOS companion, push alerts & Live Activities included
  • Notarized app with signed automatic updates
Buy Perch — $29

Team

$29per seat, one-time · 2+ seats
5
seats × $29 = $145
  • A license key for every teammate — not one shared key
  • Assign and revoke seats by email from your customer portal
  • Your seat is claimed on purchase; invite the rest by email
  • Same lifetime license and updates on every seat
  • Perch Pro is separate — each teammate who wants it subscribes in the iPhone app
Buy 5 seats — $145

Pro

Most popular
$4.99per month

or $29 a year

Launch price until 15 November, then $49 a year

  • A Mac app licence included, for as long as you subscribe — nothing separate to buy
  • Read your agents’ conversations from your iPhone, and reply straight back into the session
  • Works with your Mac locked, from anywhere your phone can reach it*
Get it on the App Store

Free to download. Pro is an in-app purchase.

* What Pro can reach depends on the agent and on where its session is running. Replying needs the session inside tmux or herdr (Droid, tmux only) — OpenCode uses its own local server instead — and it has to be switched on in Settings, because paying for Pro is not the same as consenting to remote input. Reading a conversation works wherever the session runs. Each agent’s own page says exactly what it supports, and what it doesn’t.

Prices in USD, tax included.

Questions Droid users ask

Do I have to configure Droid?
No. Perch adds its hooks and a small status line to Droid's own settings, next to anything you already have, and Remove Integration in Settings takes them out again. Droid loads hooks when it starts, so a session that was already open when Perch installed them is watched through its transcript until you restart it.
Can I approve a Droid permission from my phone?
Yes, for Droid running in tmux — from the phone, the watch or the Mac notification, and with the $29 licence alone. Droid has no hook that can hold the decision, so Allow and Deny are keys pressed in the pane, and Perch reads the terminal first: the dialog must still be up, with the same command or file you were shown. If it isn't, nothing is pressed and the prompt stays for you at the terminal. Two tools asked at once, and “always allow”, are left to the terminal.
Can I reply to, or stop, a Droid session from my phone?
Yes, with Perch Pro — the subscription bought in the iPhone app, not the perpetual $29 licence — for a session running in tmux. Before sending anything Perch checks which session the Droid terminal is in right now, so a message never lands in a conversation you've switched away from with /new, /clear or /sessions. Stop is offered only while Droid is working. Neither is offered while Droid waits on a permission or a question, so a reply can't approve something by accident.
Why tmux, and not herdr?
Because that is where it was measured. Replies, Stop and Allow/Deny were each watched working against a live Droid in tmux; a session in herdr shows on the fleet like any other, but Perch doesn't answer it remotely.
What does Stats count for Droid?
Tokens, models, active time and prompts per day, with a Droid filter beside the other agents, on the Mac and in the iPhone's Stats tab. Droid keeps token totals per session rather than per message, so a session that runs across several days has its tokens split across those days by its prompts — an estimate, and the only one possible. Factory credits are not counted as cost.
Are droid exec runs shown?
No. They are one-shot runs with no prompt to answer, so they don't get a row.
Does my code leave my Mac?
No. Session state, transcripts and Stats stay local. Data leaves only for features that require it: your paired iPhone (encrypted, over your LAN or your own tailnet), the push relay, and Polar for license checks.