Configuration
Project settings via pane.json.
Overview
Drop a pane.json file in the root of your project directory to configure
the project name and declare services. The file is optional — without it, the project
name falls back to the directory basename.
Pane reads the file every time a workspace opens and when you click Reload in the Services panel, so edits are picked up without restarting the app.
Full example
{
"name": "My Project",
"scripts": {
"setup": "scripts/setup.sh",
"archive": "scripts/archive.sh"
},
"services": [
{
"name": "api",
"command": "bun run dev",
"cwd": "apps/api",
"url": "http://localhost:3000"
},
{
"name": "worker",
"command": "bun run worker",
"cwd": "apps/api"
},
{
"name": "storybook",
"command": "npm run storybook",
"cwd": "apps/web",
"url": "http://localhost:6006"
}
]
}
Fields
name
Display name shown in the sidebar and dashboard. Falls back to the directory basename
when pane.json is missing or the field is omitted.
scripts
Optional lifecycle scripts associated with the project.
setup | Shell command for initial project setup. |
archive | Shell command for archiving / cleanup. |
services
An array of long-running processes that Pane manages as detached tmux sessions. Each service appears in the Services panel with start/stop controls and live health indicators.
| Field | Required | Description |
|---|---|---|
name |
Yes | Unique display name. Also used as the tmux session suffix. |
command |
Yes | Shell command to run. Multi-word commands are wrapped in sh -c. |
cwd |
No | Working directory. Relative paths resolve against the workspace root (so git worktrees each get their own copy). Defaults to the workspace root. |
url |
No | Health-check URL. HTTP/HTTPS URLs also add a clickable browser button. tcp://host:port URLs are checked via port probe only. |
Service health checks
Health is determined by the combination of tmux session state and URL probing:
| Status | Indicator | Condition |
|---|---|---|
| Stopped | Gray dot | tmux session does not exist |
| Starting | Yellow dot | tmux session exists, but URL probe fails |
| Running | Green dot | tmux session exists and URL probe succeeds (or no URL defined) |
Health checks run on the server, not your laptop — so localhost:3000 checks
the server's port 3000, not yours.
Service URLs and the browser
When a service defines an HTTP or HTTPS url, clicking the globe icon in the
Services panel opens it in a browser tab routed through the server. DNS resolution and TCP
connections happen on the remote host, so internal hostnames and localhost ports
work without any port forwarding setup.