wickedagile wicked-crew
wicked-crew · the control plane of the wicked platform

Intent in.
Verified work out.

The control plane for governed agent delivery — the harness for your agent harnesses. Your own CLIs do the work through durable, governed workflows; the thing that grades it is never the thing that did it, and “done” is re-derived from evidence, never asserted. This is the console, live — drive it.

the studio · served locally
live event feed
crew › attach --run r-4f2a # governed terminal
insight rail Decisions Governance Burn Data Steering Assumptions Files Term Cov ⬇ Export evidence
  1. 1
    Launch a run from a plain-text problem: add rate-limiting to the public API
  2. 2
    Watch the live event feed stream unit-by-unit, with a per-unit transcript
  3. 3
    Steer the gate — approve, amend, or reject. schema-drift · DENY → held for you
bring your own CLI can’t self-grade deny-dominates gates crash-resumable evidence export local-first
Why this exists

Four things go wrong when agents run unsupervised.

intent governed workflow verified result · with the evidence

The operator’s rail

Cost, assumptions, failures, evidence — live.

Every run page carries an insight rail fed by the event stream: who won each unit’s council vote, what the human approved, what each CLI consumed, which external-transform assumptions need review, and which failures were triaged — by a different CLI acting as judge. Steering gates take approve, approve with an amendment that rides the next prompt, or reject (deny dominates). Inject an operator message mid-run; it lands with delivery receipts.

Burn Tokens, cost, and rework per CLI — visible during the run, not on the invoice. Dollar figures for subscription CLIs are imputed API-equivalents.
Assumptions External payload transforms recorded with honest confidence — known, or needs-research badged for human review.
Failure triage Known refusals self-heal; unknown failures go to a different CLI as judge — deny-listed flags are never auto-applied; escalations arrive pre-diagnosed.
Evidence One call returns the run: units, transcripts, decision trail, assumptions. Derived from durable state — nothing reconstructed after the fact.
Governed terminal A real PTY into the worktree — governed by default: tool-calls route through the gate-hook. An ungoverned shell is a loud, explicit opt-in.

Local-first today — the engine runs in-process, workers are local sessions, the bus is local. The execution seam is built for a remote runner; that’s the direction, not a shipped claim. The evidence exporter was itself built by a governed crew run — and then used to export the evidence of its own construction. Read the full story →

One public API · no privileged clients

The console is a client. The API is the product.

Everything the console can do rides one public contract/api/v1. wicked-studio ships inside crew with no privileged access: if it can show it, the API serves it. The second consumer is not a UI at all — the document engine: a crew-governed run answers its bus events with the first draft.

the console · ships inside crew studio

The run board: submit intent, watch phases stream, answer gates, export evidence. A pure client of GET /api/v1/… — launch, events, steering, acceptance — the same endpoints your own tooling can call.

document engine · governed generation, proven wicked-interactive

When interactive creates a doc, a governed crew run answers the bus with a real first draft — heartbeats while it works, an idempotency-keyed delivery, zero changes to the interactive service. The governed-generation seam, observed end-to-end.

the proof · one doc, over the bus opt-in seam · real vocabulary
  1. wicked.interactive.doc.created← the document engine asks for a first draft
  2. crew · governed run launchedworker session in an isolated worktree
  3. wicked.interactive.status.postednarrated heartbeats — the canvas never freezes
  4. wicked.interactive.draft.completeda real draft, idempotency-keyed — replays can’t double-deliver

shipped The Project model — projects group runs and docs across both skins: members, a merged activity feed, open-gate rollups, and a project-scoped code graph — blast radius across member repos via the API, computed by the same estate CLI behind the studio’s repo graph.

Bring your own agent · one protocol

crew runs the CLIs you already have — over ACP.

Not a new model, not a subscription. Your installed CLIs run as persistent Agent Client Protocol sessions in isolated git worktrees, under your own auth and plan — streamed tokens, structured usage, cross-agent context between units. The adapters come from the ecosystem where they exist; crew owns only the Antigravity bridge. The roster is data you own.

resident ACP session · governed worker Claude Code
claude-agent-acp → session in → .worktrees/run-4f2a · no shell · read-scoped

Same governed lifecycle wraps every worker: persistent session, streamed tokens, structured usage. When unit 4 runs on a different CLI than unit 3, it receives unit 3’s output as labeled context — that’s what makes a multi-agent run an actual conversation.

Why you can trust the gate · watch it, then drive it

“Done” is re-derived — and no model can approve it.

A real transition — build → ship — behind a dual gate that deny-dominates: deterministic checks re-verified against the worktree, plus an LLM judge that can fail a gate but never approve one. The verdict.json switch is read from the QE evidence ledger, written by wicked-garden’s QE fleet — never asserted. It plays itself; click a switch to take over.

