- Terminal emulation — Powered by xterm.js with WebGL rendering, search, image support, and clipboard integration
- Tabs and pane splitting — Split horizontally (
Cmd+D) or vertically (Cmd+Shift+D), navigate with keyboard shortcuts - Projects and workspaces — Organize repositories into projects, manage git worktrees as workspaces
- Session persistence — Terminal sessions survive app restarts via a background daemon process
- GitHub integration — View PR status badges next to branches
- Linear integration — Browse assigned issues and match them to projects
- Built-in browser — Preview dev servers in a side pane with full navigation, zoom, and an element picker that captures HTML, styles, and accessibility info — point at anything and feed it straight to your AI agent
- Named previews — Dev servers automatically get stable URLs like
myapp.localhostinstead oflocalhost:3000— zero config, powered by portless - Port scanner — Detect running services across your workspaces
- Branch and diff watching — Track git branch changes and uncommitted line counts
- AI agent detection — Visual indicators when Claude Code or other agents are active in a terminal
- Theming — Per-project themes with hundreds of options; matches your Ghostty config automatically
- Command palette — Quick access to projects, workspaces, and actions via
Cmd+K - Remote control — Check on your agents from a phone, and get pushed a notification when one is blocked. Off by default; read what it exposes before turning it on
- Remote hosts — Put a project on a box you reach over ssh; agents keep running when your laptop lid closes, and their status catches up when you come back. See Remote hosts
Download the latest .dmg (Apple Silicon) — or browse all releases.
- Node.js (LTS recommended)
- pnpm — package manager
Native dependencies (node-pty, electron) are rebuilt automatically during install.
git clone https://github.com/orrybaram/manor.git
cd manor
pnpm install
pnpm devRun every command from the repo root. It is a pnpm workspace:
| Path | What lives there |
|---|---|
apps/desktop |
The Electron app: src/ (renderer), electron/ (main process, daemon, host server, CLI), tests/, build resources, the host Docker image |
apps/relay |
The Cloudflare Worker that pairs phones and serves the web app |
packages/protocol |
@manor/protocol: relay crypto and wire formats, shared by the desktop app and the relay |
docs/ |
Research notes and reports |
scripts/release.mjs |
pnpm release |
Every Manor terminal has the manor command on PATH, generated from the same tool definitions that power the MCP server. Agents running inside Manor should prefer the CLI to avoid loading the tool roster into context.
manor --help
manor list-projects
manor create-folder --name Backlog
manor set-workspace-folder --workspace-path <path> --folder-id <id>
manor git-diffpnpm package produces a signed, notarized .dmg/.zip for release. It requires Apple Developer credentials — most contributors only need pnpm dev.
Create a .env file from the provided example and fill in your Apple Developer credentials:
cp .env.example .env
# edit .env with your APPLE_ID, APPLE_ID_PASSWORD, APPLE_TEAM_ID, and certificate detailsThen run:
pnpm packageThe output will be in the apps/desktop/dist/ directory.
The E2E suite covers pane lifecycle smoke tests using Playwright:
pnpm test:e2eRuns a full vite build first; expect 30–60s per run. See apps/desktop/tests/e2e/README.md for details on adding new tests.
The remote-host suite runs against a real sshd and is skipped by default; see Remote hosts → Testing.
All shortcuts are customizable via Settings > Keybindings. Every shortcut also appears next to its item in the menu bar, and Help › Search finds any menu item by name.
| Shortcut | Action |
|---|---|
Cmd+T |
New tab |
Cmd+Shift+W |
Close tab |
Cmd+Shift+] |
Next tab |
Cmd+Shift+[ |
Previous tab |
Cmd+1 – Cmd+9 |
Switch to tab by number |
Cmd+Shift+T |
Reopen closed pane |
| Shortcut | Action |
|---|---|
Cmd+D |
Split horizontally |
Cmd+Shift+D |
Split vertically |
Cmd+W |
Close pane |
Cmd+] |
Next pane |
Cmd+[ |
Previous pane |
| Shortcut | Action |
|---|---|
Cmd+\ |
Toggle sidebar |
Alt+Cmd+\ |
Split panel right |
Shift+Alt+Cmd+\ |
Split panel down |
Alt+Cmd+] |
Focus next panel |
Alt+Cmd+[ |
Focus previous panel |
| Shortcut | Action |
|---|---|
Cmd+K |
Command palette |
Cmd+, |
Settings |
Cmd+N |
New agent |
Cmd+Shift+N |
New workspace |
Cmd+Shift+B |
New browser window |
Shift+Cmd+. |
Copy branch name |
Ctrl+Cmd+↓ |
Next workspace |
Ctrl+Cmd+↑ |
Previous workspace |
| Shortcut | Action |
|---|---|
F6 |
Move focus to the next region (sidebar, tabs, pane, status bar) |
Shift+F6 |
Move focus to the previous region |
Cmd+Shift+E |
Focus the sidebar (shows it if hidden) |
Cmd+Shift+Y |
Focus the tab bar |
Once focus is in the sidebar or the tab bar:
| Key | Action |
|---|---|
↑ / ↓ (sidebar), ← / → (tabs) |
Move between rows or tabs |
Home / End |
First or last row or tab |
Enter / Space |
Open the workspace, select the tab, or collapse/expand a project or folder |
← / → (sidebar) |
Collapse or expand a project or folder |
F2 |
Rename the workspace or folder |
Shift+F10 or Cmd+. |
Open the context menu for the focused row, tab or port |
Escape (sidebar) |
Return focus to the pane |
| Shortcut | Action |
|---|---|
Cmd+0 |
Reset zoom |
Cmd+= |
Zoom in |
Cmd+- |
Zoom out |
| Shortcut | Action |
|---|---|
Cmd+R |
Reload page |
Cmd+L |
Focus URL bar |
Escape (double-tap) |
Return focus to app |
| Shortcut | Action |
|---|---|
Cmd+F |
Open search |
Enter |
Next search result |
Escape |
Close search |
Cmd+Enter |
Submit commit |
Cmd+Enter |
Start a comment on the selection |






