cli runpane

cli agar agent bisa memakai pane

runpane menginstal Pane dan memberi agent perintah untuk membuat pane, membaca output terminal, dan mengirim input. Bisa dipakai di Windows, WSL, macOS, Linux, mesin lokal, dan host remote.

semua os didukung penuh

Windows dan WSL bukan fitur tambahan belakangan. Workflow yang sama juga berjalan di macOS, Linux, VM, dan host remote.

npm, pnpm, dan pypi

Mulai dengan npx, pnpm dlx, pipx, atau instal secara global saat agent memerlukan runpane di PATH.

agent bisa mengontrol pane

Agent apa pun yang bisa menjalankan perintah shell dapat menambahkan repo, membuat pane, memeriksa output terminal, dan mengirim input.

dibuat untuk loop agent

Agentmu bisa memakai Pane sebagai workspace yang mereka kelola. Tanpa scheduler hosted atau SDK khusus. Cukup perintah terminal.

instal

Untuk instalasi atau update sekali jalan, gunakan runner. Runner menjalankan CLI terbaru tanpa instalasi CLI global. Di terminal, perintah ini membuka wizard penyiapan. Pane tetap terpasang setelah penyiapan:

npx --yes runpane@latest
pnpm dlx runpane@latest
pipx run runpane

Agent di terminal Pane sudah punya runpane di PATH-nya. Untuk agent atau skrip di luar Pane yang memanggilnya berulang kali, instal secara global:

npm i -g runpane
runpane setup

python -m pip install runpane
python -m runpane setup

cli lebih dulu, mcp juga ada

MCP juga tersedia. Pane menyertakan MCP server yang dibangun di atas perintah yang sama, dan mendaftarkannya ke Claude Code, Codex, dan Cursor saat dibuka. MCP server milik agent kamu sendiri untuk GitHub, Linear, atau Slack tetap berfungsi.

Tapi setiap agent sudah punya terminal. CLI berjalan di Codex, Claude Code, Aider, Goose, OpenCode, script shell, cron, dan CI. Tak perlu menginstal server tambahan atau menyiapkan tiap agent.

Ringan secara default. runpane agent-context mencetak ringkasan singkat. Agent hanya memuat detail perintah lengkap saat benar-benar perlu.

Agent bisa membacanya sebelum menginstal. Daftar perintah lengkap tersedia untuk publik di /runpane-cli-contract.json.

Alur kerja lengkapnya sudah ada di Pane. Sessions memakai perintah-perintah ini untuk menjalankan alur issue-ke-PR untukmu.

Satu CLI untuk manusia dan agent. Instalasi, update, diagnostik, pembuatan pane, pembacaan output, dan pengiriman input. Semuanya memakai perintah runpane yang sama.

perintah inti loop

runpane doctor --json
runpane agent-context
runpane agent-context --command "panels wait" --json

runpane repos list --json
runpane repos add --path "$PWD" --yes --json
runpane agents doctor --agent codex --repo active --json

runpane panes create --repo active --name "issue-252" --agent codex --prompt "Plan this issue" --source agent --wait-ready --yes --json
runpane panes list --repo active --json
runpane panels list --pane <pane-id> --json
runpane panels wait --panel <panel-id> --for ready --json
runpane panels screen --panel <panel-id> --limit 80 --json
runpane panels output --panel <panel-id> --limit 200 --json
runpane panels submit --panel <panel-id> --text "Continue" --yes --json

wsl dan windows

Kalau agentmu berjalan di dalam WSL tetapi Pane terinstal di Windows, panggil wrapper Windows lewat PowerShell:

powershell.exe -NoProfile -Command \
  'Set-Location $env:TEMP; runpane repos list --json'

lanjut ke mana

- Siapkan loop agent AI pertamamu

- Baca referensi CLI runpane

- Lihat daftar lengkap perintah CLI

- Pakai skill koordinasi di Pane Chat

- Dokumentasi loop agent

Lihat daftar lengkap perintah CLI

Open a command to see its usage and flags. This English reference comes straight from Pane's CLI. For a guided walkthrough, start with the CLI docs.

greenfield-inc/Pane @dd9bd5e2a92f

runpane help

Show help for runpane or a specific command.

runpane help [command]
command <command>
Optional command topic such as "panes create".
runpane help
runpane help panes create
runpane setup

Open the guided setup wizard for install, remote host setup, update, and diagnostics.

runpane setup
runpane setup
runpane install

Install Pane on this machine or configure this machine as a remote daemon host.

runpane install [client|daemon] [options]
target <client|daemon>
Install the desktop client or configure a remote daemon host.
--version <latest|vX.Y.Z>
Pane release to install.
--format <auto|appimage|deb|dmg|zip|exe>
Release artifact format.
--yes
Skip interactive prompts where possible.
runpane install client
runpane install daemon --label "My Server"
runpane update

Update the Pane desktop app using the same artifact path as install client.

runpane update [options]
--version <latest|vX.Y.Z>
Pane release to update to.
--format <auto|appimage|deb|dmg|zip|exe>
Release artifact format.
--dry-run
Print the update plan without downloading.
runpane update
runpane update --version latest
runpane version

Print the runpane wrapper version without contacting, launching, or focusing Pane.

runpane version [--pane-dir <path>]
runpane --version
--pane-path <path>
Ignored for version; retained only for parser compatibility.
--pane-dir <path>
Accepted and ignored, so one --pane-dir can be passed to every runpane command.
runpane version
runpane --version
runpane doctor

Run platform, release, installed Pane, daemon reachability, and remote setup diagnostics.

runpane doctor [--json] [--pane-dir <path>] [--pane-path <path>] [--format <format>] [--verbose]
runpane doctor --report [--title <text>] --body-file <path|-> [--yes] [--json]
--json
Print a machine-readable environment report.
--pane-dir <path>
Connect to a specific Pane data directory.
--pane-path <path>
Inspect a specific Pane executable.
--format <format>
Release artifact format to inspect.
--verbose
Print extra diagnostics.
--report
Prepare a redacted, inspectable diagnostic report.
--body-file <path|->
Read report evidence from a file or stdin.
--title <text>
Report title.
--yes
Confirm creating exactly one greenfield-inc/Pane issue.
runpane doctor --json
runpane doctor
runpane doctor --report --title "runpane watch failed" --body-file ./watch.txt --json
runpane daemon repair

Repair and restart the managed remote-daemon launcher without changing pairing or tunnel configuration.

runpane daemon repair [--pane-dir <path>] [--pane-path <path>] [--yes] [--json]
--pane-dir <path>
Remote daemon data directory; defaults to ~/.pane_remote.
--pane-path <path>
Existing Pane executable used to perform repair.
--yes
Skip the service restart confirmation.
--json
Print one machine-readable repair result.
runpane daemon repair --pane-dir ~/.pane_remote --yes --json
runpane agents doctor

