skills/aradotso/trending-skills/wanman-agent-matrix

wanman-agent-matrix

Installation
SKILL.md

wanman Agent Matrix Runtime

Skill by ara.so — Daily 2026 Skills collection.

wanman is an open-source local agent matrix framework that runs a supervised network of Claude Code or Codex agents on your machine, coordinated through a JSON-RPC supervisor. Inspired by Japanese ワンマン電車 (one-man trains), it lets the human step back into an observer role while agents collaborate autonomously.

Installation & Setup

Prerequisites

  • Node.js 20+
  • pnpm 9+
  • git
  • A logged-in Claude Code or Codex CLI

Install from Source

git clone git@github.com:chekusu/wanman.git wanman.dev
cd wanman.dev
pnpm install
pnpm build

# Run the CLI directly
pnpm --filter @wanman/cli exec wanman takeover /path/to/any/git/repo

Single-file Bundle

pnpm --filter @wanman/cli standalone
node packages/cli/dist/wanman.mjs takeover /path/to/any/git/repo

Add to PATH

After building, symlink or alias the CLI so you can run wanman from any project:

# Example: add to PATH via shell profile
export PATH="$PATH:/path/to/wanman.dev/packages/cli/dist"
# Then from inside any git repo:
wanman takeover .

Key CLI Commands

Command Description
wanman takeover <path> Take over an existing git repo with the full agent matrix
wanman run <goal> Start an agent matrix for a one-shot goal
wanman send <agent> <msg> Send a message to an agent (--steer interrupts target)
wanman recv [--agent <name>] Receive and mark pending messages as delivered
wanman agents List registered agents and their current states
wanman escalate <msg> Escalate a message to the CEO agent
wanman watch Live-stream supervisor and agent activity
wanman task create Create a task in the shared pool
wanman task list List all tasks
wanman task get <id> Get task details
wanman task update <id> Update task status/fields
wanman task done <id> Mark a task as complete
wanman initiative create Create a long-lived initiative
wanman initiative list List initiatives
wanman capsule create Create a change capsule
wanman capsule list List change capsules
wanman capsule mine List capsules owned by current agent
wanman artifact put Store a structured artifact
wanman artifact list List stored artifacts
wanman artifact get <id> Retrieve an artifact
wanman hypothesis create Create a hypothesis to track
wanman hypothesis list List hypotheses
wanman hypothesis update <id> Update hypothesis status
wanman context get <key> Read a shared context value
wanman context set <key> <val> Write a shared context value
wanman skill:check [path] Validate skill docs reference real CLI commands

Configuration

Environment Variables

# Supervisor HTTP URL for the CLI (default: http://localhost:3120)
export WANMAN_URL=http://localhost:3120

# Identifies the current agent (set inside agent processes)
export WANMAN_AGENT_NAME=dev

# Select runtime: 'claude' (default) or 'codex'
export WANMAN_RUNTIME=claude

# Model overrides
export WANMAN_MODEL=claude-opus-4-5
export WANMAN_CODEX_MODEL=o4-mini
export WANMAN_CODEX_REASONING_EFFORT=high

# Bias Codex adapter toward lower-latency defaults
export WANMAN_CODEX_FAST=1

# Override where runtime materializes skill-activation snapshots
export WANMAN_SKILL_SNAPSHOTS_DIR=/tmp/my-skill-snapshots

Agent Configuration File

Agent definitions live in a single JSON file (typically .wanman/config.json):

{
  "agents": [
    {
      "name": "ceo",
      "lifecycle": "24/7",
      "model": "high",
      "systemPrompt": "You are the CEO agent. Coordinate all other agents, prioritize tasks, and escalate blockers."
    },
    {
      "name": "dev",
      "lifecycle": "on-demand",
      "model": "standard",
      "systemPrompt": "You are the dev agent. Implement features, fix bugs, and write tests."
    },
    {
      "name": "devops",
      "lifecycle": "on-demand",
      "model": "standard",
      "systemPrompt": "You are the devops agent. Manage CI/CD, infrastructure, and deployments."
    },
    {
      "name": "researcher",
      "lifecycle": "idle_cached",
      "model": "standard",
      "systemPrompt": "You are the research agent. Gather market data and synthesize findings."
    }
  ],
  "dbPath": ".wanman/wanman.db",
  "port": 3120,
  "workspaceRoot": ".wanman/agents"
}

