id = "pi" name = "pi" homepage = "https://pi.dev" description = "A terminal-based coding agent." icon = "theSVG:pi" executables = ["pi"] [dotfiles] # pi keeps everything under ~/.pi/agent. Extensions are hand-written # TypeScript; settings.json is the agent's own preferences. paths = ["~/.pi/agent/settings.json", "~/.pi/agent/extensions/"] exclude = [ "~/.pi/agent/sessions/", "~/.pi/agent/logs/", "~/.pi/agent/cache/", ] # Mode 0600. pi and omp share a codebase but not a credential store. secret = ["~/.pi/agent/auth.json"] # No machine_lines: settings.json carries UI preferences and a changelog # marker, with no absolute paths. Anything machine-specific is in an # extension's own source, which syncs whole. [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 Provider name (default: google) --model Model pattern or ID (supports "provider/id" and optional ":") --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 Set thinking level: off, minimal, low, medium, high, xhigh --no-tools, -nt Disable all tools by default (built-in and extension) --append-system-prompt 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"]