Open source · autonomous SDLC harness

Ticket in.
PR out.

Styre drives a ticket from Linear or Jira through design → implement → verify → review → PR — on a real branch, in your repo, under your own API key. Every verdict comes from builds, tests and an independent reviewer. Never from an agent grading its own work.

brew install twinning-labs/styre/styre
styre · ENG-482
A crew of small welders assembling a branch line into a green, checked merge node.
How it works

One command drives the whole loop.

Hand Styre a ticket. It advances one stage at a time, journaling each step so a crash resumes where it left off, and exits when a reviewed pull request is open.

  1. 01
    Design
    • Plan the work
    • Extract work units
    • Size fast or full
    • Author acceptance checks
  2. 02
    Implement
    • Provision the toolchain
    • Dispatch each work unit
    • Completeness check
  3. 03
    Verify
    • Declared checks per unit
    • Acceptance-criteria gate
    • Integration
  4. 04
    Review
    • Independent cold-context review
  5. 05
    PR
    • Commit and push the branch
    • Open the pull request

Implement and verify interleave: each work unit is built, then checked against ground truth, and loops until it passes before the next one starts.

terminal
$ styre run ENG-482
Opened the PR — ready for your review. Waiting on CI + merge approval.
PR: https://github.com/acme/app/pull/1183
Stage merge · 14 ticks · 23 events
  #4  transition design→implement
  #12 transition implement→review
  #19 transition review→merge
Features

Everything you need to trust the machine.

It reads your stack

styre setup probes the repo and writes its profile — JavaScript and TypeScript, Python, Go, Rust, JVM (Maven or Gradle), Ruby, PHP — picking the right test runner and install step for each. Monorepos with several components are found too.

Every run is on the record

One transactional record of every step, verdict and event. Live, stdout is an NDJSON stream you can pipe straight to jq or a log sink, while stderr stays readable prose. That is what makes a run auditable afterwards — and resumable.

Agents get nothing they do not need

No tracker or GitHub tools, and the tracker and forge credentials are stripped from the agent environment. A throwaway worktree is the only surface it can write to.

Acceptance criteria become checks

Design turns the ticket’s acceptance criteria into executable checks, and the gate holds until they pass at HEAD. When one stays red, an arbiter decides whether the code is wrong or the check is — and rewrites the check if that is the answer.

Cheap where it can be, deep where it matters

Design and review run on your deep model, implementation on standard, mechanical steps on cheap — and a retry escalates itself to deep. You pick the model behind each tier, on your own key.

It loops instead of stopping to ask

The default answer to an anomaly is a bounded retry against ground truth, not a halt. Styre pauses and hands back to you once the retries are spent — not the first time something looks wrong.

Boundaries

Where Styre stops.

01

It opens the PR and stops

Styre never merges and never pushes to your default branch. It pushes the branch, opens the pull request, and hands the last call to you.

02

One ticket per run

styre run drives a single ticket and exits. Continuous pickup, multi-ticket scheduling and a dashboard live in the commercial Control Plane — deliberately out of the core, not missing from it.

03

GitHub only, today

The issue tracker is pluggable — Linear and Jira both ship. The code host is not: GitHub is the only forge, so GitLab and Bitbucket repos are out of scope for now.

You steer. It ships.

Install the CLI, point Styre at your repo, and hand it a ticket. It runs on your machine under your own key — there is no hosted backend between Styre and your code.