gate · build → ship · enabled ▶ demo playing
phasebuild
nextship
ALLOW
Every check closed — current reaches ship. Transition allowed. deterministic floor re-verified · no LLM approves · held for human on any DENY
acceptance · read from the ledger GET /api/v1/runs/r-4f2a/acceptance PASS
buildshipdual gate · deny-dominates
  • contract PASS
  • security PASS
  • coverage PASS
  • schema-drift FAIL
  • verdict.json PASS
  • llm-judgeABSTAIN
HELD 1 check failed — the series breaks, held for a human. An LLM judge can fail a gate, never approve one.

verdict.json is read from the QE evidence ledger — deny-dominates, and a CONDITIONAL verdict holds until a clean PASS lands.

Workflows are data, not code

Drop a *.json. It’s a workflow.

10 built-ins ship — feature, bug, migration, collab (a real propose → critique → revise → verdict discussion between two CLIs) and more, each as acyclic-validated JSON. Author your own two ways: drop a file in ~/.config/wicked-core/workflows/, or POST /api/v1/workflows — validated, persisted, hot-registered in the running engine, and the studio ships a builder for it. It auto-cycles the defs below — click one to pin it.

feature.json ✓ acyclic · validated
Durable by construction

Crash it mid-run. It resumes to the exact phase.

A single-writer store and durable cursors give exactly-once effect over at-least-once delivery. Interrupted runs are automatically re-driven on restart. Hover to pause, click a phase to jump, or kill the engine and watch it come back where it left off.

dispatched worker
claude --print → returns → clarify.md
checkpoint written · single-writer store · phase=clarify
The council · routing without self-selection

Every unit is auctioned. No agent picks itself.

When a run is planned, each unit goes to auction: seats vote on numbered capability profiles — names hidden, so no agent can vote for itself — each through a distinct lens (capability, risk, efficiency). The council needs 75% agreement; below-bar ballots trigger runoffs where every seat sees the tally and the dissenters’ arguments. Honest caveat: hiding names makes self-selection harder, not impossible — when nothing differentiates, plurality stands and the recorded dissent is the value.

capability lens P2 profile #2 fits a build unit best
risk lens P2 smallest blast radius on #2
efficiency lens P1 #1 is cheaper per token
synthesized 2 of 3 → REWORK divergence flagged · contract break + missing rollback carried forward
auto-cycling · click a round to pin
The wicked platform

One surface. One control plane.
One catalog. One record.

Four planes, four contracts. Hover or tab through a plane to see its role and what crosses its seams — every cross-plane interaction goes through the contract, never around it.

Experience Where product work happens Rendering and editing surfaces — nothing semantic lives here.
wicked-studiothe surface

Brainstorm it, build it under a check nothing self-approves, then produce the doc, deck or demo.

submit intent · watch the run · answer gates — one crew API, the surface is a pure client
Control Intent in, verified work out Orchestration, governance, gates — your coding agents as governed workers.
wicked-crewthe control plane

Evaluator ≠ creator — no agent grades its own homework. “Done” is re-derived from evidence, never asserted.

you are here
invokes skills as governed workers — deny dominates, every verdict lands in the record
Capability What agents can do Skills, tools, playbooks, councils, the QE fleet — how agents touch the record.
wicked-gardenthe catalog

Multi-model review councils, graph-aware refactors, repo playbooks — plus an open naming contract to ship your own pack.

reads & writes the record through its contract — never around it
Foundation The system of record Code graph · memory · knowledge · evidence · events. Zero-infra, local-first.
wicked-estatethe record

A 102-language code graph, memory, and knowledge in one binary (MCP) — including the injected edges grep never sees.

wicked-interactivethe document engine

Doc storage and lineage, HTML/PDF/PPTX rendering, demo recording. crew proxies it — you depend on it, you don’t visit it.

Get it

Start with the family installer. The studio comes with it.

The simplest way in is npx wicked-installer — the interactive installer for the whole wicked-* family. Or install wicked-crew directly (Node ≥ 22) — either way the studio console ships inside it, served on your machine. Add whichever agent CLIs you want on the roster; crew degrades gracefully to what it finds.

Terms-of-service note: crew drives CLIs you install under your own accounts — confirm programmatic use is permitted by each CLI’s terms; community reports suggest Antigravity’s may not permit it. · Why this exists →

Recommended · family installer
npx wicked-installer   # interactive · picks products · ships the `wicked` CLI

Cross-CLI, cross-product. Choose wicked-crew (and anything else in the family) from one prompt. wicked-crew npm v0.7.22

Direct · wicked-crew only
npm install -g wicked-crew
wicked-crew serve   # the studio console, served on your machine
View on GitHub