TerminalsGhostty

Every agent in Ghostty, one click from its split.

Perch keeps every coding agent session on your Mac in the menu bar. Click one running in Ghostty and it focuses the exact split, in whichever window it’s in.

Ghostty with Perch

Lands on
The exact split
How
AppleScript, by the session's tty
Permission
Automation, asked once
Needs
A Ghostty newer than 1.3.1
On 1.3.1
Raises Ghostty

How the jump works

Ghostty is asked for the split by its terminal device

Matched by the session's tty

Perch's hooks record the terminal device each agent runs on. A click asks Ghostty for the surface on that device, out of every split in every window and tab, and Ghostty focuses it and comes to the front.

One permission, asked once

Ghostty has no focus link, so this goes through AppleScript, and macOS asks once whether Perch may control Ghostty. Say no and a click still raises Ghostty; nothing else changes.

Nothing written to your terminal

Some tools find a Ghostty split by writing escape sequences into it and looking for the marker. Perch doesn't: it reads which device is which, so no pane ever has its working directory rewritten under it.

Answering

Answering an agent that runs in Ghostty

Approvals don't care which terminal

Allow and Deny on your iPhone, Apple Watch and Mac notification work the same in Ghostty as anywhere else, for Claude Code, Codex, OpenCode and Devin. They travel through the agent itself, not the terminal.

Reply from the Mac notification

Type an answer into the notification and Perch focuses the split, checks Ghostty is in front, then types it. It needs Accessibility and Automation, and it's only offered on a Ghostty that can be focused — Perch won't take a reply it would have to throw away.

Typing from your phone, inside tmux

Replies and Stop from the iPhone need a pane Perch can address without the screen: run the agent inside tmux or herdr in Ghostty, and the Mac can stay locked. Codex in its default mode and OpenCode need neither.

How approving from your iPhone works, and every alert Perch can send you.

Worth knowing

The conditions, named

Ghostty 1.3.1 raises the app

The property this relies on reached Ghostty just after 1.3.1, the current stable release. On 1.3.1 a click brings Ghostty forward; tip builds land in the split today, and the next release will, with no Perch update.

No prompt spent on something that can't work

Perch reads your installed Ghostty's own scripting dictionary and only tries the split when it's there. On 1.3.1 you're never asked for Automation access that couldn't do anything. Upgrading needs no Perch restart.

AppleScript can be turned off

Ghostty's macos-applescript setting is on by default. With it off, or with Automation denied in System Settings, a click raises Ghostty instead of picking the split.

A busy Ghostty can't freeze Perch

The jump runs in the background and gives up after five seconds on a terminal that doesn't answer — or one showing macOS's permission prompt — so the menu bar never hangs waiting for it.

Pay once for the fleet. Subscribe for the conversation.

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, herdr or Rex (Droid, tmux or Rex) — Codex in its default mode and OpenCode use their own local servers 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.

Questions

Ghostty and Perch, specifically

Does Perch work with Ghostty?
Yes. Every agent session running in Ghostty shows in Perch's menu bar with its live state. On a Ghostty newer than 1.3.1, a click focuses the exact split; on 1.3.1, the current stable release, it raises Ghostty.
Why does Perch ask to control Ghostty?
Ghostty has no link that focuses a split, so Perch uses Ghostty's AppleScript support to find the surface on the session's terminal device. macOS asks once. Perch only asks on a Ghostty that can actually answer.
Can I get Claude Code notifications in Ghostty without a hook script?
Yes. Perch installs and manages Claude Code's hooks itself, so the “needs you” alert reaches your menu bar, a Mac notification, your iPhone and your Apple Watch, and clicking it lands back in the split that asked.
Can I approve Claude Code from my phone while it runs in Ghostty?
Yes. Approvals go through Claude Code's hooks, not the terminal, so Allow and Deny work from your iPhone and Apple Watch whatever terminal the session is in, with the one-time licence alone.

Perch lands precisely in Warp, iTerm2, Rex, Terminal.app and Codex Desktop too, and inside tmux, herdr and Zellij. Every terminal Perch supports.