durable-harness weekly downloads statistics
By vercel-labs (8 listings) · npm · Claude Code
Durable coding-agent harnesses (Claude Code, Codex, OpenCode, Pi) on a Workflow SDK World: the session is a run, its event log the source of truth, and a crash resumes the turn from the log on another machine.
durable-harness has 26,228 recorded weekly downloads on npm, a change of +157% over the past 7 days, ranking #924 of 2,855 tracked listings.
About durable-harness
<a href="https://vercel.com"><img alt="Vercel logo" src="https://img.shields.io/badge/MADE%20BY%20Vercel-000000.svg?style=for-the-badge&logo=Vercel&labelColor=000"></a> <a href="https://www.npmjs.com/package/durable-harness"><img alt="npm version" src="https://img.shields.io/npm/v/durable-harness?style=for-the-badge&labelColor=000000"></a> <a href="https://github.com/vercel-labs/durable-harness/blob/main/LICENSE.md"><img alt="License" src="https://img.shields.io/npm/l/durable-harness.svg?style=for-the-badge&labelColor=000000"></a>
</div>durable-harness runs coding-agent harnesses (Pi, OpenCode, libfx's fx, Claude Code and Codex) as durable agents on a Workflow SDK World. Each session is a workflow run: its conversation, the turn in flight and every model and tool call are in the run's event log, so a crash anywhere resumes the turn from the log on another machine, and a tool call that isn't safe to repeat is never run twice.
[!NOTE] durable-harness is experimental: it's on
0.0.x, and its API may change between releases.
Quick start
Install it with a harness, here Pi with pi-durable, in a Next.js app:
npm install durable-harness @earendil-works/pi-durable @earendil-works/chord @earendil-works/pi-ai just-bash
Open Pi's own durable Harness on a World-backed storage. Agents are
tool-less by default; Pi's coding tools go on a virtual workspace, whose files
live in the session's log:
// lib/agent.ts
import { BACKGROUND_CONTEXT as ctx } from '@earendil-works/chord/context';
import { createRegistry, Harness, type Storage } from '@earendil-works/pi-durable';
import { CodingTools, GATEWAY_PROVIDER, gatewayModels, resumeWith, virtualEnv } from 'durable-harness/pi-durable';
const models = gatewayModels();
const registry = createRegistry();
registry.install(CodingTools);
export const agent = { model: { provider: GATEWAY_PROVIDER, modelId: 'anthropic/claude-sonnet-4.5' } };
export const open = resumeWith((storage: Storage) => Harness.open(storage, { models, registry, env: virtualEnv() }, ctx));
Serve it from a chat route, and configure the integration:
// app/api/chat/route.ts
import { chatRoute } from 'durable-harness/pi-durable';
import { agent, open } from '@/lib/agent';
export const { GET, POST } = chatRoute({ open, agent, authorize: async (request) => { /* your auth */ } });
// next.config.ts
import type { NextConfig } from 'next';
import { withDurableHarness } from 'durable-harness/next';
const nextConfig: NextConfig = {
// your existing config
};
export default withDurableHarness(nextConfig);
withDurableHarness discovers modules that export agents created at module
scope with durableAgent, claudeCode, codex, opencode or pi, and modules
that register a pi-durable opener with resumeWith. A script that creates an
agent for itself, an exported factory that creates one later, and code samples
in strings or comments are excluded. Import aliases, default exports, export
lists, and containers or accessors for an existing agent are supported.
For custom factories or effect-only agent registration, list the modules
explicitly: withDurableHarness(nextConfig, { agents: ['lib/agent.ts'] }).
Choose your harness and framework in the agent harnesses docs.
Harnesses
- Pi:
durable-harness/pi-durable(recommended: Pi's own durableHarnesson a World), ordurable-harness/pi. - OpenCode:
durable-harness/opencode. - fx:
durable-harness/fx, libfx's kernel tools for its own durable agents. - Claude Code and
Codex:
durable-harness/claude-codeanddurable-harness/codex. They run only in the session's own Vercel Sandbox, never in a shared Function (why).
Model-chosen commands and files run on a virtual workspace (virtual()) or
in the session's own Vercel Sandbox (sandbox()), never on the machine that
drives the session. See tools
and security.
Run anywhere
Local development uses the Workflow SDK's local World with no configuration. Deploy to Vercel for managed storage, queuing and scaling, with sessions in Agent Runs. To self-host, use the Postgres World or any other World: see self-hosting.
Contributing
Contributions are welcome. Use issues to collaborate with the team, and read CONTRIBUTING.md before opening a pull request.
Security
If you find a security vulnerability in durable-harness, disclose it responsibly instead of opening a public issue.
To participate in our Open Source Software Bug Bounty program, please email responsible.disclosure@vercel.com. We will add you to the program and provide further instructions for submitting your report.
Description from the npm listing.
- agent
- agents
- ai
- harness
- durable
- durability
- workflow
- workflow-sdk
- world
- claude-code
- codex
- opencode
- pi
- libfx
- nextjs
- vercel
README badge
Show your rank in a README or on your website. The badge updates automatically.
Charts
Images: 30d · 1y · all time · 1600×900 dark
Adoption over time
7/30/90-day growth
Ranking history
Listing placement
Listing placement
Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.
Each band is one page of 20. Weekly downloads on a linear scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.
Recent observations
Full history (123)Similar npm Claude Code plugins
All 20 durable-harness alternativesData source
Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.
Listing: https://www.npmjs.com/package/durable-harness. First seen Oct 31, 2026; last successful collection Nov 5, 2026. See the methodology.