Skip to main content

Local-first orchestration for terminal-based AI coding agents

Project description

striatum

Local-first orchestration for multiple terminal-based AI coding agents.

striatum is a small, repo-local control plane for coordinating AI coding agents that live in terminals: Codex, Claude Code, Gemini CLI, or any other model runtime that can be represented as a command. It is built for workflows where several agents need to draft, review, synthesize, repair, and report on work without relying on a hosted coordinator or hidden chat transcripts.

The important distinction is this: .striatum/state.sqlite3 is the authoritative live state for runs, jobs, sessions, queue messages, leases, blockers, verdicts, artifacts, and events. Repository files (prompts, findings, ledgers, syntheses, decisions, handoffs, redacted evidence exports) are durable provenance, not the live message bus. Marker files, tmux pane state, terminal output, and provider hooks are useful for humans, but they do not advance state.

Status

v1.1.0. Every RFC under docs/rfcs/ is accepted (or accepted (V1)); the implementation slices for each are on main. Per-version release notes live in CHANGELOG.md.

Install

From a checkout of this repository:

make install
.venv/bin/striatum --help

For development without installing the console script:

PYTHONPATH=src python3 -m striatum.cli --help

Run the tests with:

make test

Quick Start (Human Operator)

You will run striatum commands by hand.

TARGET_REPO=/path/to/your/repo
WORKFLOW=examples/code-change-flow/workflow.json   # or your own

striatum --repo "$TARGET_REPO" init --json
striatum --repo "$TARGET_REPO" workflow validate "$WORKFLOW" --json
striatum --repo "$TARGET_REPO" run prepare --workflow "$WORKFLOW" --json
striatum --repo "$TARGET_REPO" run start --run-id <run_id> --json
striatum --repo "$TARGET_REPO" dashboard --run-id <run_id> --once

From here you register a session and claim work. The full operator playbook is docs/HOW_TO_HUMAN.md.

Quick Start (Coding Agent)

You will install the runner, install the agent skill bundle (RFC 0015), and hand the agent a target repo with a workflow file in it. The agent does the rest.

TARGET_REPO=/path/to/your/repo
striatum --repo "$TARGET_REPO" init --with-skills claude_code --json
# now point your Claude Code session at $TARGET_REPO and tell it:
#   "drive the workflow at <path>/workflow.json using striatum"

The single command above initializes .striatum/ and writes five SKILL.md files under .claude/skills/striatum-*/. The bundle teaches the agent how to drive the runner without reading the striatum source. For agents without a skill convention, striatum skills install --profile generic writes a single STRIATUM_AGENT_GUIDE.md you can paste into a system prompt. The long-form companion to the bundle is docs/HOW_TO_AGENT.md.

What It Is For

striatum is for long-running, review-heavy agent workflows where "just tell three agents to work in tmux panes" stops being enough. It gives the human and coordinator a stable answer to questions like:

  • What run is active, on which branch was it confirmed, and which jobs are claimable, blocked, in review, or waiting on a human?
  • Which session owns a lease? What artifact was required, where was it written, what hash was recorded?
  • Did a review return needs_revision, and did the workflow declare a safe cycle for that?
  • Can I commit a redacted evidence summary without committing live SQLite state or transcripts?

The runner is intentionally conservative. It coordinates work; it does not decide that an agent is done because a terminal printed a phrase. Agents and humans move the workflow by calling striatum commands.

striatum is a domain-driven workflow runner: the vocabulary in docs/UBIQUITOUS_LANGUAGE.md is the model, not just documentation; the CLI verbs are the only legal mutations. docs/DDD.md explains why the vocabulary is load-bearing instead of bookkeeping.

Documentation Map

File When to read
docs/GETTING_STARTED.md First 15 minutes; forks human-operator vs. coding-agent setup.
docs/HOW_TO_HUMAN.md The operator's long-form playbook; every CLI verb in the order you use it.
docs/HOW_TO_AGENT.md Long-form companion to the RFC 0015 agent skill bundle.
docs/WRITING_WORKFLOWS.md How to author your own workflow.json.
docs/CLI_REFERENCE.md Flat list of every CLI verb and stable exit codes.
docs/SPEC.md The implementation contract; the source of truth when this page disagrees with the runner.
docs/INDEX.md Every doc in docs/ with a one-line summary.

License

Apache-2.0. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

striatum_orchestrator-1.10.0.tar.gz (259.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

striatum_orchestrator-1.10.0-py3-none-any.whl (195.8 kB view details)

Uploaded Python 3

File details

Details for the file striatum_orchestrator-1.10.0.tar.gz.

File metadata

  • Download URL: striatum_orchestrator-1.10.0.tar.gz
  • Upload date:
  • Size: 259.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for striatum_orchestrator-1.10.0.tar.gz
Algorithm Hash digest
SHA256 fcbbbc7dc6cf50ace1b117837746ce3cee76461bc2b97067c61e69fcaba7e7ad
MD5 7b5b6265dfd441f4b4540885d79590e9
BLAKE2b-256 87a39013c71bbb673274892a3627d819dc4d5adb170f4e0a8036e27d28b9e2da

See more details on using hashes here.

Provenance

The following attestation bundles were made for striatum_orchestrator-1.10.0.tar.gz:

Publisher: release.yml on halbritt/striatum

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file striatum_orchestrator-1.10.0-py3-none-any.whl.

File metadata

File hashes

Hashes for striatum_orchestrator-1.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b4051783a5d40d7057c311721c9d98e816f7120ef7b38ee264f0e8ca92ee9b21
MD5 01440eeb9430f72bff6f9a601964d300
BLAKE2b-256 7f17db959d4a64f441753cc95554d240a326b1fdfa8c9fa11f3b88f912f7e437

See more details on using hashes here.

Provenance

The following attestation bundles were made for striatum_orchestrator-1.10.0-py3-none-any.whl:

Publisher: release.yml on halbritt/striatum

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page