Agent Lifecycle Options

  • 24/7 — Continuous respawn loop; agent always running.
  • on-demand — Idle until triggered by a message or task.
  • idle_cached — Idle until triggered, but preserves Claude session_id across triggers via claude --resume. Claude-only — pairing with codex runtime is rejected at startup.

Model Tiers

  • high — Maps to highest-capability model for the selected runtime.
  • standard — Maps to balanced default model; overridable via WANMAN_MODEL or WANMAN_CODEX_MODEL.

Architecture Overview

+----------------+          +--------------------+          +-----------------+
|  wanman CLI    |  JSON    |  Supervisor        |  spawn   |  Agent process  |
|  (host shell)  | ---RPC-->|  (local process)   | -------> |  (Claude/Codex) |
|                |  /rpc    |  message/context/  |          |  per-agent $HOME|
|                |          |  task/artifact     |          |  per-agent wt   |
+----------------+          +--------------------+          +-----------------+
                                    |                              |
                                    v                              v
                           +--------------------+        +-----------------+
                           |  files + SQLite    |        |  worktree       |
                           +--------------------+        +-----------------+
  • The CLI communicates with the Supervisor via JSON-RPC 2.0 over HTTP.
  • The Supervisor owns: message store, context store, task pool, artifact store, and spawns child agent processes.
  • Each agent runs in an isolated per-agent worktree and per-agent $HOME, so agents never mutate your working directory or shell profile.

Common Patterns & Workflows

Pattern 1: Take Over an Existing Repo

# From inside the repo you want agents to work on:
cd /path/to/my-project
wanman takeover .

# Watch the agents coordinate in real time:
wanman watch

Pattern 2: Send a Goal and Monitor Progress

# Launch agents against a specific goal
wanman run "Refactor the authentication module to use JWT tokens"

# In another terminal, watch activity stream
wanman watch

# Check agent states
wanman agents

# Escalate to CEO if blocked
wanman escalate "Dev agent is stuck on the JWT library choice, please decide"

Pattern 3: Inter-Agent Messaging

# Send a normal message to the dev agent
wanman send dev "Please add unit tests for the UserService class"

# Send a steering (interrupt) message to the dev agent
wanman send dev --steer "STOP current task. Critical bug in auth — fix login endpoint first"

# Receive messages as the dev agent
WANMAN_AGENT_NAME=dev wanman recv

# Receive all pending messages for any agent
wanman recv

Pattern 4: Task Pool Management

# Create a task with a dependency on task ID abc123
wanman task create \
  --title "Write integration tests" \
  --description "Cover all API endpoints with integration tests" \
  --agent dev \
  --after abc123

# List all tasks and their statuses
wanman task list

# Get details of a specific task
wanman task get <task-id>

# Update task status
wanman task update <task-id> --status in-progress

# Mark complete
wanman task done <task-id>

Pattern 5: Shared Context Store

# Store shared context accessible to all agents
wanman context set api_base_url "https://api.example.com/v2"
wanman context set target_environment "staging"

# Read context values
wanman context get api_base_url

# Agents read context in their prompts automatically via the supervisor

Pattern 6: Artifact Storage

# Store a structured artifact (e.g., research output)
wanman artifact put \
  --name "market-analysis-q2" \
  --type "report" \
  --content "$(cat analysis.md)"

# List artifacts
wanman artifact list

# Retrieve a specific artifact
wanman artifact get <artifact-id>

Pattern 7: Hypothesis Tracking

# Create a hypothesis for agents to validate
wanman hypothesis create \
  --title "Switching to Bun runtime reduces build time by 40%" \
  --description "Based on benchmarks from similar TypeScript projects"

# List hypotheses and their validation status
wanman hypothesis list

# Update after validation
wanman hypothesis update <id> --status confirmed --evidence "Build time dropped from 45s to 26s"

Pattern 8: Change Capsules

# Create a change capsule (bounded unit of work/change)
wanman capsule create \
  --title "Auth JWT migration" \
  --description "Migrate session-based auth to JWT"

# List all capsules
wanman capsule list

