@pruddiman/dispatch
v1.4.2
Published
AI agent orchestration CLI — parse markdown task files, dispatch each unit of work to code agents (OpenCode, GitHub Copilot, etc.), and commit results with conventional commits
Maintainers
Readme
Dispatch
AI agent orchestration CLI — parse work items from GitHub Issues, Azure DevOps, or local markdown files, dispatch each unit of work to a coding agent (OpenCode, GitHub Copilot, Claude Code, or OpenAI Codex), and commit results with conventional commits.
What it does
Dispatch closes the gap between issue trackers and AI coding agents. It:
- Fetches work items from GitHub Issues, Azure DevOps Work Items, or local markdown specs.
- Generates structured specs via an AI agent that explores the codebase and produces task lists.
- Plans and executes each task in isolated AI sessions, with an optional two-phase planner-then-executor pipeline.
- Manages the git lifecycle — branching, committing with conventional commit messages, pushing, and opening pull requests that auto-close the originating issue.
Prerequisites
Node.js
Node.js >= 20.12.0 is required.
AI provider (choose one)
OpenCode (default):
# Install OpenCode
curl -fsSL https://opencode.ai/install | bash
# or: npm install -g opencode-ai
# Configure an LLM provider (Anthropic, OpenAI, etc.)
opencode
# then run: /connectGitHub Copilot:
# Requires an active GitHub Copilot subscription
# Install the Copilot CLI
npm install -g @github/copilot # requires Node.js 22+
# or: brew install copilot-cli
# or: winget install GitHub.Copilot
# Authenticate
copilot
# then run: /loginFor CI environments, set one of these environment variables instead of logging in interactively:
COPILOT_GITHUB_TOKEN— GitHub PAT with Copilot Requests permission (highest priority)GH_TOKEN— standard GitHub CLI tokenGITHUB_TOKEN— commonly used in CI
Claude Code (--provider claude):
# Install Claude Code CLI
npm install -g @anthropic-ai/claude-code
# Authenticate
claude login
# or set ANTHROPIC_API_KEY in your environmentDefault model: claude-sonnet-4. Available models: claude-sonnet-4, claude-sonnet-4-5, claude-opus-4-6, claude-haiku-3-5.
OpenAI Codex (--provider codex):
# Install the Codex CLI
npm install -g @openai/codex
# Authenticate via environment variable
export OPENAI_API_KEY=sk-...Default model: o4-mini. Available models: o4-mini, o3-mini, codex-mini-latest.
Issue tracker (choose based on your repo)
GitHub (--source github):
# Install the GitHub CLI
# https://cli.github.com/
gh auth loginAzure DevOps (--source azdevops):
# Install the Azure CLI
# https://learn.microsoft.com/en-us/cli/azure/install-azure-cli
az login
az extension add --name azure-devopsLocal markdown (--source md): No external tools or authentication required.
Windows users: See Windows prerequisites and setup for platform-specific installation commands, recommended configuration, and known limitations.
Installation
# Global install — adds `dispatch` to PATH
npm install -g @pruddiman/dispatch
# Run without installing
npx @pruddiman/dispatch
# Local project install
npm install --save-dev @pruddiman/dispatch
npx dispatchQuick start
# Run interactive configuration wizard (first-time setup)
dispatch config
# Dispatch all open issues to AI agents
dispatch
# Dispatch specific issues
dispatch 42 43 44
# Dry run — list tasks without executing
dispatch --dry-run
# Use GitHub Copilot instead of OpenCode
dispatch --provider copilot
# Generate specs from issues (before dispatching)
dispatch --spec 42,43Pipeline modes
| Mode | Flag | Description |
|------|------|-------------|
| Dispatch | (default) | Plan and execute tasks; manage full git lifecycle |
| Spec generation | --spec | Convert issues into structured markdown spec files |
| Fix tests | --fix-tests | Detect and auto-fix failing tests via AI |
Task files
Dispatch reads work items from markdown files with - [ ] ... checkbox syntax:
# My Feature
- [ ] (P) Add the login endpoint
- [ ] (P) Write unit tests for the login endpoint
- [ ] (S) Update the API documentationEach unchecked item is dispatched to an AI agent. An optional mode prefix controls execution batching:
| Prefix | Mode | Behavior |
|--------|------|----------|
| (P) | Parallel | Tasks run concurrently (up to --concurrency) |
| (S) | Serial | Tasks run one at a time |
| (I) | Isolated | Each task runs in a dedicated worktree |
Tasks are marked [x] when complete. Rerunning dispatch skips already-completed tasks.
Configuration
Dispatch uses three-tier configuration: CLI flags override config file values, which override hardcoded defaults.
# Interactive wizard — guided setup for core AI settings (provider/model/source)
dispatch configConfig is stored at .dispatch/config.json (relative to the working directory where you run dispatch):
{
"provider": "copilot",
"model": "claude-sonnet-4-5",
"source": "github",
"testTimeout": 60
}| Key | Description |
|-----|-------------|
| provider | AI backend: opencode (default), copilot, claude, or codex |
| model | Model to use when spawning agents (provider-specific format) |
| source | Issue tracker: github, azdevops, or md |
| testTimeout | Test execution timeout in seconds (default: 60) |
Options reference
Dispatch mode
| Option | Default | Description |
|--------|---------|-------------|
| <issue-id...> | (all open) | Issue IDs to dispatch |
| --provider <name> | opencode | AI backend (opencode, copilot, claude, codex) |
| --source <name> | (auto-detected) | Datasource (github, azdevops, md) |
| --dry-run | false | List tasks without executing |
| --no-plan | false | Skip planner phase, execute directly |
| --no-branch | false | Skip branch/push/PR lifecycle |
| --concurrency <n> | (cpu/memory) | Max parallel dispatches |
| --plan-timeout <min> | 10 | Planning timeout in minutes |
| --plan-retries <n> | 1 | Retries after planning timeout |
| --server-url <url> | (none) | Connect to a running provider server |
| --cwd <dir> | process.cwd() | Working directory |
| --verbose | false | Show detailed debug output |
Spec mode
| Option | Description |
|--------|-------------|
| --spec [values...] | Issue numbers, glob pattern, or description. Activates spec mode. Pass no args to regenerate all existing specs. |
| --source <name> | Datasource override (auto-detected if omitted) |
| --output-dir <dir> | Output directory for spec files (default: .dispatch/specs) |
| --org <url> | Azure DevOps organization URL (required for azdevops) |
| --project <name> | Azure DevOps project name (required for azdevops) |
Datasource auto-detection
When --source is not provided, Dispatch inspects the git origin remote URL:
| Remote URL contains | Detected source |
|---------------------|----------------|
| github.com | github |
| dev.azure.com | azdevops |
| visualstudio.com | azdevops |
For local-only workflows, pass --source md explicitly.
Exit codes
| Code | Meaning |
|------|---------|
| 0 | All tasks completed successfully |
| 1 | One or more tasks failed, or a fatal error occurred |
| 130 | SIGINT (Ctrl+C) |
| 143 | SIGTERM |
Documentation
Full documentation is in the docs/ directory:
- Architecture Overview
- CLI & Orchestration
- Datasource System
- Provider System
- Task Parsing
- Planning & Dispatch
- Spec Generation
- Testing
- Windows
License
MIT