Diagnose whether a built-in agent command is available in a Pane repository environment.

runpane agents doctor --agent <codex|claude|cursor> [--repo <selector>] [--json] [--pane-dir <path>]
--agent <codex|claude|cursor>
Built-in agent command to diagnose.
--repo <selector>
Repository selector; defaults to the active Pane repo.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane agents doctor --agent <agent> --repo active --json
runpane agent-context

Print token-efficient Pane command context for coding agents.

runpane agent-context [--json]
runpane agent-context --command <command> [--json]
--command <command>
Print the detailed definition for one command, for example "panes create".
--json
Print machine-readable output.
runpane agent-context
runpane agent-context --command "panes create" --json
runpane mcp

Run the Pane MCP server over stdio so coding agents can call runpane commands as tools.

runpane mcp [--toolsets <name,...>] [--read-only]
--toolsets <name,...>
Comma-separated toolsets to serve: core (default), all, read, repos, panes, panels, agents, sessions, git, docs, links, admin.
--read-only
Serve only read-only tools.
claude mcp add --scope user pane -- npx --yes runpane@latest mcp
codex mcp add pane -- npx --yes runpane@latest mcp
runpane repos list

List repositories saved in the running Pane app.

runpane repos list [--json] [--pane-dir <path>]
--json
Print machine-readable repository records.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane repos list --json
runpane repos add

Register an existing git repository with the running Pane app.

runpane repos add --path <path> [--name <name>] [--json] [--yes] [--pane-dir <path>]
--path <path>
Existing git repository path to register with Pane.
--name <name>
Saved repository name; defaults to the directory name.
--yes
Skip confirmation for mutating commands.
--json
Print machine-readable output.
--dry-run
Validate and preview without adding the repo.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane repos add --path /path/to/repo --yes --json
runpane panes list

List Pane sessions in a saved repository.

runpane panes list [--repo <selector>] [--json] [--pane-dir <path>]
--repo <selector>
Optional repository selector: active, id, exact path, or saved repository name.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes list --repo active --json
runpane panes cost

Report estimated token cost per Pane, with per-model breakdown and cache efficiency.

runpane panes cost [--repo <selector>] [--pane <pane-id>] [--json] [--pane-dir <path>]
--repo <selector>
Optional repository selector: active, id, exact path, or saved repository name.
--pane <pane-id>
Return only the selected Pane.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes cost --pane <pane-id> --json
runpane workspace state

Read one workspace snapshot of every Pane and CLI panel.

runpane workspace state [--repo <selector>] [--json] [--pane-dir <path>]
--repo <selector>
Optionally limit the snapshot to one saved repository.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane workspace state --json
runpane workspace list

List your machines on Tailscale and whether each has joined workspaces.

runpane workspace list [--json] [--pane-dir <path>]
--json
Print machine-readable output.
runpane workspace list --json
runpane workspace enable

Put this machine's Pane on your tailnet for runpane workspace (the default when Tailscale is signed in).

runpane workspace enable [--json] [--pane-dir <path>]
--json
Print machine-readable output.
runpane workspace enable
runpane workspace disable

Take this machine off runpane workspace and remove its tailscale serve handler on port 8443.

runpane workspace disable [--json] [--pane-dir <path>]
--json
Print machine-readable output.
runpane workspace disable
runpane workspace read

Print a file from one of your machines; any path form works (C:\..., /mnt/c/..., /home/..., ~/...).

runpane workspace [<machine>] read <path> [--json]
<machine>
Tailscale machine name, unique prefix, MagicDNS name, or Tailscale IP. Omit it to route a path that cannot exist here to the one joined machine it fits.
<path>
Absolute path in any form; ~ is that machine's home.
--json
Print machine-readable output.
runpane workspace parsa-devbox read 'C:\Users\me\.pane\plans\topic\index.html'
runpane workspace read /mnt/c/Users/me/notes.md
runpane workspace write

Write stdin to a file on one of your machines, creating parent folders.

runpane workspace [<machine>] write <path> [--json]
<machine>
Tailscale machine name, unique prefix, MagicDNS name, or Tailscale IP. Omit it to route a path that cannot exist here to the one joined machine it fits.
<path>
Absolute path in any form.
--json
Print machine-readable output.
echo done | runpane workspace parsa-devbox write '~/notes/status.md'
runpane workspace exec

Run a command in another machine's shell and return stdout, stderr, the exit code, OS, and shell.

runpane workspace <machine> exec [--cwd <path>] [--timeout-ms <ms>] [--json] -- <command>
<machine>
Tailscale machine name, unique prefix, MagicDNS name, or Tailscale IP. Omit it to route a path that cannot exist here to the one joined machine it fits.
--cwd <path>
Working directory on that machine, in any path form; defaults to its home.
--timeout-ms <milliseconds>
Stop the command after this long (default 120000, at most 540000).
--json
Print machine-readable output.
-- <command>
The command line, run by that machine's shell.
runpane workspace parsa-devbox exec --json -- git -C C:\src\app status --short
runpane handoff

Hand your task to a fresh agent on this or another machine: check your handoff note, make the branch reachable, send the note, and start the agent on it.

runpane handoff --template
runpane handoff "<destination>" --note-file <path|-> [--machine <name>] [--agent <codex|claude|cursor>] [--model <model>] [--effort <level>] [--repo <selector>] [--push] [--dry-run] [--json]
<destination>
Freeform text naming the agent (claude, codex, cursor), and optionally the model, the effort, and the machine: a Tailscale machine name or unique prefix (list them with runpane workspace list), or "this machine". Required unless --agent is given. Examples: "codex gpt-5 high on parsas-macbook-pro", "claude opus on parsa-devbox", "cursor on this machine".
--template
Print the note template, with this checkout's origin and git state in its front matter, and exit.
--note-file <path|->
The note to check and send; required unless --template or --dry-run. Without it, --dry-run checks only the destination and git state.
--machine <name>
Destination machine; overrides the text.
--agent <codex|claude|cursor>
Receiving agent; overrides the text.
--model <model>
Model for the receiving agent, such as opus, sonnet, gpt-5, or claude-opus-5-5; overrides the text.
--effort <level>
minimal, low, medium, high, xhigh, or max; supported for Claude and Codex only; overrides the text. Cursor effort is rejected.
--repo <selector>
Saved repository on the destination. Defaults to the one with a remote for this repository.
--push
Commit uncommitted work (except the note) as WIP and push the branch before sending; never forces. Without it, an unpushed branch stops the handoff.
--dry-run
Check destination daemon reachability and resolve its saved repository name, path, environment and OS; print the note check and git state without committing, pushing, fetching, writing notes or creating a Pane.
--json
Print machine-readable output.
runpane handoff --template > ~/handoff.md
runpane handoff "claude opus on parsas-macbook-pro" --note-file ~/handoff.md --push
runpane handoff "codex gpt-5 high on parsa-devbox" --note-file ~/handoff.md --dry-run --json
runpane handoff --machine build-server --agent cursor --note-file ~/handoff.md
runpane watch

