1
Install Conseqa
Conseqa builds from source with the standard Rust toolchain. You need a recent stable Rust release; no other runtime dependencies are required.Clone the repository and build both binaries in release mode:This produces two binaries:Confirm both tools are reachable:
target/release/conseqa— the validator and verifiertarget/release/conseqa-viz— the visualization tool
PATH:The
conseqa-viz front end is a pre-built React bundle embedded in the binary at compile time. You do not need Node.js to run it — only to rebuild the front end itself after modifying viz/.2
Write a minimal model
Create a file called
model.yaml. The model below declares a single backend service, a canonical schema for a completed upload, and a keyed topic that carries it. It has no operations or requirements yet, so there is nothing to verify — but it is a valid, parseable starting point.3
Run the verifier
Pass your model to With no operations declared, there are no requirements to discharge:Now try the fuller example from the repository’s test fixtures, which models a complete video streaming pipeline with four services and every obligation proven:For a model with deliberate gaps, run the flash checkout fixture. The checker reports each gap honestly:To save the full obligation report as JSON for later use or visualization:The JSON report follows the
conseqa:unknown is epistemic — it means the verifier could not establish the property from the declared facts. It is not evidence of a violation. The flash checkout model deliberately leaves tx.reserve_inventory without keyed-commit deduplication, which is why its idempotency and recoverability obligations are unknown.ProverReport format (format: 2). Each obligation object carries an id, property, subject, status, summary, assumptions, and evidence array.4
Generate a visualization
Run You can also overlay a report you produced earlier:Other useful options:
conseqa-viz with --verify to produce and overlay the obligation report in one step:5
Open the HTML output
Open the generated file in any browser. The visualization makes no external network requests and works directly from disk:The visualization has three main views:
When a report is loaded, every vertex gains a status ring and a rollup chip (worst status wins:
System view (#/system)
System view (#/system)
Services are drawn as boundary boxes with their operations inside. Topics, external systems, and a synthetic “clients” vertex sit around them. Edges are the model’s information routes: publications, subscriptions, request effects, and external effects. Solid edges carry program step details; dashed edges are declared but unexecuted capabilities. Click any vertex or edge for a structured detail panel.
Operation view (#/op/<id>)
Operation view (#/op/<id>)
Shows a page header with the operation’s facts, then its declared requirements (with obligation status when a report is loaded), its inputs, and a full program diagram — every step in order, transactions expanded in place, match/branch arms side by side, and step locations labeled as the checker names them (
3, 3.ok.1).State machine view (#/machine/<id>)
State machine view (#/machine/<id>)
Displays the state graph with legal states, the initial state, and transitions annotated with side effects. A transitions table shows from/to sets and the operations that execute each transition through an intent.
disproven > unknown > proven). The obligations panel groups obligations by the operation they anchor to, with a status filter and expandable evidence cards.Next steps
Core Concepts
Learn how operations, requirements, and the proof mechanics fit together.
CLI Reference
Full reference for every flag on
conseqa and conseqa-viz.