pi setup

Config

Migration review of the host pi setup (spec FR-015)

Reviewed on 2026-10-02 against the host pi installation (pi 0.86.1, ~/.pi/agent), for use in the sandbox with pi 1.0.0. Only settings.json, the names of the skill folders and pi list were read. auth.json, models-store.json, mcp-cache.json and sessions were not read and are not copied — the sandbox has its own login and state (credentials).

The host installation stays untouched (spec Assumptions).

Model defaults#

Host settingValueDecision
defaultProvideranthropicKept
defaultModelclaude-sonnet-4-6Kept
defaultThinkingLevelhighKept
themedarkKept
lastChangelogVersion0.86.1Dropped — pi-written runtime bookkeeping, not configuration

Packages#

All kept packages are pinned to the latest release on 2026-10-02 (owner’s choice), not the host versions, and were verified to install and load on pi 1.0.0 in the sandbox (pi-sandbox start … -- --help lists their flags, no load errors).

PackageHost versionPinnedPurposeDecisionSandbox notes
pi-subagents0.70.10.74.0Delegation and multi-agent workflowsKeep—
pi-web-access0.30.00.35.0Web search, URL fetch, repo clone, PDF/video extractionKeepUses arbitrary outbound hosts (accepted risk, FR-011)
@juicesharp/rpiv-ask-user-question2.10.12.12.0Structured questions to the owner instead of guessingKeep—
@juicesharp/rpiv-todo2.10.12.12.0Live todo overlayKeep—
pi-lens4.2.14.3.0LSP, linters, formatters, scanners feedbackKeepDownloads LSPs/scanners into the state volume (slower first start); peer range names older pi-tui but loads on 1.0.0
context-mode1.0.1691.0.169Context-saving MCP pluginKeepNative better-sqlite3; its prebuilt binary installs fine
@plannotator/pi-extension0.27.170.27.25Interactive plan review and annotationsKeepNeeds node-pty, which has no linux-arm64 prebuilt → the image ships python3 make g++ to compile it (accepted risk in security). Its browser UI needs a reachable local port; the sandbox publishes none, so the UI is likely unusable
@vigolium/piolium0.0.150.0.15Multi-phase security audits with sub-agentsKeepPeer deps name pi ^0.74; installs and loads on 1.0.0 — watch for breakage
pi-mcp-adapter2.35.0—MCP adapterRemoved (2026-10-04)pi ≥ 1.0 ships built-in MCP support (builtin:mcp); the adapter registered /mcp as well, replaced the built-in and caused a startup warning. No MCP servers were configured, so nothing is lost. Future servers go into mcp.json with credentials by env-var name only (FR-014)

MCP: built-in support instead of pi-mcp-adapter (decision 2026-10-04)#

Assessed against the package page (pi.dev/packages/pi-mcp-adapter, version 5.0.0):

Adapter advantageRelevance in this sandbox
Lazy server start, idle stop after 10 minNone while no or few servers are configured
One proxy tool; author states 10–33 % cheaper single lookups than the built-in codemodeOnly pays off with many servers; bulk work costs about the same
Semantic tool searchNeeds a key for an external service (extra credential, data leaves the sandbox)
OAuth tokens in the OS keychainNo OS keychain in the container; the built-in keeps tokens in the agent state volume (constitution V)
Imports MCP configs of Cursor, Claude Code, VS CodeThe sandbox cannot see host configs by design (constitution I)
MCP UI apps, interactive formsNeed a browser or published ports, which the sandbox does not offer
MCP prompts, elicitation, sampling, TasksA real functional gain — only if a server relies on them

The built-in keeps what matters most here: permission extensions see every MCP call directly (the adapter routes all calls through one mcp tool), servers receive the session roots, and there are no extra dependencies (the adapter adds 15).

The adapter’s own installer disables builtin:mcp in pi’s settings, but the sandbox renders settings.json from the read-only pi-config on every start, so that change never sticks — the cause of the startup warning.

Reconsider when many MCP servers are configured, or a needed server depends on prompts, elicitation or sampling. Then re-add the pinned package and add "extensions": ["-builtin:mcp"] to agent/settings.json in the same change, so only one MCP implementation loads.

Skills#

SkillDecisionNotes
terraform-skillKeep → agent/skills/terraform-skillPublic skill by Anton Babenko, v1.17.1, Apache-2.0. Scanned before copying: no leaks (gitleaks), no e-mail addresses; only documentation examples (RFC 1918 ranges, a placeholder password in a security example). Fully useful only with a terraform/tofu binary, which the image does not have yet
find-skillsDropDiscovers and installs skills at runtime; installs would bypass the versioned, read-only config (constitution Principle III). Add skills to agent/skills/ deliberately instead