Wait for workspace agent and Pane transitions using a daemon-held cursor.

runpane watch [--as <name>|--since <generation>] [--follow] [--format <lines|json>] [--heartbeat <seconds>] [--idle-after <ms>] [--settle <ms>] [--blocked-settle <ms>] [--min-interval <ms>] [--idle-backoff] [--all-managed|--pane <id>|--session <id|name>] [--include-shells] [--self-test] [--quiet] [--kinds <kind,...>] [--repo <selector>] [--name-contains <text>] [--timeout-ms <ms>] [--from <now|earliest>] [--json] [--pane-dir <path>]

You can watch agent terminals in visible, unarchived panes. Ordinary shell tabs are excluded by default when you follow events.

READY means the agent looks idle. BLOCKED means it needs attention. UNKNOWN means Pane can't tell its state. STUCK means there's text waiting in its input box. Check the terminal before acting on a state.

A named cursor saves your place in the event stream. The next request with that name acknowledges the previous batch. A following watcher makes those requests automatically; it doesn't wait for your script to finish its work. Make your actions safe to repeat. For processing you need to resume reliably, save your own progress after each batch.

runpane watch --follow is the responsive monitor: lines, 60-second heartbeats, IDLE every 10 minutes, managed-agent scope, redacted STUCK detection, no settle, no batching, all kinds. Expensive consumers (one wake-up per line) opt into the cadence flags. Pane Chat arms them automatically through its pane-orchestrator skill; only your own scripts need to pass them. Named cursors persist in the Pane data directory.

--as <consumer-name>
Use a persisted named cursor (at-least-once delivery): 1-128 letters, numbers, dots, underscores, or hyphens (daemons before this release accept 64). Default under --follow: session-<uuid> with --session (session-<name> for a name; shortened to session-<sha256 prefix> when longer than 64 characters), else PANE_PANEL_ID when set, shortened to panel-<sha256 prefix> when it is longer than 64 characters; otherwise anonymous.
--since <generation>
Use an explicit generation cursor instead of a name. Cannot be combined with --as, or with --settle, --blocked-settle, --min-interval.
--from <now|earliest>
Starting point for a new named cursor. Default now (silent baseline); earliest replays the journal.
--follow
Continue waiting until interrupted. Required by every cadence flag.
--format <lines|json>
Output format. Default lines in every mode; --json selects json.
--heartbeat <seconds>
Healthy-silence bound; a HEARTBEAT line proves the watcher is alive. Default 60 under --follow, 0 otherwise. Any monitor that wakes an agent should pass --quiet, which drops it.
--idle-after <milliseconds>
IDLE fires after a READY panel has stayed idle this long, then re-fires every multiple. Default 600000 under --follow, 0 otherwise.
--settle <milliseconds>
Opt-in (follow only): emit READY only after the panel stays idle this long; a BUSY, BLOCKED, UNKNOWN, EXIT, or GONE inside the window cancels it silently. Default 0. Use when a pane flips idle/working while it waits on subagents; the unattended orchestrator value is 180000, the user-present value 60000.
--blocked-settle <milliseconds>
Opt-in (follow only): emit BLOCKED only after this window; an in-pane answer inside it cancels the line. Default 0. The unattended orchestrator value is 30000, the user-present value 15000.
--min-interval <milliseconds>
Opt-in (follow only): hold READY, IDLE, NEW, GONE, EXIT, and UNKNOWN lines and flush them together at most once per interval; BLOCKED, REPORT, pr.conflicted, and failed pr.checks bypass it and carry the held lines with them. Default 0. The unattended orchestrator value is 600000, the user-present value 120000.
--idle-backoff
Opt-in (follow only): IDLE fires at --idle-after, then 30m, 1h, 3h, then daily per panel; any activity resets the schedule. Default off (fixed multiples of --idle-after).
--kinds <kind,...>
Limit event kinds: agent.ready, agent.busy, agent.blocked, agent.unknown, agent.idle, pane.created, pane.gone, panel.exited, agent.report, pane.associated, pane.detached, pr.conflicted, pr.checks, pr.merged. agent.report arrives only when listed explicitly. Default all, except that pane.associated, pane.detached, and the pr.* kinds arrive only when listed here or implied by --session. Drop agent.busy for any consumer that acts on lines; BUSY carries no action.
--pane <pane-id>
Limit to a Pane; repeatable. Default all managed panes. Cannot be combined with --session.
--session <id|name>
Follow every Pane associated with a named Session (id or exact name). The daemon re-reads membership on every read, so a Pane associated after arming is included and a detached or archived Pane drops out without a re-arm. The Session's own orchestrator panels are never reported. Cannot be combined with --pane or --all-managed; an unknown Session fails.
--exclude-pane <pane-id>
Exclude a Pane; repeatable.
--repo <selector>
Limit to a saved repository (active, id, path, or name). Default all repositories.
--name-contains <text>
Limit by Pane name substring.
--agents-only
Limit to CLI agent panels. Default on under --follow.
--all-managed
Explicit spelling of the default scope: every non-archived, non-hidden managed Pane. Cannot be combined with --pane.
--include-shells
Include ordinary shell panels.
--timeout-ms <milliseconds>
Wait timeout per request; 0 polls once. Default 60000, capped at 120000 (the follow loop re-issues requests).
--limit <count>
Maximum entries per response. Default 256.
--ack-now
At-most-once named-cursor delivery (advance before you act). Default at-least-once.
--include-held-input
Include up to 120 characters of unsubmitted composer text in JSON entries. Default off: under --follow, JSON entries carry only heldInputPresent: true.
--no-held-input
Disable redacted held-input detection under --follow: no STUCK lines, and no heldInputPresent in JSON.
--self-test
Probe the watch path anonymously without advancing a named cursor; run it before arming --follow.
--quiet
Drop the control lines that only prove liveness: WATCH OK, HEARTBEAT, and WATCH RECONNECTED (_ok, _heartbeat, _reconnected in JSON). WATCH ERROR/_error, RESET/_reset, and DROPPED/_dropped always print, and --self-test still prints its WATCH OK result. Alias: --no-control-lines.
--json
Emit structured NDJSON; held-input content remains opt-in.
--pane-dir <path>
Connect to a specific Pane data directory.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane watch --self-test
runpane watch --follow
runpane watch --as monitor --follow --quiet --json
runpane watch --follow --quiet --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff
runpane watch --follow --quiet --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 60000 --blocked-settle 15000 --min-interval 120000
runpane watch --session <id|name> --follow --quiet --json --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone,pane.associated,pane.detached,pr.conflicted,pr.checks,pr.merged --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff
runpane watch --session <id|name> --follow --quiet --json --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone,pane.associated,pane.detached,pr.conflicted,pr.checks,pr.merged --settle 60000 --blocked-settle 15000 --min-interval 120000

