Visual team-builder, plan-as-artifact, and live execution graph for autonomous Claude Code agent crews. Spawn a 3-role team, generate a DAG plan, run for hours, watch it ship in your browser.
FAQ
wisp is a Claude Code plugin with 12 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes audit-orphan-runs, auto-doc, builder-discipline. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
> /plugin marketplace add Samuel0101010/wisp-orchestrator> /plugin install wisp@wisp-local
Repo: Samuel0101010/wisp-orchestrator
Most agent UIs run a single agent in a chat box. Orchestrators hide the plan behind opaque internal state, and they stop existing the moment something fails. WISP is built for the case nobody else covers โ drive a team of Claude agents for hours, watch the plan as a DAG you can edit before it runs, see the live preview of the app they're building, and write change-requests against the running result.
claude CLI; flip to WISP_AUTH_MODE=api for headless commercial use.Prerequisites:
git, Node 22/24 LTS, and theclaudeCLI onPATH. No GitHub account or SSH key needed โ everything clones over plain HTTPS.
claude plugin marketplace add https://github.com/Samuel0101010/wisp-orchestrator.git
claude plugin install wisp@wisp-local
claude /wisp-dashboard # opens http://127.0.0.1:4400 in your browser
Then click New project, type a goal ("Build a Kanban board in React + Vite + Tailwind"), point it at an empty git repo, and hit Run. The dashboard streams the agent team building the app, the Preview tab shows it running live, and the iteration loop is one click away.
![]() | ![]() |
|---|---|
| Preview โ proxied iframe of the running app, with click-to-pick visual edits. | Goal Planner โ a standalone Goal-Oriented Action Planning sandbox (least-cost search). |
![]() | ![]() |
| Agents โ registry of roles available to teams. | Chat โ team conversation surface. |
![]() | ![]() |
| Prompt Bundles โ cached bundles for re-use. | Settings โ theme, language, selective data clearing. |
v2.0 โ production-ready. The orchestrator drives full architect โ dev โ QA โ review cycles against real Claude Max with variable team sizes, shared-memory MCP, built-in + user templates, automatic QA-replan, and a live dashboard with iteration loops, visual edit-mode, and proxied previews. See CHANGELOG.md for the full release history.
/preview/<projectId>/ so the iframe sees the running app via the same origin as the dashboard. Auto-reload when an iteration run completes; manual refresh button in the preview header.pnpm-lock.yaml or package.json, the orchestrator spawns a dedicated resolver agent to land a clean merge before continuing the parent run.endedAt ?? startedAt, and links into each run./wisp-* slash commands so the dashboard is optional: /wisp-new-run (goal โ running execution), /wisp-resume (paused runs), /wisp-inspect (result branch + git log), /wisp-diagnose (event timeline).better-sqlite3, so the first-launch build needs no C++ toolchain)claude binary) on PATH~/.claude/ credentials and unsets ANTHROPIC_API_KEY so subprocesses never silently fall back to API billing)WISP invokes only the official claude binary as a subprocess. It
never reads ~/.claude/credentials, never extracts subscription OAuth tokens,
never calls api.anthropic.com endpoints directly, and actively unsets
ANTHROPIC_API_KEY before each spawn so subscription auth is the only path.
Subscriptions (Claude Pro / Max) are designed for personal use of the official
Claude products including Claude Code and its plugin/subagent system. Using
this plugin to run intensive headless workflows on a subscription account is
your responsibility under Anthropic's ToS. Balanced defaults
(maxParallel=2, budgetMinutes=120, interTaskPacingMs=5000,
autoResumeRateLimit=false) keep the traffic profile in line with intensive
human use rather than automated bulk usage. For commercial automation, set
WISP_AUTH_MODE=api and provide your own ANTHROPIC_API_KEY (paid per
token).
Two compliance test files (tests/compliance/) statically verify these
architectural commitments on every CI run. See
docs/anthropic-compliance.md for the full
architectural rationale.
There are two supported paths.
Prerequisites on a fresh machine: git, Node 22 LTS or 24 LTS (>= 20.10 works, but an LTS ships a prebuilt better-sqlite3 so the first build needs no compiler), and the standalone claude CLI on PATH. pnpm is bootstrapped for you on first launch.
claude plugin marketplace add https://github.com/Samuel0101010/wisp-orchestrator.git
claude plugin install wisp@wisp-local
claude /wisp-dashboard
Both the marketplace and the plugin source are fetched over plain HTTPS โ no GitHub account, SSH key, or known_hosts entry required.
If you added the marketplace with the owner/repo shorthand on an older Claude Code version, or your git config rewrites GitHub URLs to SSH, the clone can go over SSH and fail without an SSH key or known_hosts entry. Fix: refresh the marketplace (claude plugin marketplace remove wisp-local, then re-add with the HTTPS URL above), or tell git to use HTTPS for GitHub once:
git config --global "url.https://github.com/.insteadOf" "git@github.com:"
(In PowerShell keep the space between the two quoted arguments.)
(For local development, replace the first line with claude plugin marketplace add /absolute/path/to/agent-harness.)
The /wisp-dashboard command runs the launcher script for your platform (scripts/launch-dashboard.ps1 on Windows, scripts/launch-dashboard.sh on POSIX). On the first invocation after a fresh install, the launcher auto-runs pnpm install && pnpm build (~1-2 minutes; pnpm is bootstrapped via corepack/npm if absent). On subsequent invocations it boots straight to the server. Either way it picks a free port in 4400-4500, writes connection state to ${CLAUDE_PLUGIN_DATA}/state.json, and opens the dashboard in your default browser.
After the dashboard opens: spawning agent runs needs the claude CLI authenticated (subscription, or WISP_AUTH_MODE=api with an ANTHROPIC_API_KEY). The dashboard boots and is browsable either way โ but if auth is missing it shows a banner and /api/health carries the hint. Run claude login and restart /wisp-dashboard if you see it.
pnpm install
pnpm build
WISP_SERVE_WEB=1 node apps/dashboard-server/dist/server.js
# then open http://127.0.0.1:4400
With WISP_SERVE_WEB=1 the dashboard server static-serves the built apps/dashboard-web/dist/ from /, so a single port hosts UI + API + WS. To develop against a hot-reloading frontend instead, leave WISP_SERVE_WEB unset and run the Vite dev server in a second terminal:
pnpm --filter @wisp/dashboard-web dev
The Vite dev server runs at http://localhost:5173 and proxies API/WS calls to the backend on 127.0.0.1:4400.
repoPath. The repo path must point at an existing git-initialized directory; the orchestrator creates per-task worktrees inside it.model, allowedTools, or systemPrompt per role.maxTurns. When the plan looks right, click "Lock & Run".The harness now insists on proving an app runs before declaring it done, instead of trusting build + test green as a finish line.
smoke (HTTP probe of a URL), e2e (a Playwright-driven user action โ the verifier writes the actual test from your one-line description), manual (human sign-off โ never auto-passes; blocks auto-release until the approver clears it).docs/runtime-report.{md,json}, and stores screenshots / traces under docs/runtime-evidence/.~/.cache/wisp/playwright-browsers. Subsequent runs are instant โ every worktree shares the cache via PLAYWRIGHT_BROWSERS_PATH.pnpm doctor โ runs a quick check that Node, pnpm, claude, git, and the Playwright cache are all reachable. Diagnostic only; exits 0. Prints the exact one-liner to populate anything missing.The whole layer is opt-in per project (runtimeVerifyEnabled defaults to ON; flip it off on the Production-Modus card to fall back to v1.7 behaviour). Plans created before v1.8 keep running with their old shape โ the verifier only gets injected into newly-generated plans.
A single Fastify + WebSocket process owns SQLite, dispatches claude -p subprocesses through a SubprocessPool, and fans events out to a React dashboard. See docs/architecture.md for the full breakdown.
+--------------------+ HTTP + WS +-------------------+
| dashboard-web | <----------------------> | dashboard-server |
| (React + Vite) | | (Fastify) |
+--------------------+ +---------+---------+
|
+---------------+---------------+
| |
+-------v-------+ +--------v-------+
| Drizzle + | | RunRuntime |
| SQLite | | + Walker |
+---------------+ +--------+-------+
|
+-------------+-------------+
| SubprocessPool |
| (claude -p in worktrees) |
+---------------------------+
The dashboard server reads its configuration from environment variables (parsed in apps/dashboard-server/src/env.ts):
| Var | Default | Purpose |
|---|---|---|
WISP_PORT | 4400 | TCP port for HTTP + WS server |
WISP_HOST | 127.0.0.1 | Bind address |
WISP_DATA_DIR | ~/.local/share/agent-harness (Win: %LOCALAPPDATA%\agent-harness); required in production | Holds SQLite DB, snapshots, worktrees |
WISP_LOG_LEVEL | info | pino log level (trace, debug, info, warn, error, fatal, silent) |
WISP_CORS_ORIGIN | http://localhost:5173 | Vite dev origin allowed by @fastify/cors |
WISP_MOCK_CLI | false | Use mock fixtures instead of real claude (for tests) |
WISP_SERVE_WEB | false | Static-serve apps/dashboard-web/dist/ from / (single-port UI + API + WS) |
WISP_INTER_TASK_PACING_MS | 5000 | Wallclock pause between consecutive task dispatches (subscription-friendly) |
WISP_AUTO_RESUME_RATE_LIMIT | false | When true, the walker auto-resumes a rate-limit pause at resumeAt. Off keeps the run paused for the user to inspect. |
WISP_AUTH_MODE | subscription | subscription (default) or api. Toggles the auth-probe path; subprocesses always inherit ~/.claude/ credentials. |
Notes:
NODE_ENV=production makes WISP_DATA_DIR mandatory and disables the pretty pino transport.WISP_SERVE_WEB requires that apps/dashboard-web/dist/ exists. Run pnpm build first (or omit the flag and use the Vite dev server during development).The harness can capture telemetry from Claude Code sessions running inside this
repo via the bundled .claude/settings.json. To enable:
.env.local:
echo "WISP_HOOK_TOKEN=$(openssl rand -hex 16)" >> .env.local
pnpm --filter dashboard-server dev)..claude/hooks/handler.cjs will
POST events to http://127.0.0.1:4400/api/hooks/event and you'll see them at
GET /api/hooks/events.Without WISP_HOOK_TOKEN, the handler exits silently and the server returns
503 โ hooks are off by default and never block Claude Code.
Common scripts (run from the repo root):
pnpm dev # all packages, parallel watch
pnpm build # tsc -b across all packages
pnpm test # unit tests only (e2e excluded โ use test:e2e for those)
pnpm test:e2e # Playwright smoke + a11y + i18n + tooltips + wave3
pnpm typecheck # tsc -b --pretty
pnpm lint # eslint .
pnpm format # prettier --write
pnpm format:check # prettier --check
pnpm encoding:check # mojibake guardrail (UTF-8 double-encoding)
The pnpm dev parallel wrapper does not stream backend logs cleanly on Windows
(tsx watch swallows stdout in some shell configurations). For interactive
work prefer the two-terminal split, and detach the backend process from the
parent shell when running long sessions so it survives a parent reap:
# Terminal A โ backend (detached so it survives the parent PowerShell session)
Start-Process -NoNewWindow pnpm -ArgumentList 'exec','tsx','apps/dashboard-server/src/server.ts'
# Terminal B โ frontend (HMR)
pnpm --filter dashboard-web exec vite
# POSIX equivalent
nohup pnpm exec tsx apps/dashboard-server/src/server.ts > harness.log 2>&1 &
pnpm --filter dashboard-web exec vite
The backend prints server ready on stdout (or in harness.log) when it's
listening on :4400; wait for that before opening http://localhost:5173. If
a long verification pass kills both processes with exit 127, it's almost
always the parent shell being reaped โ re-run with Start-Process/nohup as
above rather than diagnosing further.
The dashboard-server owns the SQLite schema. To add a migration:
pnpm --filter @wisp/dashboard-server db:generate
pnpm --filter @wisp/dashboard-server db:migrate
Migrations run automatically on server boot via apps/dashboard-server/src/db/migrate.ts.
Setting WISP_MOCK_CLI=1 swaps the real claude binary for a deterministic fixture, used by integration tests in packages/orchestrator/src/__tests__ and apps/dashboard-server/src/__tests__. See docs/development.md for how to write a new mock mode.
A Playwright harness lives in tests/e2e/. One-time browser bundle download, then build + run:
pnpm exec playwright install chromium
pnpm build
pnpm test:e2e
The harness boots the dashboard with WISP_SERVE_WEB=1 + WISP_MOCK_CLI=1 on port 4499, drives the UI through the create-project โ save-team โ generate-plan โ lock-and-run path, and asserts the run completes. See tests/e2e/README.md for full details.
v1.0 is personal-use complete. Open work past v1.0 is out of scope for this repo (the plan was always to ship the personal-use slice and stop).
Possible future directions, deliberately not pursued in v1.0:
WISP_AUTH_MODE=api stub.(plan_id, task_id) composite key in the tasks table so each replan version's per-task token totals are recorded independently. Today the events table is the audit source for replanned runs.Apache-2.0 โ see LICENSE.
.
โโโ .claude-plugin/ # plugin.json + marketplace.json
โโโ agents/ # architect, developer, qa, planner agent specs
โโโ apps/
โ โโโ dashboard-server/ # Fastify + Drizzle + WS, owns SQLite + Walker runtime
โ โโโ dashboard-web/ # Vite + React + Tailwind + shadcn dashboard
โโโ commands/ # /wisp-dashboard slash-command
โโโ docs/ # architecture, agents, development reference
โโโ hooks/ # PreCompact + SessionStart hook config
โโโ packages/
โ โโโ orchestrator/ # subprocess + pool + walker + worktree + verification
โ โโโ memory-mcp/ # M3 โ stdio MCP server for shared per-run kv store
โ โโโ schemas/ # Drizzle DB schema + Zod plan/event/team schemas
โโโ skills/ # M6 โ /wisp-new-run, -resume, -inspect, -diagnose
โโโ scripts/ # dashboard launcher (PowerShell + bash)
โโโ tests/
โ โโโ e2e/ # Playwright end-to-end harness
โโโ CHANGELOG.md
โโโ README.md
โโโ package.json
โโโ pnpm-workspace.yaml
โโโ tsconfig.base.json
.allowed_signers
.claude/
.claude-plugin/
marketplace.json
plugin.json
hooks/
handler.cjs
settings.json
.editorconfig
.gitattributes
.github/
dependabot.yml
ISSUE_TEMPLATE/
bug_report.yml
config.yml
feature_request.yml
PULL_REQUEST_TEMPLATE.md
workflows/
ci.yml
.gitignore
.prettierignore
.prettierrc.json
agents/
architect.md
developer.md
planner.md
qa.md
apps/
.gitkeep
dashboard-server/
drizzle/
drizzle.config.ts
0000_harsh_oracle.sql
0001_silky_random.sql
0002_variable_team.sql
0003_plan_versions.sql
0004_events_run_id_index.sql
0005_agents.sql
0006_chat_v2.sql
0007_ruflo_port.sql
0008_paperclip_port.sql
0009_production_loop.sql
0010_project_run_defaults.sql
0011_dod_and_runtime.sql
0012_project_briefs.sql
0013_change_requests.sql
0014_project_states.sql
0015_agent_overrides.sql
0016_plan_kind.sql
0017_package_target.sql
0018_lead_notes.sql
0019_plan_created_at.sql
0020_task_executor.sql
0021_runtime_report_gate.sql
meta/
_journal.json
0000_snapshot.json
0001_snapshot.json
0002_snapshot.json
0003_snapshot.json
package.json
scripts/
copy-templates.mjs
src/
__tests__/
agent-overrides.test.ts
agents-seed-model-upgrade.test.ts
agents.test.ts
atomic-checkout.test.ts
auth-block.test.ts
auth-reprobe.test.ts
auto-merge.test.ts
autopilot.test.ts
boot-smoke.test.ts
brief-summary.test.ts
build-route.test.ts
change-requests.test.ts
chat-v2.test.ts
chat.test.ts
cost-kill.test.ts
daily-count.test.ts
detect-project-type.test.ts
dod.test.ts
env-flags.test.ts
findings.test.ts
goap-route.test.ts
handoff-injection.test.ts
hard-timeouts.test.ts
harness-boot-check.test.ts
health.test.ts
hooks.test.ts
import-brief-directive.test.ts
inject-lead-checkpoint.test.ts
inject-runtime-verifier.test.ts
insights.test.ts
interview.test.ts
interviewer-engine.test.ts
inventory.test.ts
iteration-plan.test.ts
iterations-endpoint.test.ts
lead-routes.test.ts
lead-runner.test.ts
max-turns-retry.test.ts
mcp-config.test.ts
migrations.test.ts
org-chart.test.ts
packager-runner.test.ts
phase-routing.test.ts
plan-chain.test.ts
planner-repo-context.test.ts
planner.test.ts
plans.test.ts
playwright-installer.test.ts
post-run-boot-check-gate.test.ts
preview-routes.test.ts
preview-server.test.ts
preview-ws.test.ts
probe-prompt.test.ts
project-autopilot-defaults.test.ts
project-delete.test.ts
project-state-loader.test.ts
projects.test.ts
prompt-bundle.test.ts
prompt-bundles-route.test.ts
reasoningbank.test.ts
recovery.test.ts
release-gate.test.ts
replan.test.ts
repo-tree.test.ts
resume-state.test.ts
router.test.ts
run-summary.test.ts
runs-iteration-link.test.ts
runs-status-filter.test.ts
runs.test.ts
runtime-project-guard.test.ts
runtime-report-loader.test.ts
runtime-task-reset.test.ts
runtime-verifier.test.ts
self-healing.test.ts
serve-web.test.ts
setup.ts
shutdown-handlers.test.ts
shutdown.test.ts
skills-discovery.test.ts
skills-invoke-directive.test.ts
skills-section.test.ts
skills.test.ts
static-preview-server.test.ts
team-templates.test.ts
team.test.ts
templates.test.ts
thompson.test.ts
verify-events.test.ts
wire-up.test.ts
workers.test.ts
ws.test.ts
app.ts
auth-status.ts
autopilot/
budget.ts
runner.ts
cache/
prompt-bundle.ts
types.ts
checkout/
atomic-checkout.ts
db/
agents-backfill.ts
agents-seed.ts
index.ts
migrate.ts
preflight.ts
env.ts
logger.ts
orchestrator/
agent-overrides.ts
auto-merge.ts
boot-smoke.ts
brief-context.ts
detect-project-type.ts
findings.ts
handoff-loader.ts
harness-boot-check.ts
inject-lead-checkpoint.ts
inject-runtime-verifier.ts
inject-wire-up.ts
interviewer-engine.ts
lead-runner.ts
mcp-config.ts
mock-runner.ts
packager-runner.ts
plan-generation.ts
plan-identity.ts
planner-repo-context.ts
planner-runner.ts
planner.ts
playwright-installer.ts
preview-server.ts
project-state-loader.ts
recovery.ts
release-gate.ts
replan.ts
repo-init.ts
repo-tree.ts
resume-state.ts
runtime-report-loader.ts
runtime-verifier.ts
runtime.ts
self-healing.ts
skills-section.ts
static-preview-server.ts
wire-up.ts
reasoningbank/
store.ts
tfidf.ts
router/
sampler.ts
thompson.ts
routes/
agent-overrides.ts
agents.ts
build.ts
change-requests.ts
chat-attachments.ts
chat-directives.ts
chat-engine.ts
chat.ts
dod.ts
goap.ts
health.ts
hooks.ts
index.ts
insights.ts
interview.ts
iterations.ts
lead.ts
org-chart.ts
plan-chain.ts
plans.ts
preview.ts
probe-prompt.ts
projects.ts
prompt-bundles.ts
router.ts
runs.ts
skills.ts
team-templates.ts
workers.ts
wrap.ts
run-summary/
retrieve.ts
summarizer.ts
server.ts
skills/
discovery.ts
invoker.ts
loader.ts
registry.ts
seed/
audit-orphan-runs/
SKILL.md
auto-doc/
SKILL.md
builder-discipline/
SKILL.md
deep-research/
SKILL.md
doctor/
SKILL.md
frontend-quality/
SKILL.md
qa-verification/
SKILL.md
summarize-thread/
SKILL.md
types.ts
templates/
cli-tool.json
data-pipeline.json
desktop-app.json
disk-store.ts
docs-site.json
fullstack-web.json
index.ts
mobile-app.json
python-backend.json
refactor-squad.json
ts-library.json
web-app.json
workers/
daemon.ts
handlers/
audit-orphan-runs.ts
auto-doc.ts
consolidate-memory.ts
inventory-refresh.ts
prompt-bundle-evict.ts
retry-max-turns.ts
run-summary-fallback.ts
worker-runs-prune.ts
registry.ts
ws.ts
tsconfig.json
tsconfig.test.json
vitest.config.ts
dashboard-web/
eslint.config.js
index.html
package.json
public/
avatars/
generic-01.jpg
generic-02.jpg
generic-03.jpg
generic-04.jpg
generic-05.jpg
generic-06.jpg
generic-07.jpg
generic-08.jpg
generic-09.jpg
generic-10.jpg
generic-11.jpg
generic-12.jpg
generic-13.jpg
generic-14.jpg
generic-15.jpg
generic-16.jpg
generic-17.jpg
generic-18.jpg
generic-19.jpg
generic-20.jpg
seed-aiko.jpg
seed-diego.jpg
seed-elena.jpg
seed-javier.jpg
seed-lena.jpg
seed-marcus.jpg
seed-maya.jpg
seed-noah.jpg
seed-priya.jpg
seed-sven.jpg
wisp-mascot.png
wisp-wordmark.png
scripts/
validate-tokens.cjs
validate-tokens.test.cjs
src/
api/
client.test.ts
client.ts
queries.test.ts
queries.ts
ws.test.ts
ws.ts
App.test.tsx
App.tsx
assets/
logomark.svg
components/
AddBuiltInAgentDialog.tsx
AgentChat.test.tsx
AgentChat.tsx
AgentOverrideDialog.tsx
AnimatedCounter.tsx
ApplyTemplateDialog.tsx
AutopilotToggle.test.tsx
AutopilotToggle.tsx
Avatar.tsx
AvatarPicker.tsx
BackToProject.tsx
BriefCard.test.tsx
BriefCard.tsx
BuildAppCard.test.tsx
BuildAppCard.tsx
BuildTargetSelect.tsx
CommandPalette.tsx
ComposedPromptPreviewDialog.tsx
CostEstimatePanel.tsx
DefinitionOfDoneCard.tsx
ErrorBoundary.tsx
FirstRunModal.test.tsx
FirstRunModal.tsx
home/
GlobalRunsTable.tsx
LiveNowGrid.tsx
OutcomeDonut.test.tsx
OutcomeDonut.tsx
TokenAreaChart.tsx
LanguageToggle.test.tsx
LanguageToggle.tsx
layout/
AuroraBackground.tsx
AuthBanner.test.tsx
AuthBanner.tsx
Breadcrumbs.tsx
NotificationsPopover.tsx
Sidebar.tsx
TopBar.test.tsx
TopBar.tsx
... 418 moreยฉ 2026 Flowy ยท Free and open source
Built for Claude Code ยท Not affiliated with Anthropic