Skip to content

CLI Reference

planeai-cli is a companion CLI that lets you script and automate planeai from the terminal. Most commands output JSON by default and accept a --pretty flag for human-readable output. The axi subcommand outputs TOON (a token-efficient text format) for agent consumption.

On macOS, brew install --cask nicolegros/tap/planeai installs the app and links planeai-cli into $(brew --prefix)/bin.

Otherwise, install the CLI from within the app via Preferences → Advanced → Command line or with the system installer bundled with each release.

Once installed, it’s available as planeai-cli on your PATH.

BehaviorDetails
Output formatJSON (single line) by default
Pretty outputAdd --pretty to any command for indented JSON or tables
ErrorsPrinted to stderr as {"error": "..."}, exits with code 1
DatabaseUses the same SQLite database as the desktop app
ConfigReads ~/.config/planeai/config.json (same as the app)

Manage agent sessions.

Create and launch a new agent session.

Terminal window
planeai-cli session create --project <name> --branch <branch> [options]
FlagDescription
--projectProject name (required)
--branchGit branch to use (required)
--nameDisplay name for the session
--new-branchCreate the branch if it doesn’t exist
--worktreeUse a git worktree instead of checking out in-place
--base-branchBase branch for new branch / worktree (default: main)
--yoloEnable autonomous mode (skip confirmations)
--providerProvider to use (overrides default_provider)
--task-keyAssociate a task key with this session
--task-projectProject (name or id) owning --task-key, when the session runs in another project’s repo
--promptInitial prompt to send to the agent
--parentParent session ID (for orchestration tracking). Falls back to $PLANEAI_SESSION_ID env var

List active sessions.

Terminal window
planeai-cli session ls [--archived] [--pretty]
FlagDescription
--archivedShow archived sessions only

Permanently destroy a session and stop its tmux/daemon process. Its worktree is removed later by stale worktree cleanup.

Terminal window
planeai-cli session delete <id>

The id can be a prefix — it will match if unambiguous.

Archive a session (stops the agent but preserves the record).

Terminal window
planeai-cli session archive <id>

List direct child sessions of a parent session.

Terminal window
planeai-cli session children <id> [--pretty]

Returns a JSON array of child sessions. Empty array if no children exist.

Show the full session tree. Walks up to the root (follows parent_session_id links), then returns all descendants in BFS order.

Terminal window
planeai-cli session tree <id> [--pretty]

Returns a JSON array of session records ordered root-first, then breadth-first. If the parent referenced by parent_session_id no longer exists, the orphaned session becomes the effective root.

Send a prompt to a running session.

Terminal window
planeai-cli session prompt <id> [text]

If text is omitted, the prompt is read from stdin. This is useful for piping multi-line prompts:

Terminal window
echo "Refactor the auth module" | planeai-cli session prompt abc123

Prompts are serialized per session — only one prompt can be in flight at a time. If a concurrent prompt is already being sent to the same session, the command fails immediately with an error. Concurrent prompts to different sessions proceed independently.


Manage registered projects.

List all registered projects.

Terminal window
planeai-cli project list [--pretty]

Built-in task tracker. Tasks are scoped to a project (resolved from --project or the current working directory).

Create a new task.

Terminal window
planeai-cli task add <title> [options]
FlagDescription
--descTask description (default: empty)
--priorityPriority number (default: 0)
--tagsComma-separated tags
--blocked-byComma-separated task keys that block this task
--parentParent task key (for subtasks)
--base-branchBase branch for this task (default: main)
--projectProject name (otherwise resolved from CWD)

Show a task by key.

Terminal window
planeai-cli task show <key> [--project <name>]

List tasks with optional filters.

Terminal window
planeai-cli task ls [--status <status>] [--tags <tags>] [--project <name>]
FlagDescription
--statusFilter by status: todo, in_progress, in_review, done
--tagsComma-separated tags to filter by

Move a task to a new status.

Terminal window
planeai-cli task move <key> <status>

Valid statuses: todo, in_progress, in_review, done.

Edit an existing task.

Terminal window
planeai-cli task edit <key> [options]
FlagDescription
--titleNew title
--descNew description
--priorityNew priority
--tagsReplace tags (comma-sep)
--blocked-byReplace blockers (comma-sep)
--base-branchNew base branch

Delete a task.

Terminal window
planeai-cli task delete <key> [--project <name>]

Control the auto-dispatch orchestrator.

