
Perch
A native Mac workspace for your coding agents.
Agents on your server. A home on your Mac.
English · 简体中文
Perch brings coding agents into one macOS app: read conversations, review tools, respond to approvals, and keep track of what needs your attention. Your code and agents stay on the remote machine, connected over SSH.
Built with SwiftUI, AppKit and Ghostty, with native text, keyboard shortcuts and Liquid Glass controls on macOS 26. Designed for a focused, fluid reading experience.

Native macOS components with synthetic demo data; no live commands are shown.
Tool details (synthetic data)
Why Perch
- Native conversations. Streaming replies, Markdown, thinking and tool results, with details that expand when you need them.
- A workspace for your tasks. Group sessions, pin important work, archive finished conversations and return to your previous workspace.
- Know what needs you. See running tasks, pending questions and results waiting to be read, plus Kimi's subagents (including their own transcripts) and background tasks with their output tails.
- Keep your CLI workflow. Use native chat for supported agents and Ghostty terminals for CLI sessions through Herdr.
- Inspect the work. Open remote files and read Git diffs alongside a conversation (experimental).
- Remote execution, local control. Files and tools run on your server. Closing the Mac app leaves managed remote sessions running.
- Explicit permission modes. Choose adapter-specific defaults and per-task overrides; high-risk modes require confirmation. Kimi, Qoder and Claude Code can change for a later message or turn, while OMP and Codex are fixed when a session is created.
Agent connections
| Agent / workflow | Connection | Experience |
|---|---|---|
| Kimi Code | Kimi Web API over SSH | Native conversation |
| Oh My Pi (OMP) | RPC through the remote bridge | Native conversation |
| Qoder CN | Official Agent SDK through the remote bridge | Native conversation |
| Claude Code | Official Agent SDK through the remote bridge | Native conversation |
| DeepSeek Harness (dsh) | ACP through the remote bridge | Native conversation |
| Codex | codex app-server JSON-RPC over stdio through the remote bridge |
Native conversation |
| Other CLI agents | Herdr + SSH | Terminal |
Native integrations share the same conversation UI. Additional RPC, SDK or ACP adapters are welcome; arbitrary protocol compatibility is not automatic. See Kimi setup and OMP / Qoder CN / dsh / Codex / Claude Code setup for tested versions and recovery limits. Agent credentials and model configuration stay with the CLI; Perch does not connect directly to model providers.
Local OMP discovery is available, but local native conversations are not connected
yet. Kimi, remote OMP and Codex support steering during a running task, with an
explicit next-turn option. Codex keeps its native thread ID and history, takes model
and reasoning-effort choices from model/list, and surfaces every app-server approval
or question for an explicit response. Qoder CN / dsh / Claude Code support stopping and next-turn
queueing. Pending messages appear in the conversation until runtime history confirms
them. Existing Herdr sessions remain terminal sessions.
Build and run
Requires macOS 14+ and a Swift toolchain with the macOS 26 SDK (Xcode 26 or newer). The current build has been tested on Apple Silicon. A remote SSH host and the corresponding agent runtime are required for remote sessions.
./scripts/build.sh
open build/Perch.app
Choose Connect a remote machine on the home screen, or Environment → +. The setup wizard verifies SSH, checks your chosen agent, offers installation and login actions, then lets you browse a remote directory and start your first task. Kimi's port and token-file path are editable in Advanced settings. Fresh installs start without a preset host. See the setup guide.
⌘N new conversation · ⌘K search · Return send · Shift Return new line
The interface follows the system language, with 简体中文 and English available under Settings → Language; the sidebar and its flows are bilingual first, other areas may still mix languages while translations catch up.
Status
Early source preview. Long-session responsiveness and recovery still need work; this is not a stable release. Remote file browsing and read-only Git diff are experimental. Support varies by agent; check the adapter documentation before relying on a workflow. Builds use local ad-hoc signing; notarized downloads are not available yet.
Contributing
Bug reports, focused fixes and agent adapters are welcome. Start with CONTRIBUTING.md. Please use synthetic conversations in reports and screenshots, and remove credentials and private paths.
License
MIT. Third-party components retain their own licenses; see THIRD_PARTY.md.
No comments yet. Be the first to write one.