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.

setupShell command for initial project setup.
archiveShell 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.

FieldRequiredDescription
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:

StatusIndicatorCondition
StoppedGray dottmux session does not exist
StartingYellow dottmux session exists, but URL probe fails
RunningGreen dottmux 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.