Testing and observability for multi-agent delegation, MCP tools, permissions, sandboxed actions, prompts, and workflow replay.
# Add to your Claude Code skills
git clone https://github.com/christiangrey922/multi-agent-workflow-labGuides for using ai agents skills like multi-agent-workflow-lab.
multi-agent-workflow-lab is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by christiangrey922. Testing and observability for multi-agent delegation, MCP tools, permissions, sandboxed actions, prompts, and workflow replay. It has 84 GitHub stars.
multi-agent-workflow-lab's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/christiangrey922/multi-agent-workflow-lab" and add it to your Claude Code skills directory (see the Installation section above).
multi-agent-workflow-lab is primarily written in TypeScript. It is open-source under christiangrey922 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh multi-agent-workflow-lab against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
An open-source testing and observability framework for multi-agent delegation, tool execution, MCP workflows, permissions, sandboxed actions, prompts, and runtime behavior.
Status: Experimental — v0.1.0 release candidate. Suitable for local development, evaluation, and policy testing; not production-hardened infrastructure.
Most model evaluation stops at input → model → output. Multi-agent systems add behavior that a final answer cannot explain:
MAWL makes those decisions explicit, policy-controlled, and traceable. Prompts are versioned assets; delegation is a first-class runtime event; deterministic rules evaluate behavior independently from optional model judges.
| Area | What is implemented |
|---|---|
| Agent runtime | Typed model actions, task limits, cancellation, retries, and deterministic mock execution |
| Delegation | Parent/child task graph, target and capability checks, depth/fan-out limits, loop detection, and result integration events |
| Tool execution | Registry-based invocation with schema validation, allowlists, permissions, policy, optional approval, redaction, timeout, and audit |
| MCP | Official stdio and Streamable HTTP client adapters plus an in-memory mock connector; MCP data remains untrusted |
| Sandbox | Restricted local-process adapter and optional Docker provider interface with auditable lifecycle events |
| Identity and permissions | Runtime-issued agent identity, local development auth, deny-by-default permission and contextual policy engines |
| Prompt system | Semantic versions, SHA-256 hashes, strict variables, trusted/untrusted provenance, and deterministic prompt-injection signals |
| Input parsing | JSON, YAML, Markdown, text, and structured-task normalization |
| Observability | Append-only events, SQLite/JSONL storage, structured logs, task traces, Mermaid delegation graphs, metrics, budgets, and monitors |
| Evaluation | Nine deterministic rules, eight diagnostic dimensions, assertions, YAML specs, run comparison, prompt regression, and optional model judge |
| Replay | Exact reconstruction, dry run, model rerun, and guarded tool rerun |
| Security testing | Prompt injection, escalation, malicious MCP/tool output, secret leakage, traversal, sandbox, recursion, and resource-exhaustion cases |
flowchart TD
Input["User or test input"] --> Parser["Input parsers"]
Parser --> Runtime["Agent runtime + task graph"]
Runtime --> Delegation["Delegation engine"]
Delegation --> Guards["Identity + permission + policy"]
Guards --> Agents["Child agents"]
Guards --> Tools["Tool executor"]
Tools --> MCP["MCP connectors"]
Tools --> Sandbox["Sandbox providers"]
Agents --> Events["Runtime events"]
MCP --> Events
Sandbox --> Events
Events --> Observe["Trace + metrics + monitors"]
Events --> Evaluate["Rules + optional judge + replay"]
Requirements: Node.js 22 or newer and pnpm 11.
From a clone or an extracted release archive:
cd multi-agent-workflow-lab
pnpm install --frozen-lockfile
pnpm demo
The demo requires no API key or paid service. A public clone URL can be added after the maintainer chooses and publishes the repository location.
pnpm demo runs a deterministic review chain through the CLI:
status: completed
orchestrator
→ researcher
→ analyst
→ reviewer
→ evaluator
delegation score: 88.75/100
workflow completed
The actual CLI output is JSON and includes the run ID, every task/agent/status, all eight evaluation dimensions, derived metrics, and the JSONL trace path.
A trace records behavior rather than only the final answer:
orchestrator
delegation.requested → researcher
delegation.created context + permissions + budget + depth
researcher
tool.requested → mcp.mock.search
policy.allowed explicit decision evidence
tool.completed size + redaction metadata
orchestrator
delegation.result.accepted → child task integrated
Use these commands after a run:
pnpm mawl trace show <run-id>
pnpm mawl evaluate <run-id>
pnpm mawl graph <run-id>
pnpm mawl replay <run-id> dry-run
Evaluation scores are normalized diagnostics, not mathematical truth or a security guarantee.
| Workflow | Purpose | Expected result |
|---|---|---|
01-basic-delegation.yaml |
Orchestrator delegates one bounded research task | Completes |
02-parallel-research.yaml |
Two research tasks fan out and an analyst joins them | Completes |
03-review-chain.yaml |
Researcher → analyst → reviewer → evaluator | Completes |
04-permission-denied.yaml |
Direct delegation to a non-allowlisted target | Fails safely |
05-mcp-untrusted-output.yaml |
Hostile MCP content is treated as data in the test harness | Completes safely |
06-delegation-loop.yaml |
Agent A → B → A recursion | Fails safely |
07-human-approval.yaml |
Approval-provider checkpoint behavior | Completes; approval logic is tested separately |
08-budget-exceeded.yaml |
Workflow-wide token budget exhaustion | Fails safely |
09-bad-vs-good-orchestrator.yaml |
Good baseline for comparative evaluation | Completes |
Run any positive example with:
pnpm mawl run workflows/02-parallel-research.yaml
The negative examples intentionally return a non-zero exit code when the requested action is blocked.
The lab compares a bounded, least-privilege orchestration trace with a synthetic bad trace containing duplicate work, leaked context, escalated permission, and an unauthorized tool request. RunComparator and DelegationEvaluator report changes in:
The executable coverage is in tests/lab.test.ts, with scenario inputs under scenarios/.
In this workspace, prefix CLI arguments with pnpm mawl:
pnpm mawl run <workflow.yaml> [json-input]
pnpm mawl agents list
pnpm mawl workflow inspect <run-id>
pnpm mawl task inspect <task-id>
pnpm mawl inspect agent permissions <agent-id>
pnpm mawl inspect mcp server [server-id]
pnpm mawl trace show <run-id>
pnpm mawl evaluate <run-id>
pnpm mawl graph <run-id> [output.mmd]
pnpm mawl replay <run-id> [exact|model-rerun|tool-rerun|dry-run]
pnpm mawl compare <run-a> <run-b>
pnpm mawl test <workflow-test.yaml>
pnpm mawl prompts list
pnpm mawl prompts inspect <prompt-id> [version]
pnpm mawl permissions inspect <agent-id>
pnpm mawl doctor
tool-rerun blocks tool names or manifests classified as external side effects unless the embedding application supplies explicit permission for that exact tool. The CLI supplies no side-effect permissions.
This is not a directory of free-form prompt snippets. YAML assets under prompts/ include:
PromptRegistry;Runtime and security policy layers remain separate from untrusted user, tool, MCP, and child-agent content. Prompt quality tests detect duplicate IDs, invalid versions, missing metadata, variable/placeholder errors, unexpected hashes, and undeclared references.