pi-arcweld: an auditable local workspace for the Pi coding agent Don't fork it. Weld it.
pi-arcweld welds a curated local layer to pinned upstream pi-mono source along one visible seam: Pi extensions for plan mode, MCP, and web search, global system guidance, and a reproducible runtime built outside the upstream tree. Upstream stays upstream. The workspace stays yours.
Upstream Pi
pi-mono/ stays a pinned submodule: read and built beside, never rewritten.
The local layer
Extensions, system guidance, and runtime scripts, each at one reviewable address.
- Process
- Curated local layer
- Joint
- Upstream ⟂ local
- Filler
- Five components
- Inspection
- Fully auditable
Pass 01 · Root
Pinned upstream Pi. One audited seam.
The root pass fuses the boundary and nothing else. Upstream Pi source stays pinned in the pi-mono/ Git submodule, and every local decision, from extensions and system guidance to runtime scripts, lives at one address you can audit in a single git diff.
- Source
- pi-mono/ · pinned to upstream main
- Behavior
- extensions/ · owns every curated extension
- Guidance
- system-instruction/APPEND_SYSTEM.md
- Runtime
- build/pi-agent/ · generated and untracked
Pass 02 · Fill
Five curated components. No fork.
Each component changes how the Pi coding agent is built or extended, and leaves upstream Pi legible, replaceable, and current.
scripts/build-pi-agent.sh stages packages, artifacts, and the runnable Pi agent beneath build/pi-agent/. Upstream source is read; generated output lands elsewhere.
- Promotes a smoke-checked runtime artifact.
- Links the user
picommand to the verified build. - Keeps package state out of
pi-mono/.
Plan state is appended instead of rebuilding Pi's system prompt or tool inventory, preserving the provider prompt-cache prefix across mode transitions. Plans are recorded through the always-on update_todos tool from the companion todos extension.
- Restricts built-in write and edit to canonical plan files.
- Blocks model calls to Pi's built-in Bash while active.
- Acts as a local mutation guard, not a universal sandbox.
Configured Model Context Protocol (MCP) servers are discovered in the background while the model sees a fixed two-tool surface. Connection details and secret values remain outside the prompt.
Inspect the MCP security model- User-global configuration is the consent boundary.
- Catalog snapshots preserve a stable prompt prefix.
- Server metadata and output are treated as untrusted.
The questionnaire turns vague branches into visible decisions: focused options, multi-question continuity, free-text escape hatches, and explicit cancellation.
Read the extension source- Supports single and multiple selection.
- Preserves context across question sequences.
- Loads as a curated user-level extension.
A canonical global APPEND_SYSTEM.md improves response behavior without replacing Pi's generated system prompt, active tool guidance, or discovered project context.
- Preserves the runtime-generated prompt head.
- Avoids project-level files that shadow global guidance.
- Keeps machine-specific captures local and ignored.
Also welded in: isolated web-search tools for Claude, Codex, Gemini, Grok, and Exa; cache-preserving compaction; an always-on todo tracker; and the source for a Camoufox browser-automation MCP server. See the full extension inventory.
Pass 03 · Cap
Install pi-arcweld. Verify your pi.
Clone the repository with its pinned Pi source, build the runtime outside the upstream tree with Node.js and npm, and confirm the pi on your PATH is the artifact you just built.
# clone the workspace and its pinned Pi source
$ git clone --recurse-submodules https://github.com/appautomaton/pi-arcweld.git pi-arcweld
$ cd pi-arcweld
# assemble, link, and verify the external runtime
$ scripts/build-pi-agent.sh --link-user-bin
$ pi --version
# verify repository rules and user-level wiring
$ scripts/check-workspace.sh
$ scripts/check-user-wiring.sh
Inspection · Questions
Questions before you strike the arc.
Straight answers about what pi-arcweld is, what it ships, and how it tracks upstream Pi.
- What is pi-arcweld?
- pi-arcweld is an auditable local workspace for the Pi coding agent. It keeps the upstream pi-mono source pinned as a Git submodule and adds a curated local layer of Pi extensions, global system guidance, bounded MCP tooling, and a reproducible runtime build, all as plain files you can review in one repository.
- Is pi-arcweld a fork of Pi?
- No. Upstream Pi stays a pinned, unmodified submodule. Moving to a newer Pi is an explicit fast-forward of that pointer, and every local behavior lives outside the upstream tree, so upstream stays upstream and nothing drifts silently.
- Which Pi extensions does pi-arcweld include?
- A cache-safe plan mode with an always-on todo tracker, a bounded MCP client for Model Context Protocol servers, a keyboard-operable questionnaire, cache-preserving compaction, and isolated web-search tools for Claude, Codex, Gemini, Grok, and Exa. The repository also holds the source for a Camoufox browser-automation MCP server.
- How do I install pi-arcweld?
- Clone the repository with its submodule, run scripts/build-pi-agent.sh --link-user-bin to assemble and verify the Pi runtime outside the upstream tree, and confirm the build with pi --version. Node.js, npm, and Git are the prerequisites.
- How does pi-arcweld stay current with upstream Pi?
- scripts/update-pi-mono.sh fetches upstream main, realigns the pinned checkout, rebuilds the runtime, and leaves the submodule pointer modified for review. It never commits or pushes, so every upstream move is a reviewable diff.
Final · Inspection
Every change to your Pi agent stays inspectable.
That is the whole architecture: preserve the upstream source boundary, give every curated Pi extension one reviewable owner, and verify the runtime that reaches your shell. The source, the workspace rules, and each extension's README are on GitHub.