Skip to main content

Spice Harness: an agent harness / fleet operations console for coding repositories.

Project description

Spice Harness

PyPI version Python versions License

Spice Harness is an agent harness / fleet operations console.

Simultaneous Production, Integration, and Control Environment.

spice is an installed, repo-native harness for operating coding agents. It treats the agent transcript as the source of truth and the repository filesystem as the steering channel; supervision, task routing, git pressure, live feedback, and hygiene gates are derived from those two surfaces.

It is built for agents moving fast in parallel: every correction is durable, every task boundary is observable, and the gate catches structural drift before it lands.

spice is building itself, but it was not created in a vacuum: the loop was born from a harsher polyglot environment where many languages, conventions, and agent lanes had to survive contact with one another.

Live steering and semantic ACK loop

Operator steering arrives in the live stream; an assistant ACK retires the exact inbox key from the durable filesystem queue.

What it does

  • Semantic ACKs: steering is not considered handled until the agent acknowledges the durable key in assistant prose.
  • Task allocation: spice task next owns work selection; task boundaries own git synchronization and review phases.
  • Conscience: curated maxims judge assistant prose while work is still in flight, then route violations back as ordinary steering.
  • Constitution: pre-commit and spice study ... enforce repository shape, file/routine limits, env policy, reachability, assertion density, private internals, and commit-message rules.
  • Serve UI: spice serve exposes lanes, teams, live transcripts, steering, attachments, task routing, and browser-visible diagnostics.
  • Observer UI: spice watch <session-dir>... follows existing Codex and Claude transcripts without initializing or modifying their directories.

See docs/overview.md for the operating model and docs/interface.md for the serve UI.

Posture: a single-operator console

spice serve is a single-operator console, and that is a deliberate identity — not a limitation to grow out of:

  • SQLite, localhost, one shared token. The server is a stdlib process backed by SQLite, bound to 127.0.0.1 by default; when it is reached beyond loopback it is gated by a single shared --auth-token. There are no accounts, sessions, or per-user identities.
  • The growth vector is remote reach for one operator, not multi-user auth. Reaching your own fleet from elsewhere is a transport choice — an SSH tunnel or a tailnet bind over the same one-token surface (see single-operator remote reach).
  • Multi-user auth is an explicit non-goal. Do not grow a multi-operator team product out of the stdlib server. Many humans may steer one lane, but only through the same durable filesystem queue — never privileged per-user channels (see no-privileged-channel).

Start Small

Spice Harness is a progressive-disclosure product: watch, then gates, then steer, then fleet. Start by observing existing agent sessions with no repository changes; add constitution gates when the team wants enforceable hygiene; bind one agent when direct intervention becomes necessary; move to the task-backed fleet only when work needs multiple coordinated lanes. The full prerequisite and graduation path is the entry ladder.

Commands

Surface Command
Watch existing agent sessions spice watch <session-dir>...
Install constitution gates only spice init --gates
Prepare steering and fleet surfaces spice init / spice doctor
Open a manually steered lane spice agent ensure / spice serve
Run through the agent wrapper spice agent run -- <cmd>
Pull allocator work spice task next
Rehydrate context spice session briefing
Open the operator UI spice serve
Observe foreign sessions read-only spice watch <session-dir>...
Run studies and gates spice study ... / git pre-commit hook

Configuration lives in CONFIG.md. The design contract lives in DESIGN.md. Wrapper command behavior is detailed in docs/cli/wrapper-commands.md. Stability expectations for extensions and command coupling live in STABILITY.md.

Install

uv tool install -e /path/to/spice-main
# or, for the released package:
uv tool install spice-harness

# RTK is required for the agent shell (version 0.42.4 or newer):
brew install rtk
# or: cargo install --git https://github.com/rtk-ai/rtk

cd /path/to/your/repo
spice init
spice doctor

For repository hygiene without the task plane, shell wrapper, or agent skill, install the standalone constitution tier instead:

spice init --gates

This installs the pre-commit constitution (including sticky-flex limits, regression-only magic-number ratchets, taste policy, and configured extensions) plus commit-message hygiene. It does not install the fleet-specific reference guard or materialize agent files. Commit normally to run the gates, or invoke the staged gate directly with spice dev pre-commit.

The default install is a uv tool. Operators who deploy from a main tree should use the editable form so the installed spice command resolves to that tree; that editable main tree is the server deployment. Other worktrees remain operated trees and do not supply their own runtime.

Graceful degradation

RTK is a required companion for the agent shell: spice agent run delegates command selection to rtk rewrite, and spice doctor verifies the supported protocol before agents work. The local judge and speech synthesis are degradable companions; when either is unavailable, transcript capture, steering, tasks, and the constitution keep working while maxim feedback or audio narration is skipped. Runtime, verification, and protocol details are in CONFIG.md.

Release

Release workflow is documented in docs/release.md. Most users only need to know that releases are cut from clean synchronized worktrees through the repository's mounted spice release command.

Status

Work in progress toward a standalone, releasable product. The loop described here is real, exercised daily, and guarded by the same constitution that spice init installs elsewhere.

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

spice_harness-0.22.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

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

spice_harness-0.22.0-py3-none-any.whl (773.9 kB view details)

Uploaded Python 3

File details

Details for the file spice_harness-0.22.0.tar.gz.

File metadata

  • Download URL: spice_harness-0.22.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for spice_harness-0.22.0.tar.gz
Algorithm Hash digest
SHA256 61c53c259ede18b8012daa909d1761553b90374d5337e97b385adbdff5650137
MD5 a7c8f8c40aeae5e6b5bcc2d3f098af23
BLAKE2b-256 c5ac04ce7c5dccb5ea3988660d215688fd4cdc2322980ce44da36843e55b9ac5

See more details on using hashes here.

File details

Details for the file spice_harness-0.22.0-py3-none-any.whl.

File metadata

  • Download URL: spice_harness-0.22.0-py3-none-any.whl
  • Upload date:
  • Size: 773.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for spice_harness-0.22.0-py3-none-any.whl
Algorithm Hash digest
SHA256 631886a656796187af2277361aaeaeb0fb1701e759041d94ce8b4fccbf5daf00
MD5 7a1edf460cd27742ec084508cbce97b3
BLAKE2b-256 1c09333f41306fa2b0e730e128f1306fb598ad96400296e37a891fc7973f9836

See more details on using hashes here.

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