Wiff logo

Wiff

Runs deterministic, resumable multi-agent JavaScript workflows through an MCP client and persistent local daemon.

Install Wiff

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "wiff": {
      "command": "npx",
      "args": [
        "-y",
        "@xxxoooxoxo/wiff"
      ],
      "env": {
        "WIFF_BACKEND": "YOUR_VALUE_HERE"
      }
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Values are written into the snippet above so you can paste it as is. They never leave your browser.

Automated check passed— started and listed 5 tools correctly (14d ago).

Overview

The wiff MCP server exposes deterministic, resumable multi-agent workflows through MCP. It runs JavaScript workflows with agents, phases, parallel execution, pipelines, native goals, journaling, and stable-key replay, while a persistent local daemon keeps runs alive after the launching client disconnects. Child agents can use Codex, Claude, Cursor, or Kimi backends, with optional worktree isolation and structured outputs. Reach for it when coding tasks need repeatable orchestration, durable state, parallel workers, or explicit resume behavior.

Use cases

  • Orchestrate parallel audits across many files
  • Resume interrupted coding workflows without replaying completed agents
  • Run repair stages in isolated Git worktrees
  • Require tests or another condition to remain satisfied with a native goal

Key features

  • Deterministic JavaScript workflow execution
  • Journaled runs with stable-key replay
  • Persistent daemon and resumable state
  • Parallel agents, pipelines, and phases
  • Codex, Claude, Cursor, and Kimi backends
  • Worktree isolation and structured outputs

Tools5

What Wiff lets your agent do. Expand a tool for its parameters.

Verified live~464 tokens of context

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked Today

Recent health check succeeded.

5/5 checks healthy over the last 38d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 6d ago via OSV.dev · @xxxoooxoxo/wiff (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars5Stargazers on the source repository.
npm downloads223Package downloads in the last 30 days.
Last commit1mo agoMost recent push to the default branch.
Availability100%Our rolling endpoint + install checks that succeeded.
Install checkPassedOur sandbox started it and listed its tools.
Tools exposed5Callable tools this server registers over MCP.
Directory activity4 viewsConfig copies, upvotes, and views on AllMCPs.

How Wiff works

What the wiff MCP server does

The wiff MCP server turns multi-agent coding workflows into ordinary JavaScript programs. A workflow can define named phases, invoke agent() workers, fan work out with parallel(), connect stages with pipeline(), and wait on a native Codex /goal until its condition is complete. This makes orchestration logic explicit rather than dependent on a particular chat session.

Execution is owned by a persistent local daemon. The MCP bridge used by Codex, Claude Code, Cursor, cron, or another MCP client is disposable, so a client can disconnect while the daemon continues the run. A later client can inspect, resume, or cancel the same run.

How it works

Each agent call can have a stable key and input hash. Completed calls are recorded in an on-disk journal and can be replayed from cache when a run resumes, avoiding another model call for unchanged work. If an agent was interrupted during a turn, wiff reruns it with a digest of the earlier transcript; worktree-based agents retain their partial checkout.

The scheduler records agents as queued before they receive a runtime slot and as running once backend execution starts. Heartbeats expose workflows that remain alive but stop making progress. Normal failures are propagated instead of converted into empty results; parallelSettled() is available when a workflow intentionally wants settled outcomes.

Writing agents can use isolation: "worktree" to receive separate detached Git worktrees. Clean worktrees are removed, while dirty ones remain available for inspection or merging. Personas can be selected with agentType, which loads a Markdown persona and its defaults from the project’s .codex/agents directory.

Setup and configuration

Node.js 22 or newer is required. Install the npm package with npx -y @xxxoooxoxo/wiff, which starts the stdio MCP server. The project also publishes an MCP Registry entry under io.github.xxxoooxoxo/wiff. Codex and Claude Code users can install the corresponding repository plugin; the plugin includes MCP tools and a workflow-authoring skill.

Persistent preferences can be stored in ~/.wiff/config.json, with project-specific overrides in <cwd>/.wiff/config.json. Configuration supports instructions, default models, ordered fallback models, and rules that apply options such as model and effort to selected phases. Preference changes that affect a run invalidate relevant cached results on resume.

Tools and capabilities

The wiff MCP server provides workflow-controller tools for operating runs. Workflow code supports parallel agents, pipelines, structured JSON schemas, phase tracking, goals, model selection, sandbox settings, timeouts, personas, and worktree isolation.

Worker backends are selected from model names or can be overridden with provider. Codex models run through a local Codex app-server, Claude models through headless Claude agents, Cursor and Grok models through the Cursor SDK, and Kimi models through headless Kimi processes. WIFF_BACKEND provides a fallback for unrecognized model names.

Limitations and notes

The workflow runtime intentionally excludes time, randomness, filesystem access, and network access from workflow code; agents perform external work. Agent filesystem access is controlled per call through the sandbox setting. A blocked, paused, or limited native goal fails explicitly rather than allowing the next stage to proceed.

The daemon preserves active runs across a graceful restart, but an abrupt daemon or machine crash may require explicitly resuming the interrupted run. Dirty worktrees are retained for manual inspection and merging rather than automatically combined.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Wiff

wiff is an MCP server that connects workflow orchestration to Codex, Claude, Cursor, and Kimi agent backends. Its main tools control durable runs, including starting, watching, resuming, and canceling workflows. JavaScript workflows can fan out agents, use phases and goals, journal results, and replay completed work after interruption.

Install it with `npx -y @xxxoooxoxo/wiff` as a stdio MCP server. Registry-aware clients can install `io.github.xxxoooxoxo/wiff` from the official MCP Registry. Codex and Claude Code can instead install the repository plugin, which includes MCP tools and the workflow-authoring skill.

Yes, wiff works with Cursor as an MCP client and can also run child agents through the official Cursor SDK. Cursor can start or control workflows through the stdio MCP server, while model selection or the `provider` option determines which backend executes each child.

Yes, wiff journals agent calls and replays unchanged completed calls from cache when a run resumes. Interrupted agents can rerun with a digest of their previous transcript, and worktree agents retain partial checkouts. An abrupt daemon or machine crash may require explicitly resuming the run.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewWiff AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/wiff?style=directory)](https://allmcps.com/mcp/wiff)
HTML Embed
<a href="https://allmcps.com/mcp/wiff"><img src="https://allmcps.com/api/badge/wiff?style=directory" alt="Wiff on AllMCPs" /></a>