Defaults stay responsive: no settle, no batching, all kinds, IDLE every --idle-after. Cadence flags are opt-in for expensive consumers and require --follow.

Unattended profile (what Pane Chat arms automatically, for overnight or background runs): runpane watch --self-test, then runpane watch --follow --quiet --kinds agent.ready,agent.blocked,agent.idle,panel.exited,pane.gone --settle 180000 --blocked-settle 30000 --min-interval 600000 --idle-backoff. Budget: about 6 wake-ups per active pane per hour worst case, usually 1-3; READY can arrive up to about 13 minutes after the turn ended.

User-present profile (a person is waiting on the result): the same command with --settle 60000 --blocked-settle 15000 --min-interval 120000 and no --idle-backoff. READY arrives within about 3 minutes of the turn ending.

BUSY carries no action; drop it with --kinds. HEARTBEAT is client-side proof of life and is never shaped by cadence flags; pass --quiet for any monitor that wakes an agent.

STUCK means real unsubmitted composer text. An agent prompt suggestion (for example a grey Try "..." hint) never counts.

Dead watch: judge death by a non-zero exit or a WATCH ERROR line, not by silence. If the message says the cursor was superseded, keep the replacement monitor and do not re-arm the old one. Otherwise re-arm once; if it dies again, file runpane doctor --report. Stop the previous monitor before switching profiles.

Cadence state is held per named consumer; an anonymous --follow with a cadence flag names itself follow-<pid>. Held lines survive a reconnect of the same consumer; a changed filter re-delivers them under the new filter.

Journal loss is surfaced through reset and dropped metadata.

The daemon treats omitted idleAfterMs as disabled so older clients never receive agent.idle unexpectedly.

Control lines are not journal entries. JSON kinds and their lines-format text: _ok (WATCH OK, once when armed), _heartbeat (HEARTBEAT, every --heartbeat seconds), _reconnected (WATCH RECONNECTED, after a retried daemon error), _error (WATCH ERROR, a daemon error; the process exits 2 unless --follow retries it), _reset (RESET, the journal restarted or the cursor fell behind; a fresh baseline follows), and _dropped (DROPPED, entries lost to journal truncation). --quiet drops _ok, _heartbeat, and _reconnected; _error, _reset, and _dropped always print.

Under --follow, JSON entries for panels holding unsubmitted composer text carry heldInputPresent: true, the JSON equivalent of the STUCK line. --no-held-input turns this off.

--session <id|name> scopes the watch to a named Session. The daemon resolves the Session once per request and its associated Panes on every read, so sessions associate and sessions detach take effect without a re-arm; archived and detached Panes drop out, and the Session's own orchestrator panels are excluded. Cadence state is keyed by the Session, not its current Panes, so membership changes keep held lines. A detached Pane's held lines are dropped.

Under --session, pane.associated (JOINED <pane-name> pane <pane-id> session <session-id>) and pane.detached (LEFT ...) report membership changes; list them in --kinds next to the agent kinds. Other consumers receive them only when --kinds lists them, so older clients never see an unknown kind.

