Local control plane for orchestrating Codex agent lanes over the Codex App Server.
Project description
dispatch
Local control plane for orchestrating Codex agent lanes over the Codex App Server. One authored contract per operation, projected to CLI + MCP (+ remote later) with no drift.
Quick Start
Install the CLI from PyPI:
uv tool install outfitter-dispatch
dispatch --help
dispatchd --help
dispatch doctor
dispatch up --json
dispatch down --json
From a source checkout:
uv sync
uv run dispatch --help
uv run dispatch doctor --no-app-server
uv run dispatch models --no-refresh
uv run dispatch up --json
uv run dispatch daemon status
Create an owned managed thread, send it work, and inspect the daemon:
uv run dispatch new \
--name docs \
--cwd /path/to/dispatch \
--goal "Finish the docs review." \
--text "Please summarize the current stack state."
uv run dispatch list
uv run dispatch get <dispatch-ref>
uv run dispatch tail <dispatch-ref> --limit 20
uv run dispatch daemon log --limit 10
uv run dispatch down --json
Use owned managed threads for turn-writing work. Existing desktop Codex threads can be attached as
managed threads, but ADR-0005 still blocks turn-writing and history-mutating commands such
as send, stop, goal set, and goal clear on attached lanes. Every managed
thread has a dispatch-local ref; full Codex thread UUIDs remain accepted everywhere.
Titles and @handles are mutable convenience labels, not stable identity. Metadata
lifecycle actions (rename, archive, restore) can target managed refs or raw
unmanaged Codex thread ids, and search can span both. Attach is metadata-only by
default; use dispatch sync <selector> when you want dispatch to refresh its local
indexed view of an attached thread.
new reports whether the first message was accepted by the App Server, not whether
assistant work completed. Use get to inspect the latest turn state and persisted
App Server errors, or watch for a bounded live event sample. Slash commands in
--text are plain text; use --goal when creating a native App Server goal.
Use dispatch models before pinning model or service-tier presets; Dispatch
resolves aliases such as fast from the live App Server model catalog and keeps
omitted model/tier values on Codex defaults.
For the operator guide, CLI/MCP examples, triggers, and plugin setup, start at
docs/usage/README.md.
Start troubleshooting with dispatch doctor. It checks PATH visibility, the Codex CLI
and auth footprint, daemon socket/pidfile state, registry schema/integrity, packaged
skills/plugin assets, and a low-risk Codex App Server initialize smoke. If doctor reports
an old registry schema, stop the daemon and run dispatch registry migrate before
starting it again.
Agent And Plugin Support
This repo ships first-party skills in skills/:
skills/dispatch/SKILL.mdteaches agents how to operate dispatch safely.skills/dm/SKILL.mdis the dispatch-backed "dispatch message" workflow for short inter-lane messages.
The workspace-local Codex plugin bundle lives at plugins/dispatch/,
with a marketplace entry in .agents/plugins/marketplace.json.
Restart Codex if the plugin does not appear immediately.
Project Docs
docs/development/design.md- architecture and design notes.docs/adrs/- accepted architecture decisions.docs/research/- verified Codex App Server findings..agents/plans/v0/RETRO.md- v0 execution ledger and verification record.
For contributors, AGENTS.md is the canonical fieldguide.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file outfitter_dispatch-0.5.0.tar.gz.
File metadata
- Download URL: outfitter_dispatch-0.5.0.tar.gz
- Upload date:
- Size: 171.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f642cffca1962a0e0dea3e22da7ca86e8299ae9f293d3ad86dfc71cd2d5d9343
|
|
| MD5 |
4588c16bbf0010ec178d859da25bc336
|
|
| BLAKE2b-256 |
6186056e76197d0d820287634b89af32a5094c550da4934db2516f59b1585785
|
Provenance
The following attestation bundles were made for outfitter_dispatch-0.5.0.tar.gz:
Publisher:
publish.yml on outfitter-dev/dispatch
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
outfitter_dispatch-0.5.0.tar.gz -
Subject digest:
f642cffca1962a0e0dea3e22da7ca86e8299ae9f293d3ad86dfc71cd2d5d9343 - Sigstore transparency entry: 1791489811
- Sigstore integration time:
-
Permalink:
outfitter-dev/dispatch@02c0dbefd5e38eda48a3c121b573558257065b0c -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/outfitter-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@02c0dbefd5e38eda48a3c121b573558257065b0c -
Trigger Event:
release
-
Statement type:
File details
Details for the file outfitter_dispatch-0.5.0-py3-none-any.whl.
File metadata
- Download URL: outfitter_dispatch-0.5.0-py3-none-any.whl
- Upload date:
- Size: 112.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5656295ca92cc465424724ce5934d00a58964260dc56afa5700801918e41e37f
|
|
| MD5 |
426947dcbb9e8d6e3b601b203870980e
|
|
| BLAKE2b-256 |
7c469571fe979ff6374b02484c93cdd70e6a45c3e8b7f951aeb89ce75e994769
|
Provenance
The following attestation bundles were made for outfitter_dispatch-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on outfitter-dev/dispatch
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
outfitter_dispatch-0.5.0-py3-none-any.whl -
Subject digest:
5656295ca92cc465424724ce5934d00a58964260dc56afa5700801918e41e37f - Sigstore transparency entry: 1791490602
- Sigstore integration time:
-
Permalink:
outfitter-dev/dispatch@02c0dbefd5e38eda48a3c121b573558257065b0c -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/outfitter-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@02c0dbefd5e38eda48a3c121b573558257065b0c -
Trigger Event:
release
-
Statement type: