Overview
Earendil released Pi Durable on October 1, 2026, alongside Pi 1.0. It is a framework for long-running agents rather than a replacement for the Pi coding agent: each run step is checkpointed as a task, unfinished tasks resume after a crash, and conversations can fork at any point. The package is experimental and its API may still change.
This page was compiled on October 7, 2026. GitHub code search found about 75 public repositories whose package.json references @earendil-works/pi-durable; we kept projects whose non-test source code actually imports it, then picked nine across different uses. All entries are source-reviewed at a pinned commit. We did not install or run them.
Pi Durable announcement ↗packages/durable source ↗Talk: why not Temporal or Effect
Compare by use case
Scroll the table horizontally; configuration and sources follow below.
| Resource & purpose | Mechanism | Dependencies & keys | Data sent | Failure behavior | Evidence |
|---|---|---|---|---|---|
| pi-pocket A self-hosted web app for using Pi from a phone, with shared live sessions for several people. | One Pi Durable harness stores every session, model call, tool call and subagent in a single SQLite file. Schedules, goals, the guard, the built-in browser and subagents are Durable extensions. | Node.js 22.19+ and a Pi provider login (pi, then /login) or a provider key. Install from a Git checkout with npm install and npm start; it is not published to npm. Pins Pi Durable 1.0.2. | Conversation and tool context go to the configured model provider. Remote access is your choice: LAN mode serves plain HTTP, and the optional Cloudflare quick tunnel exposes the server publicly. | — | README / quick start / features ↗ |
| oppi A native iPhone and iPad client for Pi with a server you run yourself; Durable sessions are an opt-in experiment. | Each session chooses an engine: classic Pi or durable. The durable engine runs on a Pi Durable harness and projects events, threads and history into the iOS interface. | npm oppi-server (0.51.0 depends on Pi Durable 1.0.4) and Node.js 22.19+. Run oppi config set experimental.serverDurable true and restart, then enable Settings → Experiments → Durable Sessions on the device. Sandboxed workspaces need Node.js 23.6+ and QEMU. | The app talks to your oppi-server over authenticated HTTPS/WSS on your LAN, Tailscale or a public host. Model requests go to your configured Pi provider. | — | Durable Sessions experiment (usage docs) ↗ |
| pi-imessage A self-hosted iMessage bot for a Mac, with a separate durable conversation for each chat. | Reads Messages.app chats locally and replies through a Pi Durable harness with JSONL storage. Schedules and periodic compaction run as durable background tasks; a small web UI shows history, tasks and schedules. | macOS with Messages.app, Node.js 22.22.2+, Python 3, Full Disk Access for the terminal and a signed-in Pi. The npm release @kingcrab/pi-imessage 0.0.43 (August 2026) predates the Durable migration; build from the repository for the Durable version. | Reads the local Messages database. Chat context goes to the configured model provider; optional web search and page fetch tools contact external sites. | — | README / requirements ↗ |
| @geminixiang/mikan A self-hosted team agent for Slack, Telegram, Discord and GitHub, where each channel or DM gets its own workspace. | Every conversation runs as a Pi Durable session stored in SQLite. A custom execution environment sends tool calls to the host or to a Docker sandbox. | npm @geminixiang/mikan 1.0.0 and Node.js 24.15+; run mikan onboard. Docker is needed for sandboxed runs. Platform tokens such as SLACK_BOT_TOKEN, TELEGRAM_BOT_TOKEN or DISCORD_BOT_TOKEN depend on the channels you enable. | Connects to the chat platform APIs you configure and sends conversation context to any pi-ai provider. The sandbox image is pulled from ghcr.io. | — | README / onboarding ↗ |
| ha-pi-durable (Hearth Pi) An experimental Home Assistant app that explores durable execution with strict approval boundaries. | A Pi Durable harness persists inputs, task checkpoints and transcripts to SQLite. Home mode reads only explicitly scoped entities and proposes light or switch actions that need exact human approval. An optional code mode runs in a separate confined worker. | Node 24.21 LTS. Add the repository to the Home Assistant app store, or run the local demo with an offline provider. Online providers are OpenAI (API key) or OpenAI Codex (ChatGPT sign-in). | With an online provider, input, conversation context and tool output go to that provider. Home Assistant is reached through a scoped proxy. No telemetry, per the README. | Interrupted coding calls are not replayed. An interrupted device dispatch is recorded as unknown and never retried automatically. Model work may repeat after recovery. | README / boundaries / recovery ↗ |
| pi-fabric A Pi extension whose spawned agents and actors run on Pi Durable by default. | Gives Pi one programmable tool, fabric_exec. Programs it runs can start workers, resident agents and actors; the default agents.runner is pi-durable, an isolated Pi SDK process backed by a Durable harness with JSONL storage. The outer Pi session is unchanged. | Pi 1.0.0+ and Node.js 24+. Install with pi install npm:pi-fabric; Pi Durable ships as a pinned dependency. Set agents.runner to pi to use the previous Pi CLI worker. | — | — | Durable Pi runner documentation ↗ |
| webfox A web search and research toolkit that also ships its tools as a Pi Durable extension. | Besides the CLI, library and regular Pi extension, the webfox/durable entry exports createWebfoxExtension for a custom Durable host. Each call runs in the conversation's execution environment and saves large results to private files. | Node.js 22+ and an API key for each provider you use, such as BRAVE_SEARCH_API_KEY. pi install npm:webfox installs the regular Pi extension; the Durable entry needs Pi Durable 1.0 as a peer dependency. | Queries and documents go to the web or LLM provider you select. | Interrupted requests are not replayed because providers may charge for them. Cancelling may not stop a provider job that is already running. | README: Use with Pi Durable ↗ |
| Cloudflare Agents SDK Cloudflare's Agents SDK includes an adapter for hosting Pi Durable inside Durable Objects. | The agents/harness/pi export provides PiHarness, which stores Pi Durable state in Durable Object SQLite and wakes the harness after eviction. The repository also contains a Pi harness example and a channels example. | A Cloudflare account with Workers and Durable Objects. Install agents (0.26.0 at review) and Pi Durable yourself, since it is a peer dependency. Model credentials depend on the example. | — | — | PiHarness ↗ |
| @netzlabor/pi-durable-postgres A PostgreSQL storage backend for Pi Durable, for hosts that already run and back up Postgres. | Implements the Pi Durable Storage interface over one PostgreSQL connection and uses an advisory lock so a single writer owns each schema. It runs the upstream storage conformance suite and adds a transactional helper for deleting conversations. | Node.js 22.19+, PostgreSQL (17 tested) and DATABASE_URL. Install @netzlabor/pi-durable-postgres with Pi Durable, Chord and pi-ai pinned to 1.0.3. | — | — | README / status / limitations ↗ |
Installation & operating boundaries
pi-pocket
A self-hosted web app for using Pi from a phone, with shared live sessions for several people.
Follow the project installation instructions →
- Mechanism
- One Pi Durable harness stores every session, model call, tool call and subagent in a single SQLite file. Schedules, goals, the guard, the built-in browser and subagents are Durable extensions.
- Prerequisites
- Node.js 22.19+ and a Pi provider login (pi, then /login) or a provider key. Install from a Git checkout with npm install and npm start; it is not published to npm. Pins Pi Durable 1.0.2.
- Data scope
- Conversation and tool context go to the configured model provider. Remote access is your choice: LAN mode serves plain HTTP, and the optional Cloudflare quick tunnel exposes the server publicly.
- Known limitations
- The sign-in link is the owner's key. Invitees who can steer a session gain shell-equivalent access, as the README warns. On Android/Termux the Lancet Guard ONNX model may not load.
Source / documentation reviewed · reviewed source 3e6046612db4358b599da302d5c96bd407d9de5c (2026-10-05) · Git install, not on npm
oppi
A native iPhone and iPad client for Pi with a server you run yourself; Durable sessions are an opt-in experiment.
npm install -g oppi-server- Mechanism
- Each session chooses an engine: classic Pi or durable. The durable engine runs on a Pi Durable harness and projects events, threads and history into the iOS interface.
- Prerequisites
- npm oppi-server (0.51.0 depends on Pi Durable 1.0.4) and Node.js 22.19+. Run oppi config set experimental.serverDurable true and restart, then enable Settings → Experiments → Durable Sessions on the device. Sandboxed workspaces need Node.js 23.6+ and QEMU.
- Data scope
- The app talks to your oppi-server over authenticated HTTPS/WSS on your LAN, Tailscale or a public host. Model requests go to your configured Pi provider.
- Known limitations
- Durable is off by default and never converts existing sessions. Saved Agents cannot start durable sessions yet. The reviewed source is newer than the commit behind the npm release.
Source / documentation reviewed · npm oppi-server 0.51.0 · reviewed source 844e6d170aeca52885d7b284878e64f214bfbd7d (2026-10-06)
pi-imessage
A self-hosted iMessage bot for a Mac, with a separate durable conversation for each chat.
Follow the project installation instructions →
- Mechanism
- Reads Messages.app chats locally and replies through a Pi Durable harness with JSONL storage. Schedules and periodic compaction run as durable background tasks; a small web UI shows history, tasks and schedules.
- Prerequisites
- macOS with Messages.app, Node.js 22.22.2+, Python 3, Full Disk Access for the terminal and a signed-in Pi. The npm release @kingcrab/pi-imessage 0.0.43 (August 2026) predates the Durable migration; build from the repository for the Durable version.
- Data scope
- Reads the local Messages database. Chat context goes to the configured model provider; optional web search and page fetch tools contact external sites.
- Known limitations
- macOS only. It replies only to chats on a configured allowlist.
Source / documentation reviewed · reviewed source ebdf5c290e01b9d97964952c1531bb9c249fb8ba (2026-10-06) · npm 0.0.43 predates Pi Durable
@geminixiang/mikan
A self-hosted team agent for Slack, Telegram, Discord and GitHub, where each channel or DM gets its own workspace.
npm install -g @geminixiang/mikan- Mechanism
- Every conversation runs as a Pi Durable session stored in SQLite. A custom execution environment sends tool calls to the host or to a Docker sandbox.
- Prerequisites
- npm @geminixiang/mikan 1.0.0 and Node.js 24.15+; run mikan onboard. Docker is needed for sandboxed runs. Platform tokens such as SLACK_BOT_TOKEN, TELEGRAM_BOT_TOKEN or DISCORD_BOT_TOKEN depend on the channels you enable.
- Data scope
- Connects to the chat platform APIs you configure and sends conversation context to any pi-ai provider. The sandbox image is pulled from ghcr.io.
- Known limitations
- The GitHub adapter is marked experimental. GitHub reports the license as unrecognized, although the README shows an MIT badge.
Source / documentation reviewed · npm 1.0.0 · gitHead matches reviewed source c95f3701119cfa8ac6abf7af86cd884470e87502 (2026-10-07)
ha-pi-durable (Hearth Pi)
An experimental Home Assistant app that explores durable execution with strict approval boundaries.
Follow the project installation instructions →
- Mechanism
- A Pi Durable harness persists inputs, task checkpoints and transcripts to SQLite. Home mode reads only explicitly scoped entities and proposes light or switch actions that need exact human approval. An optional code mode runs in a separate confined worker.
- Prerequisites
- Node 24.21 LTS. Add the repository to the Home Assistant app store, or run the local demo with an offline provider. Online providers are OpenAI (API key) or OpenAI Codex (ChatGPT sign-in).
- Data scope
- With an online provider, input, conversation context and tool output go to that provider. Home Assistant is reached through a scoped proxy. No telemetry, per the README.
- Failure behavior
- Interrupted coding calls are not replayed. An interrupted device dispatch is recorded as unknown and never retried automatically. Model work may repeat after recovery.
- Known limitations
- Labelled a technical preview, not a production recommendation. Actions are off by default, a service receipt does not prove the physical device changed, and general Pi extensions or MCP servers cannot be loaded.
Source / documentation reviewed · reviewed source bde4eedea875f83d1b608e266198e6dc3d170fe8 (2026-10-04) · no npm release
pi-fabric
A Pi extension whose spawned agents and actors run on Pi Durable by default.
pi install npm:pi-fabric- Mechanism
- Gives Pi one programmable tool, fabric_exec. Programs it runs can start workers, resident agents and actors; the default agents.runner is pi-durable, an isolated Pi SDK process backed by a Durable harness with JSONL storage. The outer Pi session is unchanged.
- Prerequisites
- Pi 1.0.0+ and Node.js 24+. Install with pi install npm:pi-fabric; Pi Durable ships as a pinned dependency. Set agents.runner to pi to use the previous Pi CLI worker.
- Known limitations
- Releases move fast and the configuration surface is large. The reviewed source matches 0.108.1; npm had moved to 0.109.0 by the review date.
Source / documentation reviewed · reviewed source b9e40f9f35af5ce0e7739de48a66b0aadef037e9 (2026-10-06, v0.108.1) · npm latest 0.109.0
webfox
A web search and research toolkit that also ships its tools as a Pi Durable extension.
pi install npm:webfox- Mechanism
- Besides the CLI, library and regular Pi extension, the webfox/durable entry exports createWebfoxExtension for a custom Durable host. Each call runs in the conversation's execution environment and saves large results to private files.
- Prerequisites
- Node.js 22+ and an API key for each provider you use, such as BRAVE_SEARCH_API_KEY. pi install npm:webfox installs the regular Pi extension; the Durable entry needs Pi Durable 1.0 as a peer dependency.
- Data scope
- Queries and documents go to the web or LLM provider you select.
- Failure behavior
- Interrupted requests are not replayed because providers may charge for them. Cancelling may not stop a provider job that is already running.
- Known limitations
- The Durable adapter does not install the CLI, register standard Pi renderers or provide codemode's structured results.
Source / documentation reviewed · npm 4.7.0 · gitHead matches reviewed source 2fcc7d99d8e0bdbd644c53cc27a99d7f1f93d010 (2026-10-03)
Cloudflare Agents SDK
Cloudflare's Agents SDK includes an adapter for hosting Pi Durable inside Durable Objects.
npm install agents- Mechanism
- The agents/harness/pi export provides PiHarness, which stores Pi Durable state in Durable Object SQLite and wakes the harness after eviction. The repository also contains a Pi harness example and a channels example.
- Prerequisites
- A Cloudflare account with Workers and Durable Objects. Install agents (0.26.0 at review) and Pi Durable yourself, since it is a peer dependency. Model credentials depend on the example.
- Known limitations
- Pi is one harness adapter in a large SDK, not its core runtime. pi-on-cf and gitorange build on this adapter.
Source / documentation reviewed · npm agents 0.26.0 · reviewed source 92d1770de7d4f0b2c643e23f4ac867950bae69fc (2026-10-06)
@netzlabor/pi-durable-postgres
A PostgreSQL storage backend for Pi Durable, for hosts that already run and back up Postgres.
npm install @netzlabor/pi-durable-postgres- Mechanism
- Implements the Pi Durable Storage interface over one PostgreSQL connection and uses an advisory lock so a single writer owns each schema. It runs the upstream storage conformance suite and adds a transactional helper for deleting conversations.
- Prerequisites
- Node.js 22.19+, PostgreSQL (17 tested) and DATABASE_URL. Install @netzlabor/pi-durable-postgres with Pi Durable, Chord and pi-ai pinned to 1.0.3.
- Known limitations
- Alpha. Deleting live conversations is not implemented, PgBouncer transaction pooling is unsupported, and unprefixed table names need a dedicated schema. The reviewed source is newer than the npm release.
Source / documentation reviewed · npm 0.1.1 · reviewed source d10b637aae29bb8fcf16c1280372b2f74060ead3 (2026-10-05)
Choose by what you want to run
To reach a coding agent from your phone, try pi-pocket in a browser or oppi on iPhone and iPad. pi-imessage, mikan and Hearth Pi are resident assistants for iMessage, team chat and Home Assistant. Inside the Pi CLI, pi-fabric runs its workers on Pi Durable by default, and webfox ships its web tools as a Durable extension for custom hosts.
If you are building your own host, the Cloudflare Agents SDK runs Pi Durable inside Durable Objects, and the PostgreSQL backend keeps agent state in an existing database. More implementations at the end of this page cover Cloudflare multi-tenancy, PR review and Durable subagents.
Durable state does not make side effects safe to repeat
Pi Durable records what the harness was doing. Files, deployments, payments and devices keep their own state. Several projects here therefore refuse to replay interrupted work: Hearth Pi leaves an interrupted device action as unknown until a person resolves it, and webfox does not repeat interrupted provider requests because they may be billed.
When you evaluate a project, check how its tools behave after a restart, not only whether the conversation resumes. Model calls can be repeated during recovery and consume usage again.
Versions and installation sources
Pi Durable reached 1.0.4 on npm on October 5. Projects pin different 1.0.x releases, often exactly; the PostgreSQL backend asks you to install Pi Durable, Chord and pi-ai at 1.0.3 together. When combining libraries in one host, align these versions first.
Check that the version you install contains the Durable code. The current npm releases of pi-imessage (0.0.43) and @rivet-dev/pi (0.1.0) do not depend on Pi Durable; the Durable versions are in their repositories. oppi-server includes it, but durable sessions stay off until you enable the server experiment.
npm install @earendil-works/pi-durable @earendil-works/pi-ai @earendil-works/chordWhat we left out
Some popular repositories carry Pi Durable only inside a vendored copy of the Pi monorepo, an experimental probe or an optional development backend; their own product code does not import it. pi-dispatch describes a durable queue but does not use Pi Durable. These are not listed here.
Stars were recorded on October 7 and only indicate attention. Most projects are days old, so treat this page as a snapshot and check each repository for changes.
More implementations
- @rivet-dev/pi →
Runs Pi as a durable Rivet Actor. The Pi Durable version (0.5.0) is only in the repository so far; npm 0.1.0 does not use Pi Durable yet.
- roamgate →
Desktop and mobile client for Herdr: control terminals, monitor coding agents and review diffs. Its built-in assistant runs on Pi Durable with SQLite storage.
- pi-on-cf →
Experimental single-user coding agent on Cloudflare, with one Durable Object and one container workspace per session. It has no authentication; protect it with Cloudflare Access.
- antiproton →
Multi-tenant agent runtime on Cloudflare: one Durable Object per tenant and agent, and a tool gateway that keeps credentials out of the model context. Pi Durable runs the agent inside each object.
- sift →
Multi-agent PR review as a GitHub Action: a lead reviewer and specialists inspect code in Docker workspaces, with a SQLite snapshot per PR. Trusted repositories only; fork PRs are skipped.
- pi-durable-subagents →
Pi extension for background subagents you can inspect, steer and recover after a restart, optionally isolated in git worktrees.
- pi-durabletask-mcp →
External MCP bridge maintained by Nyarlathoteppppp for Claude/Codex delegation to Pi, with steering, same-session follow-ups and optional SQLite restart recovery. Requires configured global Pi; not a Pi extension.
Primary sources & verification scope
Source review and runtime testing are distinguished above. Features, performance and savings not marked “Tested” are not measurements by Pi Index.