# List capsules owned by the current agent
WANMAN_AGENT_NAME=dev wanman capsule mine

# Get details
wanman capsule get <capsule-id>

TypeScript Integration (Host SDK)

Embed wanman into your own tools using the @wanman/host-sdk package:

import { WanmanClient } from '@wanman/host-sdk';

// Connect to a running supervisor
const client = new WanmanClient({
  url: process.env.WANMAN_URL ?? 'http://localhost:3120',
});

// Send a message programmatically
await client.send({
  agent: 'dev',
  message: 'Please review the PR and add inline comments',
  steer: false,
});

// Create a task
const task = await client.task.create({
  title: 'Fix flaky tests',
  description: 'Tests in auth.test.ts fail intermittently under CI',
  agent: 'dev',
});

// Poll for agent status
const agents = await client.agents.list();
for (const agent of agents) {
  console.log(`${agent.name}: ${agent.state}`);
}

// Store an artifact
await client.artifact.put({
  name: 'perf-baseline',
  type: 'benchmark',
  content: JSON.stringify(perfResults),
});

// Read shared context
const env = await client.context.get('target_environment');

Project Structure

wanman.dev/
  packages/
    cli/          # wanman CLI (send/recv/task/artifact/run/takeover/...)
    core/         # Shared types, JSON-RPC protocol, skills (core/skills/)
    host-sdk/     # Host-side SDK for embedding wanman into other tools
    runtime/      # Supervisor, agent process manager, SQLite stores, adapters
  docs/
    quickstart.md
    architecture.md
  CONTRIBUTING.md

Built-in Shared Skills (packages/core/skills/)

Skills are auto-discovered by agents at ~/.claude/skills/:

  • artifact-naming — Conventions for naming agent-produced artifacts.
  • artifact-quality — Quality standards for artifacts.
  • cross-validation — CEO consistency checks across agent outputs.
  • research-methodology — Market/data research methodology.
  • wanman-cli — CLI command reference consumed by agents at runtime.
  • workspace-conventions — File-system conventions inside agent workspaces.

Validate Skills

# Check that skill docs only reference real CLI commands
wanman skill:check
wanman skill:check packages/core/skills/wanman-cli.md

Testing

# Type checking
pnpm typecheck

# Run all tests
pnpm test

# Run tests with coverage (target: 90%+ line coverage)
pnpm exec vitest run \
  --coverage \
  --coverage.reporter=text-summary \
  --coverage.reporter=json-summary \
  --coverage.exclude='**/dist/**'

# Coverage summary written to: coverage/coverage-summary.json

Troubleshooting

Supervisor Not Reachable

# Check if supervisor is running on expected port
curl http://localhost:3120/rpc

# Override URL if running on a non-default port
export WANMAN_URL=http://localhost:4000
wanman agents

Agent Stuck / Not Responding

# Check agent states
wanman agents

# Send a steer message to interrupt and redirect
wanman send <agent-name> --steer "Reset and await new instructions"

# Escalate to CEO for intervention
wanman escalate "Agent 'dev' appears stuck on task <task-id>, please reassign"

# Watch live activity to diagnose
wanman watch

idle_cached Lifecycle with Wrong Runtime

Error: idle_cached lifecycle requires Claude runtime; codex has no resume mechanism

Fix: Only use lifecycle: "idle_cached" when WANMAN_RUNTIME=claude (or unset, as Claude is the default). Switch lifecycle to on-demand for Codex agents.

Agents Mutating Wrong Directory

Each agent runs in its own git worktree under workspaceRoot (default: .wanman/agents/). If an agent appears to be modifying wrong files, check workspaceRoot in your config and ensure WANMAN_AGENT_NAME is set correctly in agent subprocesses.

SQLite Lock Errors

If the supervisor crashes mid-run, the SQLite file at dbPath may be locked:

# Stop all wanman processes
pkill -f wanman

# Remove WAL files if present
rm .wanman/wanman.db-wal .wanman/wanman.db-shm

# Restart supervisor
wanman takeover .

Skill Validation Failures

# Run skill:check to find references to non-existent commands
wanman skill:check

# Output will show which skill files reference invalid commands
# Update the skill markdown to use only real wanman CLI commands

Further Reading

Weekly Installs
60
GitHub Stars
39
First Seen
Today