Overview
The Pi coding tool lets OpenSRE submit a coding task to the Pi agent. Pi edits files in a workspace to implement the change and returns a summary plus the git diff. It does not commit, push, or open a pull request — it only edits the working tree so you can review the diff.
This is different from using Pi as your LLM provider (LLM_PROVIDER=pi, see LLM providers). There Pi is the reasoning engine; here Pi is the thing that actually changes code.
This is a mutating tool — it changes files on disk. It is disabled by default: it only becomes available to the agent when PI_CODING_ENABLED=1. Enable it only when you want OpenSRE to make code changes. It never commits, pushes, or opens a PR, so you always review the diff.
Prerequisites
- Pi CLI installed and authenticated (same binary/credentials as the Pi provider)
- Explicit opt-in via
PI_CODING_ENABLED=1
Setup
There is no opensre integrations setup target for Pi coding. Enable it with environment variables.
Enable it
- Install and authenticate the Pi CLI:
- Turn the tool on:
- Confirm Pi is ready:
Credentials
Pi coding shares the pi binary and provider credentials with the LLM-provider Pi path. Authenticate once with /login inside pi, or export the provider API key your Pi model needs. OpenSRE does not store a separate Pi coding token.
How it works
When the tool runs, it:
- runs
pi in headless mode inside the workspace with your task plus a fixed set of rules (follow AGENTS.md, do not commit or push, do not run destructive git commands, preserve unrelated changes, summarize what changed),
- lets Pi edit the files,
- returns
success, a summary, the list of changed_files, and the diff (truncated if large).
You review the diff and decide whether to keep, commit, or revert the changes.
Example
Once enabled, the tool is available to the agent (investigation surface). Describe a scoped coding task, for example:
If the agent calls the tool, Pi edits PI_CODING_WORKSPACE, and you get back a summary and the diff to review. Nothing is committed. (The agent decides whether to call the tool; for a deterministic run, invoke pi_coding_task directly — see the tests.)
Verify
There is no dedicated integrations verify target. Confirm readiness with:
In-tool readiness also checks the Pi binary and auth via verify_pi_coding(). If PI_CODING_ENABLED is unset, or the Pi CLI is missing or unauthenticated, the tool stays unavailable and returns a clear message instead of running.
Troubleshooting
Security
- Disabled by default — enable deliberately.
- Edits the working tree only — never commits, pushes, or opens a PR.
- Review every diff before you keep changes.