Show orchestrator status (running sessions, concurrency).

Terminal window
planeai-cli symphony status

Stop the orchestrator.

Terminal window
planeai-cli symphony stop

Agent eXperience Interface — token-efficient TOON output designed for autonomous agents. Use planeai-cli axi instead of the JSON commands when building agent integrations.

Running planeai-cli axi with no subcommand prints a context-aware home view (current project, open tasks, active sessions).

List tasks (TOON tabular output).

Terminal window
planeai-cli axi task ls [--status <status>] [--tags <tags>] [--project <name>]

Show task details.

Terminal window
planeai-cli axi task show <key> [--project <name>]

Create a new task.

Terminal window
planeai-cli axi task add <title> [--desc "..."] [--priority <int>] [--tags <a,b>] [--blocked-by <K1,K2>] [--parent <KEY>] [--project <name>]

Move a task to a new status.

Terminal window
planeai-cli axi task move <key> <status> [--project <name>]

Valid statuses: todo, in_progress, in_review, done.

List sessions.

Terminal window
planeai-cli axi session ls [--archived]

Create a new session. Automatically sets the parent session from the $PLANEAI_SESSION_ID environment variable if present (for orchestration tracking).

Terminal window
planeai-cli axi session create --project <name> --branch <branch> [options]
FlagDescription
--projectProject name (required)
--branchGit branch to use (required)
--nameDisplay name for the session
--new-branchCreate the branch if it doesn’t exist
--worktreeUse a git worktree instead of checking out in-place
--base-branchBase branch for new branch / worktree (default: main)
--yoloEnable autonomous mode (skip confirmations)
--providerProvider to use (overrides default_provider)
--task-keyAssociate a task key with this session
--task-projectProject (name or id) owning --task-key
--promptInitial prompt to send to the agent

List direct child sessions of a parent session (TOON output).

Terminal window
planeai-cli axi session children <id>

Example output:

parent_session_id: abc12345
children[2]{id,parent_session_id,name,status,provider,task_key,backend}:
def45678,abc12345,Worker 1,active,codex,PLA-201,daemon
ghi78901,abc12345,Reviewer,exited,kiro,PLA-201,daemon

Show the full session tree rooted at the given session’s root ancestor (TOON output). Walks up parent_session_id links to find the root, then returns all descendants in BFS order.

Terminal window
planeai-cli axi session tree <id>

Example output:

session_tree:
root: abc12345
sessions[3]{id,parent_session_id,name,status,provider,task_key,backend}:
abc12345,,Planner,active,claude,PLA-201,daemon
def45678,abc12345,Worker 1,active,codex,PLA-201,daemon
ghi78901,abc12345,Reviewer,exited,kiro,PLA-201,daemon

Child sessions are linked for observability only. Killing a parent does not automatically kill children — cleanup remains explicit.

Read the last N lines of a session’s terminal output (ANSI-stripped).

Terminal window
planeai-cli axi session read <id> [--lines <n>]
planeai-cli axi session read <id> --after <cursor> [--max-bytes <n>]
FlagDescription
--linesNumber of lines to read (default: 100). Used in tail mode.
--afterOpaque cursor from a previous read. Returns only new output since that cursor.
--max-bytesMaximum bytes to return (default: 0 = unlimited). Only used with --after.

Tail mode (default): returns the last N lines.

Cursor mode (--after): returns only output produced since the cursor. See CONTEXT.md § Session reads for cursor format, truncation semantics, and polling workflow.

Works with both daemon and tmux backends. The local backend does not support cursor mode. The id can be a prefix.

Send a prompt to a running session.

Terminal window
planeai-cli axi session prompt <id> [text]

If text is omitted, reads from stdin.

Prompts are serialized per session. If another prompt is already in flight, the command returns a TOON error with a retry hint:

error: session prompt already in progress
help[1]:
- retry after the current prompt is sent

List registered projects.

Terminal window
planeai-cli axi project ls

Create a session with a worktree in autonomous mode:

Terminal window
planeai-cli session create \
--project myapp \
--branch feat/auth \
--new-branch \
--worktree \
--yolo \
--prompt "Implement JWT authentication"

Dispatch a task to an agent:

Terminal window
planeai-cli task add "Add pagination to /users" \
--desc "Support limit/offset query params" \
--tags backend,api \
--priority 1
planeai-cli task move PLA-1 in_progress

List sessions as a formatted table:

Terminal window
planeai-cli session ls --pretty