Profiles / Earendil Works (formerly badlogic / Mario Zechner)
Pi Coding Agent
The harness that refuses to govern, so the floor others build their rules on.
Operator Read
Pi is a deliberately minimal terminal coding harness maintained by
Earendil Works (formerly Mario Zechner
/ badlogic). What's notable is what it
refuses to ship: subagents, plan mode, approval
popups, MCP, built-in governance. The core stays small; the platform grows via
extensions. The provider list is deliberately volatile -- treat it as "what Pi
tests against today," not a forever-API. The canonical repo is now
earendil-works/pi.
Operator Stance / as of 2026-06-23
- Use it for
- Embedding agent functionality in custom UIs (Cloudflare Workers, custom CLIs); minimal-by-default operator harnesses where you control governance externally.
- Avoid it for
- Operators who want built-in subagents, plan mode, approval popups, or MCP -- Pi deliberately ships none of these.
- Watch next
- Earendil Works migration cadence; whether the selective `/base` entry points become a fully separate, leaner SDK distributable from the CLI.
Where Pi Is Useful
Use Pi when your own wrapper owns the product surface.
TypeBox 1.x
validation makes custom tools and SDK integrations portable to eval-restricted
runtimes such as Cloudflare Workers -- the previous validator couldn't run
there. Custom tools can declare
terminate: true
to end the agent turn on a final tool call and skip the automatic follow-up
LLM request -- useful for tools with predictable terminal behavior. If you
embed Pi inside your own UI or CI runner, capture stream transport as part
of the run contract:
stream configuration
(SimpleStreamOptions, Transport) is exposed through the harness, but Pi
will not record governance receipts for you.
For leaner embeds, register only the providers you ship: the
selective provider base entry points
(@earendil-works/pi-ai/base, @earendil-works/pi-agent-core/base) let a
bundled application register providers explicitly and exclude unused provider
transports, shrinking bundle size and removing dead network code paths -- a
real win for Cloudflare-Workers-style runtimes.
Tune provider behavior in Pi when local inference or provider SDK behavior is
part of the run contract; do not treat defaults as production policy.
Timeout and retry controls
(retry.provider.timeoutMs, retry.provider.maxRetries,
retry.provider.maxRetryDelayMs) are available in /settings. Provider-side
prompt caching is tracked accurately where supported: Mistral sessions now use
session-affinity prompt caching
with cached-token cost accounting,
continuing Pi's billing-accuracy cadence.
Findings: 2026-06-23-pi-selective-provider-base-entrypoints, 2026-06-23-pi-mistral-prompt-caching.
What Pi Refuses To Own
Pi's governance posture is explicit refusal: no approval dialogs, no plan mode, no permission popups, no MCP in the default surface. The refusal is the design statement: those concerns belong to the operator or a layer above the harness. No governance additions shipped in this window; the posture is stable. The plan-mode references that surfaced this window are to an extension example, not a core feature -- consistent with Pi's delegation posture.
Findings: 2026-06-23-pi-extension-compaction-event-context.
Harness Receipts To Capture
Pi exposes the right inputs for an operator-owned governance layer to record:
session identity through
$PI_SESSION_DIR,
provider retry/timeout metadata, provider selection, transport type, and
extension TypeBox schema version. Pi exposes them cleanly and leaves their
recording to the operator.
This window strengthens that thesis at the context-shaping layer: extension
compaction events now carry reason and willRetry,
so session_before_compact and session_compact can distinguish a manual
/compact from threshold auto-compaction from an overflow retry -- compaction
is now self-describing and inspectable from the extension surface. An
operator-owned governance layer gets a clean hook to record why context was
reshaped. Compaction is itself a context-shaping event worth a receipt, and
Pi now hands you the inputs to write one.
Findings: 2026-06-23-pi-extension-compaction-event-context.
Maintenance And Hardening
Routine but real CVE-class maintenance landed this window:
vulnerable runtime dependencies were updated
(including undici and the packaged protobufjs transitive dependency), and
deep session branches no longer take quadratic time to build context or branch
paths -- the
session path construction was linearized
(on a 600k-entry pathological session, ~20.3s with Array.unshift() dropped to
~35ms with push() plus reverse()), a low-positive hardening against a
pathological-input slowdown. Operators pinning Pi should move past v0.79.8 for
the dependency fixes and past v0.79.9 for the session-tree fix.
Findings: 2026-06-23-pi-vulnerable-dependency-update.
Migration Watch
Pin and audit Pi installs during the
Earendil Works migration:
the npm package is moving from @mariozechner/pi-coding-agent to
@earendil-works/pi-coding-agent and the repo from badlogic/pi-mono to
earendil-works/pi-mono (now earendil-works/pi). The pi update --self
command handles global installs; CI references and infrastructure pins need
manual updates. Note a behavior change worth carrying into pinning guidance:
bare pi update now updates only Pi -- use pi update --all to bump packages
too -- and update installs the exact checked version with no unversioned
reinstall fallback.
Posture basis: 2026-05-06-pi-thin-harness-provider-churn,
2026-05-07-pi-thin-harness-churn,
2026-05-12-pi-earendil-migration-and-harness-sdk,
2026-06-23-pi-extension-compaction-event-context,
2026-06-23-pi-selective-provider-base-entrypoints.
Open Questions
- Does the leaner standalone SDK arrive as a fully separate distributable, or
stay as composable entry points within the CLI packages? Partially
answered (2026-06-23): the
/baseentry points (@earendil-works/pi-ai/base,@earendil-works/pi-agent-core/base) are a concrete step toward leaner, explicitly-composed SDK consumption -- but they still live inside the same packages rather than a standalone leaner SDK. Watch whether Earendil splits these into a distinct distributable. - Does the Earendil Works transition include any governance, pricing, cloud, or
enterprise changes that would affect Pi's current "no governance in core"
posture? Still no (verified 2026-06-23): no plan mode, approval surface,
or MCP in core shipped this window; the project-trust system is static and
the only
/trusttouchpoints were documentation/label fixes. - The
$PI_SESSION_DIRenv var is exposed to tools and extensions. Is it also exposed to the system prompt or context files, making it available for self-referential session logs?
What To Watch Next
- Source contract update:
earendil-works/piis now confirmed canonical; ensuresources/pi-coding-agent.ymlpoints to the new URL. - Earendil Works organizational posture: cloud offering, enterprise tier, or governance additions that would change Pi's minimalism claim.
- Whether the
/baseselective-provider entry points evolve into a fully separate, leaner SDK distributable from the CLI. - Any plan mode or approval surface addition, which would signal a departure from Pi's core design stance.
Verification
open source commits / evidence floor: release note / updated 2026-06-23
Verified claims
- Pi Coding Agent: Thin Harness, Fast Provider Churn, and Extension Contracts / verified 2026-05-06
- Pi Coding Agent: The Thin Harness Moves Fast Because It Refuses To Own Everything / verified 2026-05-07
- Pi Coding Agent: Package Scope Migration to Earendil Works and Harness SDK Refinements / verified 2026-05-12
- OAuth browser launch URI validation and shell-safe spawning / verified 2026-06-03
- 2026-06-23-pi-extension-compaction-event-context / verified 2026-06-23
- 2026-06-23-pi-selective-provider-base-entrypoints / verified 2026-06-23
- 2026-06-23-pi-mistral-prompt-caching / verified 2026-06-23
- 2026-06-23-pi-vulnerable-dependency-update / verified 2026-06-23
Open Questions
Featured in
- Foreground Attention Is No Longer the Control / 2026-07-02
- Patched for Whom / 2026-07-01
- Governance, Sold Separately / 2026-06-24
- Protected on Paper / 2026-06-23
- Who's Allowed to Say Yes / 2026-06-16
- The Policy You Wrote Wasn't the Policy You Had / 2026-06-03
- Governance Becomes Enforcement / 2026-05-12
- The Harness Leaves The Chat Box / 2026-05-07
- What Shaped the Run / 2026-05-06
Source policy: what Frontier watches and accepts as evidence
Edited and maintained by Bitter Frontier.