Bondsmith
A generic workflow engine in Rust - development workflow enforced in typed code.
MVP · 7 of 10 shippedRoadmap ↓
Capabilities
Generic Flows, fitting your specialized needs
A Flow is plain data: the ordered Phases a Feature moves through, read from disk at run time. Bondsmith runs whichever Flow a Feature is bound to.

In the Flow editor, a copy of feature gains a test-gate Phase duplicated from validate-impl, with a Gate Step added. learn-from-reports is removed, and the copy is saved. Steered from the terminal
flowctl drives every run, one Phase at a time. Nothing advances until every Postcondition holds.

flowctl implement --step -v runs the test Gate for Task T2: 41 tests pass, the count is captured as the baseline, and the Beat advances. Observable from every angle
The Bondsmith UI shows each run live: the Phase a Feature is in, the Beat in flight, and the Task graph across every bound repo.

The checkout-discounts Feature in its implement Phase: Task T2's baseline Gate Beat is running, then passes, and the Task graph marks it green. Agent runs under control
Each Worker is a disposable Claude Code session spawned for one Step. Its Session transcript streams live: every file read, edit and test run.

The Beat overlay for T2's make_green Step: the Worker reads the failing test, finds the rounding bug, edits the discount code, and the test run goes from failing to 42 passed. No LLM grades its own homework
A Postcondition either passes or hard-blocks the Beat. There is no softer outcome and no assert-and-warn escape hatch.
Roadmap
- Shipped: Generic Flow engine: any Flow, each Phase a typed contract
- Shipped: Typed Postconditions, hard-blocked on failure
- Shipped: Flows read from disk at run time, editable without a rebuild
- Shipped: Bondsmith UI: a live, read-only Feature inspector and Flow editor
- Shipped: Session log and live Session transcript for every Worker Beat
- Shipped: Triage rules: decide a Review unit without the human
- Shipped: Multi-repo Checkouts, one clone per bound repo
- In progress: learn-from-reports: mining Findings into the Knowledge base
- Planned: Bondsmith host: Bondsmith in a dev container on a remote host
- Planned: Worker containers: each Worker sandboxed in its own container
MVP · 7 of 10 shipped
After MVP
- Planned: Bondsmith UI write actions: drive a run from the UI
- Planned: Task loop: run the Task graph to done, unattended
- Planned: Notifications: alert the human when a run is waiting on them, blocked or done
- Planned: Model routing: choose each Worker's model per Step
- Planned: Step cost statistics across runs
- Planned: Session log analysis: mining past Worker sessions
- Planned: Cloud Workers: Workers run on remote machines
- Planned: Pi target
Bondsmith is the workflow engine I run my own feature work through: a Rust CLI that drives a Feature through a Flow of Phases, from exploration to shipped code, and refuses to advance when the work doesn't hold up.
The premise is that an LLM is non-deterministic by construction, so the answer isn't to trust it harder. It's to make everything around it deterministic. A Feature moves through the Phases of the Flow it is bound to, each one a typed contract with Postconditions the engine evaluates itself, in Rust. No LLM grades its own homework, and there is no assert-and-warn escape hatch: a failed Postcondition is a hard block.
A deep-dive post on this is coming. Stay tuned.