PR events (decision D7): about every 3 minutes (jittered) the daemon visits each Pane associated with a live Session (none: no gh at all), finds its PR by branch when no open PR is known yet (gh pr list --head, so unwatched workers' new and reopened PRs are found), runs gh pr view on an open PR, and appends pr.conflicted (PR <pane-name> pane <pane-id> #<number> CONFLICTED: the PR now conflicts with its base), pr.checks (... CHECKS PASSED, or CHECKS FAILED <up to five names>: every check on the head commit finished), and pr.merged (... MERGED). Entries carry pr: {number, url, headOid}, plus checks and failingChecks for pr.checks. They fire on transitions only: the first poll of a PR after the daemon starts only records its state, so re-check conflicts after a restart with gh pr view. pr.conflicted and failed pr.checks bypass --min-interval like BLOCKED. Like JOINED/LEFT, they reach a consumer only under --session or when --kinds lists them. Without gh, or while it is signed out or rate limited, polling backs off (up to an hour) and no PR entries arrive.

A daemon that predates --session returns no session field; runpane then fails with WATCH ERROR instead of watching every Pane.

Replay: after a reset (RESET/_reset), the baseline restates current state. In JSON, those entries carry replay: true (and changedWhileAway: true after an epoch change). A replayed agent.ready is never READY: re-read runpane sessions overview instead of acting on it. Lines mode prints only CHANGED for them.

agent.report (REPORT <pane-name> pane <pane-id> panel <panel-id> <state> [pr#<n>] [<head>][: <question>]) is a worker's runpane report. It is opt-in: only a consumer that lists it in --kinds receives it. It bypasses --min-interval, and orchestrators treat it as the completion signal; a READY without a report means look, and maybe nudge.

runpane panes create

1 feature = 1 worktree = 1 branch = 1 Pane; reviews, audits, fixes and QA for it are tabs in that Pane. Create a Pane (a new worktree) only when the work's branch has no Pane yet; for review, audit, fix or QA on existing work use `panels create --pane <id>`.

runpane panes create --repo <selector> --name <name> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [--base <ref>] [--branch <name>] [--prompt-file <path|->] [options] [--pane-dir <path>]
runpane panes create --repo <selector> --name <name> --tool-command <command> [--agent <codex|claude|cursor>] [--source user|agent] [--focus|--no-focus] [--base <ref>] [--branch <name>] [--prompt-file <path|->] [options] [--pane-dir <path>]
runpane panes create --from-json <path|-> [--yes] [--json] [--pane-dir <path>]
--repo <selector>
Repository selector: active, id, exact path, or saved repository name.
--name <name>
Pane/session name.
--base-branch <branch>
Branch the new worktree from this ref (for example origin/main or release/2.4) instead of the repository default.
--worktree-name <name>
Worktree and branch name; defaults to --name. Characters outside [a-z0-9-] are removed.
--agent <codex|claude|cursor>
Built-in agent terminal template to open. With --tool-command, the agent that command runs.
--tool-command <command>
Custom terminal command to run instead of a built-in agent.
--base-branch <ref>
Ref to branch from, such as origin/main or release/foo. --base is an alias.
--branch <name>
Exact new branch name, slashes included (for example agents/w5a). Fails if the branch exists; never renamed to be unique. Defaults to the worktree name.
--worktree-name <name>
Worktree directory name; defaults to --name.
--prompt <text>
Alias for --initial-input; sends text after the command is ready.
--initial-input-file <path|->
Read initial input from a file or stdin. --prompt-file is an alias.
--as-file-pointer
Write the prompt or text to a private file under the Pane directory and send the one line Read and follow <path> instead.
--from-json <path|->
Read a full panes.create request JSON payload.
--source <user|agent>
Mutation source; agent implies background/no-focus creation.
--no-focus
Create the pane in the background without stealing focus.
--focus
Explicitly focus the created pane.
--pinned
Accepted for backward compatibility and now a no-op; panes create already pins by default.
--no-pinned
Create the pane unpinned instead of the default pinned (the Pane UI's favorite/pin star). Pinning never implies focus.
--no-associate
Inside a Session orchestrator, do not associate the created pane with that Session (associated automatically by default).
--yes
Skip confirmation for mutating commands.
--dry-run
Validate and preview without mutating.
--json
Print machine-readable output.
--wait-ready
Wait for each created terminal panel to be ready before returning.
--ready-timeout-ms <ms>
Readiness timeout per pane; defaults to 30000.
--concurrency <count>
Accepted for compatibility. Pane currently serializes multi-pane session creation so queued jobs do not time out before starting.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes create --repo active --name issue-257 --agent <agent> --prompt "Plan this issue" --source agent --no-focus --wait-ready --yes --json
runpane panes create --repo active --name w5a --base origin/main --branch agents/w5a --agent <agent> --prompt-file prompt.md --source agent --no-focus --wait-ready --yes --json
runpane panes create --from-json panes.json --yes --json
runpane panes create --repo active --name issue-123 --agent <agent> --prompt "Plan this issue" --source agent --no-focus --wait-ready --yes --json
runpane panes create --repo active --name issue-123 --agent claude --initial-input-file brief.md --as-file-pointer --source agent --no-focus --wait-ready --yes --json
runpane panes adopt

Adopt an existing externally managed git worktree as a Pane without changing the worktree.

runpane panes adopt --repo <selector> --path <dir> --name <name> --agent <codex|claude|cursor> [--resume <id>] [--folder <name>] [--launch [--prompt <text>|--prompt-file <path|->] [--wait-ready] [--ready-timeout-ms <ms>]] [--no-pinned] [--no-associate] [--dry-run] [--yes] [--json] [--pane-dir <path>]
runpane panes adopt --repo <selector> --path <dir> --name <name> --tool-command <command> [--agent <codex|claude|cursor>] [--folder <name>] [--launch [--prompt <text>|--prompt-file <path|->] [--wait-ready] [--ready-timeout-ms <ms>]] [--no-pinned] [--no-associate] [--dry-run] [--yes] [--json] [--pane-dir <path>]
--repo <selector>
Saved repository selector.
--path <dir>
Existing git worktree path.
--name <name>
Pane name.
--agent <codex|claude|cursor>
Agent whose terminal to create; with --tool-command, the agent that command runs.
--tool-command <command>
Custom command to stage or launch instead of a built-in agent, such as a wrapper that runs one.
--resume <id>
Persist this agent session id and stage its resume command.
--folder <name>
Top-level sidebar folder.
--launch
Run the agent (or its resume command) immediately.
--prompt <text>
Alias for --initial-input; sent once the launched agent is ready. Requires --launch.
--prompt-file <path|->
Alias for --initial-input-file; read the prompt from a file or stdin. Requires --launch.
--wait-ready
Wait for the launched agent to be ready and the prompt submitted before returning. Requires --launch.
--ready-timeout-ms <ms>
Readiness timeout; defaults to 30000.
--no-pinned
Do not pin the adopted pane.
--no-associate
Inside a Session orchestrator, do not associate the adopted pane with that Session (associated automatically by default).
--dry-run
Validate and preview only.
--yes
Skip confirmation.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes adopt --repo active --path /path/to/worktree --name imported --agent codex --resume <id> --yes --json
runpane panes adopt --repo active --path /path/to/worktree --name imported --tool-command "agent-farm run free-range" --agent claude --launch --yes --json
runpane panes adopt --repo active --path /path/to/worktree --name imported --agent claude --launch --prompt-file prompt.md --wait-ready --yes --json
runpane panes archive

Archive a Pane (session) exactly like the UI Archive action, including safe removal of its Pane-managed git worktree, or archive every merged Pane in a Session.

runpane panes archive --pane <pane-id> [--source user|agent] [--force] [--remove-worktree] [--dry-run] --yes [--json] [--pane-dir <path>]
runpane panes archive --session <id|name> --merged [--remove-worktree] [--source user|agent] [--dry-run] --yes [--json] [--pane-dir <path>]

If you adopted an existing worktree, archiving its pane leaves that directory in place by default. Add --remove-worktree only when you want Pane to remove it too. The same safety checks apply.

--pane <pane-id>
Pane/session id to archive. Required unless --session is used.
--source <user|agent>
Mutation source; does not change archive safety behavior.
--force
Archive even if the pane's branch has uncommitted, untracked, or unpushed changes.
--remove-worktree
Also check and remove an adopted Pane's worktree. Pane-managed worktrees are always removed; the local branch is always kept.
--session <id|name>
Archive the Panes associated with this named Session instead of one Pane. Requires --merged.
--merged
With --session, archive only Panes that are clean and pushed, or merged via a pull request; skip the rest with a reason.
--yes
Skip confirmation for mutating commands.
--dry-run
Refresh and print archive safety evidence without archiving.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes archive --pane <pane-id> --source agent --yes --json
runpane panes archive --pane <pane-id> --dry-run --json
runpane panes archive --pane <pane-id> --remove-worktree --yes --json
runpane panes archive --session <id|name> --merged --dry-run --json
runpane panes archive --session <id|name> --merged --remove-worktree --yes --json
runpane panes archive --pane <pane-id> --force --yes --json
runpane panes pin

Declaratively pin a Pane; pinned is the Pane UI's favorite/pin star and repeated requests are idempotent.

runpane panes pin --pane <pane-id> --yes [--dry-run] [--json] [--pane-dir <path>]
--pane <pane-id>
Pane/session id to pin.
--yes
Skip confirmation for mutating commands.
--dry-run
Validate and preview without mutating.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes pin --pane <pane-id> --yes --json
runpane panes pin --pane <pane-id> --dry-run --json
runpane panes unpin

Declaratively unpin a Pane; pinned is the Pane UI's favorite/pin star and repeated requests are idempotent.

runpane panes unpin --pane <pane-id> --yes [--dry-run] [--json] [--pane-dir <path>]
--pane <pane-id>
Pane/session id to unpin.
--yes
Skip confirmation for mutating commands.
--dry-run
Validate and preview without mutating.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes unpin --pane <pane-id> --yes --json
runpane panes unpin --pane <pane-id> --dry-run --json
runpane panes rename

Rename a Pane without changing its worktree, branch, panels, or focus.

runpane panes rename --pane <pane-id> --name <new-name> --yes [--dry-run] [--json] [--pane-dir <path>]
--pane <pane-id>
Pane/session id to rename.
--name <new-name>
New non-empty Pane/session name; surrounding whitespace is trimmed.
--yes
Skip confirmation for mutating commands.
--dry-run
Validate and return the projected updated pane without mutating.
--json
Print machine-readable output including the updated pane.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes rename --pane <pane-id> --name issue-393 --yes --json
runpane panes rename --pane <pane-id> --name issue-393 --dry-run --json
runpane panes focus

Raise the Pane window and select a Pane (and optionally one of its panels) on explicit user request.

runpane panes focus --pane <pane-id> [--panel <panel-id>] --source user|agent --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane/session id to focus. Must be an active (non-archived) Pane.
--panel <panel-id>
Optional panel/tab id inside the Pane to select; must belong to the focused Pane.
--source <user|agent>
Mutation source; does not change focus behavior.
--yes
Skip confirmation for mutating commands; required in non-interactive contexts because focusing steals window focus.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes focus --pane <pane-id> --source user --yes --json
runpane panes focus --pane <pane-id> --panel <panel-id> --source user --yes --json
runpane panels create

Open a new agent or terminal tab inside an existing Pane, sharing its worktree. The default for review, QA, fixes and any other agent on work that already has a Pane.

runpane panels create --pane <pane-id> --agent <codex|claude|cursor> [--source user|agent] [--focus|--no-focus] [--wait-ready] --yes [--json] [--pane-dir <path>]
runpane panels create --pane <pane-id> --tool-command <command> [--agent <codex|claude|cursor>] [--title <title>] [--focus|--no-focus] [--wait-ready] --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Existing Pane session id to add the panel to.
--agent <codex|claude|cursor>
Built-in agent command template to launch. With --tool-command, the agent that command runs.
--tool-command <command>
Custom terminal command to launch instead of a built-in agent.
--title <title>
Panel title override.
--initial-input <text>
Initial input to send after the tool starts.
--initial-input-file <path|->
Read initial input from a file or stdin.
--as-file-pointer
Write the prompt or text to a private file under the Pane directory and send the one line Read and follow <path> instead.
--source <user|agent>
Mutation source; agent implies background creation.
--no-focus
Create the panel in the background without changing active panel.
--focus
Explicitly focus the created panel.
--wait-ready
Wait until the terminal tool is ready.
--ready-timeout-ms <ms>
Readiness wait timeout.
--yes
Skip confirmation for this mutating command.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panels create --pane <pane-id> --agent <agent> --source agent --no-focus --wait-ready --yes --json
runpane panels create --pane <pane-id> --tool-command <command> --title <title> --source agent --no-focus --wait-ready --yes --json
runpane panels create --pane <pane-id> --tool-command "agent-farm run free-range" --agent claude --source agent --no-focus --wait-ready --yes --json
runpane panels open

Open a URL or file as a browser/editor tab in a Pane, in split view beside the agent by default.

runpane panels open [--pane <pane-id>] (--url <url>|--file <path>) [--title <title>] [--split|--tab] [--focus|--no-focus] [--source user|agent] --yes [--json]
--pane <pane-id>
Pane to open the tab in; defaults to PANE_SESSION_ID (the calling panel's Pane, including a Session orchestrator's).
--url <url>
http(s) or file URL to open in a browser tab. WSL file URLs use the same automatic path conversion as --file. Pass exactly one of --url or --file.
--file <path>
File inside the Pane worktree, relative or absolute. WSL panes accept Linux, Windows drive, and WSL UNC paths without manual conversion. Files open in an editor tab; supported formats have read-only previews, including HTML source.
--title <title>
Tab title override.
--split
Open in split view beside the primary tab group (default).
--tab
Open in the current tab group instead of split view.
--no-focus
Open the tab without selecting it.
--focus
Select the tab (default). Never raises or focuses the Pane window.
--source <user|agent>
Mutation source.
--yes
Skip confirmation for this mutating command.
--json
Print machine-readable output.
runpane panels open --file plan.html --source agent --yes --json
runpane panels open --url http://localhost:3000 --source agent --yes --json
runpane panels open --pane <pane-id> --file src/app.ts --tab --source agent --yes --json
runpane panels list

List tool panels inside a Pane session.

runpane panels list --pane <pane-id> [--json] [--pane-dir <path>]
--pane <pane-id>
Pane/session id.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panels list --pane <pane-id> --json
runpane panels output

Read recent terminal output from a panel.

runpane panels output --panel <panel-id> [--limit <count>] [--json] [--pane-dir <path>]
--panel <panel-id>
Tool panel id.
--limit <count>
Maximum recent output lines or records to read. Defaults to 200.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panels output --panel <panel-id> --limit 200 --json
runpane panels screen

Read a compact current-screen view from a terminal panel.

runpane panels screen --panel <panel-id> [--limit <count>] [--json] [--pane-dir <path>]
--panel <panel-id>
Terminal panel id.
--limit <count>
Maximum lines to return; defaults to 80.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panels screen --panel <panel-id> --limit 80 --json
runpane panels input

Send input bytes to a terminal panel.

runpane panels input --panel <panel-id> (--text <text>|--keys <name,...>|--input-file <path|->) [--source user|agent] --yes [--json] [--pane-dir <path>]
--panel <panel-id>
Terminal panel id.
--text <text>
Text bytes to send.
--keys <name,...>
Comma-separated key names to press in order: enter, escape, tab, backspace, space, up, down, left, right, ctrl-c, ctrl-d, or any single character.
--input-file <path|->
Read input from a file or stdin.
--yes
Skip confirmation for this mutating command.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
printf 'Continue\n' | runpane panels input --panel <panel-id> --input-file - --yes
printf '\003' | runpane panels input --panel <panel-id> --input-file - --yes
runpane panels input --panel <panel-id> --text "simple text" --yes --json
runpane panels input --panel <panel-id> --keys down,enter --yes --json
runpane panels submit

Send and submit text to a terminal panel, including idle agent composers.

runpane panels submit --panel <panel-id> (--text <text>|--input-file <path|->) [--as-file-pointer] [--interrupt] [--source user|agent] --yes [--json] [--pane-dir <path>]
--panel <panel-id>
Terminal panel id.
--text <text>
Text to submit before Enter.
--input-file <path|->
Read text from a file or stdin before Enter.
--as-file-pointer
Write the prompt or text to a private file under the Pane directory and send the one line Read and follow <path> instead.
--interrupt
Interrupt the current turn and wait up to 30 seconds for an empty idle composer before delivering. Escape for Codex/Claude; Ctrl+C for Cursor.
--yes
Skip confirmation for this mutating command.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panels submit --panel <panel-id> --text "2" --yes --json
printf "echo hello" | runpane panels submit --panel <panel-id> --input-file - --yes --json
runpane panels submit --panel <panel-id> --input-file brief.md --as-file-pointer --yes --json
runpane panels submit --panel <panel-id> --text "Stop that approach and follow this correction" --interrupt --yes --json
runpane panels submit-composer

Submit an agent composer using the panel-appropriate key sequence.

runpane panels submit-composer --panel <panel-id> [--strategy auto|codex-ctrl-enter|enter|tab] --yes [--json] [--pane-dir <path>]
--panel <panel-id>
Terminal panel id.
--strategy <auto|codex-ctrl-enter|enter|tab>
Composer submit key sequence strategy.
--yes
Skip confirmation for this mutating command.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panels submit-composer --panel <codex-panel-id> --strategy auto --yes --json
runpane panels submit-composer --panel <panel-id> --strategy enter --yes --json
runpane panels wait

Wait for a terminal panel to initialize, become ready/idle, or contain text.

runpane panels wait --panel <panel-id> [--for initialized|ready|idle|text] [--contains <text>] [--timeout-ms <ms>] [--interval-ms <ms>] [--json] [--pane-dir <path>]
--panel <panel-id>
Terminal panel id.
--for <initialized|ready|idle|text>
Condition to wait for. Defaults to ready for CLI panels and idle otherwise.
--contains <text>
Text required for --for text; implies --for text when --for is omitted.
--timeout-ms <ms>
Wait timeout; defaults to 30000.
--interval-ms <ms>
Polling interval; defaults to 500.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panels wait --panel <panel-id> --for ready --timeout-ms 30000 --json
runpane panels wait --panel <panel-id> --contains "Ready" --json
runpane panels last-message

Read an agent's last reply from its transcript, without scraping the screen.

runpane panels last-message --panel <panel-id> [--limit <count>] [--json] [--pane-dir <path>]
--panel <panel-id>
Agent panel id.
--limit <count>
Maximum characters to return; defaults to 20000. The end of the reply is kept.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panels last-message --panel <panel-id> --json
runpane panes git-status

Read the git status of a Pane worktree: uncommitted, unpushed, and behind-main counts.

runpane panes git-status --pane <pane-id> [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes git-status --pane <pane-id> --json
runpane panes commit

Stage all changes in a Pane worktree and commit them.

runpane panes commit --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--message <message>
Commit message; the first line is the title.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes commit --pane <pane-id> --message <message> --yes --json
runpane panes push

Push a Pane branch to its remote.

runpane panes push --pane <pane-id> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes push --pane <pane-id> --yes --json
runpane panes pull

Pull the remote branch into a Pane worktree.

runpane panes pull --pane <pane-id> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes pull --pane <pane-id> --yes --json
runpane panes rebase-main

Rebase a Pane branch onto the latest main branch.

runpane panes rebase-main --pane <pane-id> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes rebase-main --pane <pane-id> --yes --json
runpane panes restore

Restore an archived Pane, recreating its worktree.

runpane panes restore --pane <pane-id> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes restore --pane <pane-id> --yes --json
runpane panes squash-rebase

Squash a Pane branch into one commit and rebase it onto main.

runpane panes squash-rebase --pane <pane-id> --message <message> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--message <message>
Commit message; the first line is the title.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes squash-rebase --pane <pane-id> --message <message> --yes --json
runpane panes stash

Stash uncommitted changes in a Pane worktree.

runpane panes stash --pane <pane-id> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes stash --pane <pane-id> --yes --json
runpane panes stash-pop

Apply and drop the latest stash in a Pane worktree.

runpane panes stash-pop --pane <pane-id> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes stash-pop --pane <pane-id> --yes --json
runpane panes soft-reset

Undo the last commit in a Pane, keeping its changes staged.

runpane panes soft-reset --pane <pane-id> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes soft-reset --pane <pane-id> --yes --json
runpane panes fetch

Fetch the remote for a Pane worktree.

runpane panes fetch --pane <pane-id> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes fetch --pane <pane-id> --yes --json
runpane panes run-script

Run the repository's run script in a Pane.

runpane panes run-script --pane <pane-id> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes run-script --pane <pane-id> --yes --json
runpane panes stop-script

Stop the run script running in a Pane.

runpane panes stop-script --pane <pane-id> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes stop-script --pane <pane-id> --yes --json
runpane panes move

Move a Pane into a sidebar folder.

runpane panes move --pane <pane-id> --folder <folder-id> --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id from panes list or agents start.
--folder <folder-id>
Folder id from folders list.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane panes move --pane <pane-id> --folder <folder-id> --yes --json
runpane folders list

List the sidebar folders of a repository.

runpane folders list --repo <repo-id> [--json] [--pane-dir <path>]
--repo <repo-id>
Numeric repository id from repos list.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane folders list --repo <repo-id> --json
runpane folders create

Create a sidebar folder in a repository.

runpane folders create --repo <repo-id> --name <name> --yes [--json] [--pane-dir <path>]
--repo <repo-id>
Numeric repository id from repos list.
--name <name>
Folder name.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane folders create --repo <repo-id> --name <name> --yes --json
runpane docs read

Read one Pane doc, help topic, or skill in full.

runpane docs read --doc <path> [--json]
--doc <path>
Path from docs search, such as docs/PANE_MCP.md.
--json
Print machine-readable output.
runpane docs read --doc docs/PANE_MCP.md --json
runpane agents start

Start an agent on a task: create a Pane in a repository, launch the agent with the prompt, and wait until it is ready.

runpane agents start --repo <selector> --name <name> (--agent <codex|claude|cursor>|--tool-command <command>) --prompt <task> [--base-branch <branch>] --yes [--json] [--pane-dir <path>]
--repo <selector>
Repository: active, id, exact path, or saved name.
--name <name>
Name for the new Pane.
--agent <codex|claude|cursor>
Built-in agent to launch.
--tool-command <command>
Custom terminal command instead of a built-in agent.
--prompt <task>
The task to send once the agent is ready.
--base-branch <branch>
Branch to start the worktree from.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane agents start --repo active --name fix-login --agent claude --prompt "Fix the login redirect" --yes --json
runpane agents status

Check on an agent: whether it is working, ready, blocked, or idle, plus its current screen.

runpane agents status (--pane <pane-id>|--panel <panel-id>) [--limit <count>] [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id; its agent panel is used.
--panel <panel-id>
Panel id.
--limit <count>
Screen lines to return; defaults to 40.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane agents status --pane <pane-id> --json
runpane agents send

Send a follow-up message to an agent and confirm it was submitted.

runpane agents send (--pane <pane-id>|--panel <panel-id>) --text <message> [--as-file-pointer] --yes [--json] [--pane-dir <path>]
--pane <pane-id>
Pane id; its agent panel is used.
--panel <panel-id>
Panel id.
--text <message>
The message to submit.
--as-file-pointer
Write the prompt or text to a private file under the Pane directory and send the one line Read and follow <path> instead.
--yes
Confirm this change; required in non-interactive shells.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane agents send --pane <pane-id> --text "Also add a test" --yes --json
runpane agents send --pane <pane-id> --text "$(cat review-notes.md)" --as-file-pointer --yes --json
runpane report

Hand back a worker's structured report: state, PR, head commit, summary, and the question when blocked.

runpane report --state <ready|blocked|failed|done> [--pr <number>] [--head <sha>] [--summary <text>|--summary-file <path|->] [--question <text>] [--pane <pane-id> --panel <panel-id>] [--json] [--pane-dir <path>]
--state <ready|blocked|failed|done>
ready: work is ready for review; done: finished with nothing to review; blocked: needs an answer; failed: could not finish.
--pr <number>
Pull request number.
--head <sha>
Head commit the report is about, 7-40 hex characters.
--summary <text>
Summary text; up to 16,000 characters are kept.
--summary-file <path|->
Read the summary from a file or stdin; the absolute path is kept as summaryPath.
--question <text>
What you need answered; required with --state blocked.
--pane <pane-id>
Pane id when not running inside a Pane terminal (PANE_SESSION_ID).
--panel <panel-id>
Panel id when not running inside a Pane terminal (PANE_PANEL_ID).
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane report --state ready --pr 747 --head fc5dce9 --summary-file /tmp/report.md --json
runpane report --state blocked --question "Should the migration drop the old column?"
runpane sessions list

List durable named orchestration Sessions.

runpane sessions list [--json] [--pane-dir <path>]
--pane-dir <path>
Connect to a specific Pane data directory.
runpane sessions list [--json] [--pane-dir <path>]
runpane sessions create

Create a durable named orchestration Session and its hidden terminal owner; JSON isPinned sets the pin star (default false).

runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]
--pane-dir <path>
Connect to a specific Pane data directory.
runpane sessions create --from-json <path|-> [--json] [--pane-dir <path>]
runpane sessions get

Read one durable named orchestration Session.

runpane sessions get --session <id|name> [--json] [--pane-dir <path>]
--pane-dir <path>
Connect to a specific Pane data directory.
runpane sessions get --session <id|name> [--json] [--pane-dir <path>]
runpane sessions update

Update a Session overview from structured JSON; isPinned sets the UI pin star.

runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]
--pane-dir <path>
Connect to a specific Pane data directory.
runpane sessions update --session <id|name> --from-json <path|-> [--json] [--pane-dir <path>]
runpane sessions set-agent

Switch the durable terminal agent for a named Session.

runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]
--pane-dir <path>
Connect to a specific Pane data directory.
runpane sessions set-agent --session <id|name> --agent <codex|claude|cursor> [--json] [--pane-dir <path>]
runpane sessions associate

Associate a user-visible Pane with a named Session.

runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]
--pane-dir <path>
Connect to a specific Pane data directory.
runpane sessions associate --session <id|name> --pane <pane-id> [--json] [--pane-dir <path>]
runpane sessions detach

Detach a Pane from a named Session.

runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]
--pane-dir <path>
Connect to a specific Pane data directory.
runpane sessions detach --session <id|name> [--pane <pane-id>] [--json] [--pane-dir <path>]
runpane sessions overview

Read a live status, activity, git, and pull request overview for a named Session.

runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]
--pane-dir <path>
Connect to a specific Pane data directory.
runpane sessions overview --session <id|name> [--json] [--pane-dir <path>]
runpane lock acquire

