Make software failures reproducible
and fixes permanent.

What it derives
  1. 01Trigger
  2. 02Dependency boundary
  3. 03Determinism envelope
  4. 04Oracle
Apache-2.0 CLI / runs on your machines
01 / The distinction

A report tells you what happened.
A repro makes it happen again.

Passive evidence
Logs and tracesyou reconstruct
Screenshots and recordingsyou reconstruct
Tickets and repro stepsyou reconstruct
Alert on a flaky failureyou reconstruct
“it happens sometimes”you guess

Evidence describes a failure. Someone still has to rebuild the actions, state, dependencies, timing, and environment that caused it, and hope the rebuild is faithful.

Executable repro
Trigger sequencecaptured
Dependency boundarybounded
Determinism envelopecontrolled
Machine-checkable oracleasserted
repro_8f3a2c91runs

A repro is an artifact, not a narrative. It runs before the change, runs after the change, and answers one question without discussion: did the same failure happen again?

02 / Anatomy
every reproducible failure has four

Four properties turn a failure into something you can run.

01

Trigger

The exact sequence of actions, inputs, and timing that starts the failure, reduced to only what matters.

POST /checkout
3 requests in flight
142 ms apart
02

Dependency boundary

Which databases, services, files, devices, and external systems are inside the failure, and which are noise.

orders.pg
pay-svc v2.11
device state
03

Determinism envelope

The clocks, seeds, schedules, versions, and conditions that must be held still for the failure to return.

t0 = 02:59:59Z
seed 0x8f3a
deploy 4f2a1c
04

Oracle

The machine-checkable condition that proves the same failure occurred. Not a screenshot. Not a judgement call.

SELECT order → 0 rows
index 3 ∉ 0..2
loss = nan
03 / One model

The same four properties, whatever the system is.

01 / TRIGGER
02 / BOUNDARY
03 / ENVELOPE
04 / ORACLE
SEALS AS
BackendProduct example
POST /checkout
Database, payment service
Clock, request order, deployment
accepted order is missing
repro_8f3a2c91
UIProduct example
Gesture sequence
API and device state
OS, locale, application state
checkout crashes
repro_2d71b4e0
Game engineProduct example
Timed input stream
Assets, files, and saved state
Simulation tick, RNG seed, engine state
invariant failure at tick 4,281
repro_a19c6f34
ML systemProduct example
Training job and checkpoint
Dataset, model weights, and services
Seed, data order, runtime, and driver
loss becomes NaN
repro_5e08d7b2
04 / The closed loop

From an unexplained failure to a verified fix.

STEP 01
Capture

From production through an SDK, from a failing CI job, or from a run you point at.

STEP 02
Confirm

It is replayed against the same failure contract. If it does not happen again, it is not a repro.

STEP 03
Reduce

Irrelevant actions, inputs, and dependencies are removed until only the cause remains.

STEP 04
Seal

What is left becomes a stable bug ID you can paste into a PR.

STEP 05
Run

A developer, an agent, or CI runs the same failure on demand.

STEP 06
Verify

The fix is judged by the same artifact that proved the bug.

Before the change
repro_8f3a2c91
REPRODUCEDthe failure happened again
After the change
repro_8f3a2c91
FIXEDsame repro · same conditions · no failure

The same artifact defines the bug and the definition of done. Nothing about the fix is a matter of opinion.

05 / Permanence

A fix verified once becomes a constraint on all future code.

Guarantee ledger checkout-svc HEAD
0 guarantees held on this commit
A guarantee cannot be removed, only added to.
SEALED ONCE

The failure is captured with its trigger, boundary, envelope, and oracle. Reconstructing it again is never necessary.

CHECKED ON EVERY COMMIT

A held guarantee is quiet by design. The proof that it still holds is that the repro runs and still fails to reproduce.

PAID FOR ONCE

The class of defect becomes structurally impossible to ship again, not merely absent from today's build.

06 / Models and memory

Models cannot repeat a failure the ledger already holds.

The model produces
agent/rewrite-capture-flowtouches the commit path
agent/bump-pay-client-3.0changes retry behaviour
agent/tidy-order-serviceinlines two helpers
agent/speed-up-settlementreorders two writes
human/pr-2214adds an idempotency cache
EVERY COMMIT
The ledger answers
$ reproit verify --all
41 of 42 guarantees held
repro_c40d19f7 REPRODUCED
retry produced a second charge again
merge blocked by the ledger
[ agent revises the change ]
$ reproit verify --all
42 of 42 guarantees held · merge allowed
07 / Trust

Execution stays on your side of the line.

Code-blind cloud

Derived crash signatures, replay steps, and triage state. Never source code, simulators, or builds.

nothing to leak

Reproduction runs in your CI

Your runners check out your code and replay the failure. Only the verdict comes back.

repository_dispatch

PII-safe by construction

Structural fingerprints of inputs: length, charset, script. Never the values your users typed.

fingerprints, not values
08 / Cloud plans

The CLI is free. The cloud is where production failures land.

Free

$0

Run the fuzzing on your own machine and keep your repros, buckets, and evidence in one hosted place.

  • 1 developer seat
  • 1 app, 25k occurrences/mo
  • 5 GB evidence, 14-day retention
  • Unlimited local CLI + SDK fuzzing
Start free

Starter

$99 / month

Private managed service for small teams putting production bugs into Repro It.

  • 5 active developer seats
  • 3 apps, 250k occurrences/mo
  • 25 GB evidence, 30-day retention
Choose Starter

Team

$299 / month

For shipping teams debugging real production failures.

  • 10 active developer seats
  • 15 apps, 2M occurrences/mo
  • 100 GB evidence, 90-day retention
  • GitHub, Jira, Linear, Shortcut
Choose Team

Business

$999 / month

For larger orgs with more apps, seats, and retention.

  • 25 active developer seats
  • 75 apps, 15M occurrences/mo
  • 1 TB evidence, 180-day retention
  • SSO, SCIM, RBAC
Choose Business

Enterprise

Custom

For high-volume and regulated teams.

  • Custom contract and procurement
  • Custom seats, apps, volume, and retention
  • Dedicated tenant and runner options
Contact us

Stop describing the bug.
Reproduce it.

Get Repro It See how it works Apache-2.0 CLI · runs on your machines