id = "pi"
name = "pi"
homepage = "https://pi.dev"
description = "A terminal-based coding agent."
icon = "theSVG:pi"
executables = ["pi"]
[dotfiles]
paths = ["~/.pi/agent/settings.json", "~/.pi/agent/extensions/"]
exclude = [
"~/.pi/agent/sessions/",
"~/.pi/agent/logs/",
"~/.pi/agent/cache/",
]
secret = ["~/.pi/agent/auth.json"]
[commands]
format = 1
label = "Run the coding assistant"
description = "Start pi with a prompt, choose provider, model and session handling, or run non-interactively. Extension flags, skills and themes are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = false, short_attached = false, short_bundles = false }
[[commands.source]]
id = "help"
kind = "help"
revision = "pi --help (local)"
evidence = """
Usage:
pi [options] [@files...] [messages...]
--provider <name> Provider name (default: google)
--model <pattern> Model pattern or ID (supports "provider/id" and optional ":<thinking>")
--print, -p Non-interactive mode: process prompt and exit
--continue, -c Continue previous session
--resume, -r Select a session to resume
--no-session Don't save session (ephemeral)
--thinking <level> Set thinking level: off, minimal, low, medium, high, xhigh
--no-tools, -nt Disable all tools by default (built-in and extension)
--append-system-prompt <text> Append text or file contents to the system prompt (can be used multiple times)
--no-context-files, -nc Disable AGENTS.md and CLAUDE.md discovery and loading
--offline Disable startup network operations (same as PI_OFFLINE=1)
"""
[[commands.field]]
id = "messages"
label = "Prompt"
description = "Initial message. Prefix a file path with @ to include it."
type = "string"
position = 0
multiple = true
sources = ["help"]
[[commands.field]]
id = "print"
label = "Non-interactive (print and exit)"
type = "boolean"
option = ["--print", "-p"]
sources = ["help"]
[[commands.field]]
id = "provider"
label = "Provider"
type = "string"
option = ["--provider"]
sources = ["help"]
[[commands.field]]
id = "model"
label = "Model"
description = "Pattern or ID; provider/id and :thinking suffix are accepted."
type = "string"
option = ["--model"]
sources = ["help"]
[[commands.field]]
id = "thinking"
label = "Thinking level"
type = "enum"
option = ["--thinking"]
choices = [{ value = "off", label = "Off" }, { value = "minimal", label = "Minimal" }, { value = "low", label = "Low" }, { value = "medium", label = "Medium" }, { value = "high", label = "High" }, { value = "xhigh", label = "Extra high" }]
sources = ["help"]
[[commands.field]]
id = "continue"
label = "Continue previous session"
type = "boolean"
option = ["--continue", "-c"]
sources = ["help"]
[[commands.field]]
id = "resume"
label = "Pick a session to resume"
type = "boolean"
option = ["--resume", "-r"]
sources = ["help"]
[[commands.field]]
id = "no_session"
label = "Ephemeral (do not save session)"
type = "boolean"
option = ["--no-session"]
sources = ["help"]
[[commands.field]]
id = "no_tools"
label = "Disable all tools"
type = "boolean"
option = ["--no-tools", "-nt"]
sources = ["help"]
[[commands.field]]
id = "no_context_files"
label = "Skip AGENTS.md / CLAUDE.md"
type = "boolean"
option = ["--no-context-files", "-nc"]
sources = ["help"]
[[commands.field]]
id = "append_system_prompt"
label = "Append to system prompt"
type = "string"
option = ["--append-system-prompt"]
multiple = true
sources = ["help"]
[[commands.field]]
id = "offline"
label = "Offline startup"
type = "boolean"
option = ["--offline"]
sources = ["help"]
[[commands.task]]
id = "one_shot"
label = "One-shot prompt"
fields = ["messages", "print", "model"]
required = ["messages", "print"]
set = { print = [true] }
[[commands.task]]
id = "resume"
label = "Continue last session"
fields = ["continue", "messages"]
required = ["continue"]
set = { continue = [true] }
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["messages", "print", "provider", "model", "thinking", "continue", "resume"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["no_session", "no_tools", "no_context_files", "append_system_prompt", "offline"]