Acquire a named lock on a resource shared between agents, such as one test account, optionally waiting for it.

runpane lock acquire --name <name> --ttl <duration> [--wait <milliseconds>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]
--name <name>
Lock name: 1-128 letters, digits, ".", "_", or "-".
--ttl <duration>
How long the lock is held before it expires, such as 90s, 30m, or 2h; at most 24h. Acquire again before it runs out to renew.
--wait <milliseconds>
Wait this long for the lock to come free. The CLI waits in daemon calls of up to 120 seconds each.
--note <text>
What the lock is for, shown to other agents. Required outside a Pane terminal, where it also names the owner.
--pane <pane-id>
Act for this Pane instead of $PANE_SESSION_ID.
--panel <panel-id>
Act for this panel instead of $PANE_PANEL_ID.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane lock acquire --name testing-account --ttl 30m --wait 1800000 --note "call QA" --json
runpane lock acquire --name staging-db --ttl 10m --json
runpane lock release

Release a named lock you hold, or force-release another owner's lock.

runpane lock release --name <name> [--force] [--session <id|name>] [--note <text>] [--pane <pane-id>] [--panel <panel-id>] [--json] [--pane-dir <path>]
--name <name>
Lock name.
--force
Release the lock even though another owner holds it.
--session <id|name>
Session whose lock to release; defaults to the caller's Session, or global.
--note <text>
Outside a Pane terminal, the note the lock was acquired with.
--pane <pane-id>
Act for this Pane instead of $PANE_SESSION_ID.
--panel <panel-id>
Act for this panel instead of $PANE_PANEL_ID.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane lock release --name testing-account --json
runpane lock release --name testing-account --session "<session-id-or-name>" --force --json
runpane lock list

