Dispatch is a modular job runner for API workflows —
built from the ground up to be operated by AI agents,
and comfortable for the humans who write the jobs.
Define once. Share as a file. Run from anywhere.
Let your agent dispatch.
"Our testing tool had a great API. Nobody on the team could use it. So I built a wrapper. The wrapper got a module system. Then an agent interface. Then colleagues started using it for things that had nothing to do with testing.
That's Dispatch."
Your company's internal APIs are powerful. But nobody has time to read the docs, find the right endpoints, figure out the right order.
With Dispatch modules in place, your colleagues don't need to. They describe what they need. The agent reads the SKILL.md, composes the job, makes the real API calls — and reports back.
No tickets to the platform team. No Slack threads asking for curl examples. No Postman collections that are three months out of date.
Add --json and call it done. Agents scrape human-readable text, parse spinner output, guess at retry logic, break on every version bump. Your AI does archaeology on your CLI.
Stable JSON envelopes. Structured error codes. Deterministic artifacts. A briefing format your agent reads before it acts. The human experience is layered on top — not the other way around.
A sequence of module actions in a portable .job.case.json or .job.seed.json file. The agent's unit of work. Shareable, versionable, replayable.
Pluggable wrappers around API surfaces. Built-ins handle flow primitives. Bring your own as .dpmod bundles for private APIs.
The agent briefing. A structured file that tells any AI agent the happy path, the troubleshoot ladder, the full command surface. Drop it in context.
Every run writes a full record: requests, responses, events, resolution. Assert offline. Replay without a network call. Hand it to your agent as context.
Every command has a dual output mode. Human mode for the terminal session. Machine mode for your agent. The schema is stable and versioned — your agent doesn't adapt to your CLI, your CLI adapts to your agent.
✓ Job complete run-id: run_c7d1a9 webhook: wh_9f2a env: staging dir: run-output/run_c7d1a9 ✓ Assertions passed (3/3)
{
"cliVersion": "0.0.1",
"jobType": "register-webhook",
"status": "SUCCESS",
"runId": "20260306-162116-job-run-716a47b",
"runDir": "~/dispatch/run-output/...",
"moduleResolutionPath": "~/dispatch/run-output/.../module_resolution.json",
"next": [
{
"command": "dispatch job assert --run-id 20260306-162116-job-run-716a47b",
"description": "verify outcomes"
}
]
}
Every Dispatch setup ships with a SKILL.md — a structured briefing your AI agent reads before acting.
It defines the preflight sequence, the happy path, the troubleshooting ladder. The agent doesn't explore. It follows the brief.
Write your own for private modules. The format is open. The contract is yours.
--- name: my-api-dispatch description: API workflows via dispatch --- ## Preflight 1. dispatch doctor 2. dispatch self-check ## Default Flow 1. dispatch job validate --case <path> 2. dispatch job run --case <path> 3. dispatch job assert --run-id latest ## Memory Rules # .job.case.json may recall memory only # .job.seed.json may store/forget memory # use --resolve-deps only when fill jobs are declared ## Troubleshooting 1. dispatch job inspect --run-id latest 2. dispatch job readable --run-id latest # check calls/*.response.json