No description
- Rust 94%
- Nix 4.9%
- JavaScript 1.1%
| docs | ||
| examples | ||
| nix/modules | ||
| programs | ||
| src | ||
| .gitignore | ||
| AGENTS.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
Dispatch
Dispatch is a generic webhook-to-steer service for Codex app-server based
systems. It is the product-neutral port of the dispatch.key.store resident
identity pattern:
- Providers or MCP tools send notifications.
- Dispatch authenticates and normalizes the event.
- Dispatch writes an idempotent steer to SQLite.
- A supervisor can deliver the steer into a resident Codex app-server thread for the configured identity.
The service is intentionally configured from TOML. New identities, webhook sources, routes, and small program hooks do not require a Rust edit.
Quick Start
cargo run -- serve --config examples/dispatch.toml
curl -s http://127.0.0.1:9120/healthz
curl -s -X POST http://127.0.0.1:9120/webhook/generic \
-H 'content-type: application/json' \
-d '{"event":"book.search.changed","identity":"assistant","query":"octavia butler"}'
curl -s http://127.0.0.1:9120/v1/steers?status=pending
Use --with-supervisor or [dispatch.appserver] enabled = true when the host
has an authenticated Codex home and a resident identity policy. The supervisor
uses the app-server protocol directly and rejects interactive approval or
elicitation requests fail-closed.
Capabilities
- Dynamic webhook sources under
/webhook/{source}or source-owned paths. - Auth modes: none, bearer token, query token, HMAC-SHA256.
- Secret-free topology view at
GET /topology. - Idempotent event and steer persistence.
- Basic MCP endpoint at
POST /mcpwith tools for recording notifications, listing steers, and reading topology. - Command programs for JavaScript or other scripting runtimes.
- Optional
wasm_c_abiprogram type when built with--features wasm. - Codex app-server supervisor that maintains resident identity threads.