List held named locks, optionally only one Session's.

runpane lock list [--session <id|name>] [--json] [--pane-dir <path>]
--session <id|name>
Named Session id or exact name.
--json
Print machine-readable output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane lock list --json
runpane lock list --session "<session-id-or-name>" --json
runpane sessions unpin

Declaratively unpin a named Session using the UI pin state; repeated requests keep the requested state.

runpane sessions unpin --session <id|name> [--json] [--pane-dir <path>]
--session <id|name>
Named Session id or exact name.
--json
Print JSON output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane sessions unpin --session <id|name> [--json] [--pane-dir <path>]
runpane sessions pin

Declaratively pin a named Session using the UI pin state; repeated requests keep the requested state.

runpane sessions pin --session <id|name> [--json] [--pane-dir <path>]
--session <id|name>
Named Session id or exact name.
--json
Print JSON output.
--pane-dir <path>
Connect to a specific Pane data directory.
runpane sessions pin --session <id|name> [--json] [--pane-dir <path>]

pertanyaan yang sering diajukan

atau
Unduh*
Peringatan Windows SmartScreenUnduhan langsung bisa menampilkan peringatan SmartScreen selama Pane belum ditandatangani. Pane sepenuhnya open source. Kamu bisa memeriksa kodenya atau build sendiri dari kode sumber.1. Klik Info selengkapnya2. Klik Tetap jalankan3. Lanjutkan instalasiInstalasi PowerShell mengunduh rilis resmi secara langsung dan menghindari sebagian besar masalah saat mengunduh lewat browser.instalasi global npm
Tempelkan di PowerShell.Linux