SODL

Get started

One minute to your first proof.

Against your own repository — not a demo project. SODL’s claim is that it derives a model from your contract, so a curated showcase is precisely the artifact that cannot demonstrate it.

No account. No token. No sign-up. The first three commands need no running service at all.

Step one

Install

The script detects your platform, verifies the download against SHA256SUMS, installs into a user directory — no admin rights — and prints the PATH line to add if one is missing.

macOS / Linux
$ curl -fsSL https://github.com/rajsinghsisodia/sodl-releases/releases/latest/download/install.sh | sh
Windows — PowerShell
> irm https://github.com/rajsinghsisodia/sodl-releases/releases/latest/download/install.ps1 | iex
confirm
$ sodl version

Prefer to do it by hand?

Every release ships per-platform zips and a SHA256SUMS covering all of them. Download, check the sum yourself, put the binary on your PATH.

All releases →

The VS Code extension

A .vsix ships with each release. Sideload it: code --install-extension sodl-vscode-<version>.vsix, then reload the window. Completion, hover, go-to-definition, signature help and live diagnostics.

Windows may block the binary

This is an unsigned internal build, so SmartScreen — or Smart App Control, which offers no “run anyway” — may stop it. Signing is planned before SODL ships wider. install.adoc in the zip has the full, honest story.

Step two onward

Four commands, in your repository

Open the repository that holds your .proto files or your OpenAPI document. That is all the setup there is.

1

Set up the project

Writes a minimal sodl.yaml, an environments/local.yaml, and a starter scenarios/first.sodl. It refuses if sodl.yaml already exists — never a silent clobber. Run sodl init -probe first if you want to see what SODL found without writing anything.

no service needed
$ sodl init -yes
2

See what SODL understood — and what it could not

Still no running service, no credentials, no deployment. This is SODL’s unconditional half: give it your contracts and it shows you your system — entities, lifecycles, relationships, state machines — with the things you did not know surfaced as findings.

still no service needed
$ sodl analyze
$ sodl model -open    # your system, drawn

People routinely learn something here. A declared lifecycle state nothing can reach. An entity with no lifecycle at all. Two operations nothing in the contract lets anyone read back.

3

Tell the environment where your service lives

Everything a run needs to reach your service lives in the environment file, not on the command line. context: is how header-scoped things like tenancy work with no flags — every key is attached to every request. Non-secret values only.

environments/local.yaml
name: local
endpoint:
  grpc: localhost:9090        # or http: https://api.local
context:
  X-Tenant-Id: your-tenant    # optional
principals:
  admin:                      # only when a scenario says `as admin`
    provider: header
4

Prove it, then share the evidence

sodl run takes no arguments inside a project — scenarios/ is the default. It walks the tree, runs every scenario, and writes an immutable record. sodl report -open renders the latest record as one self-contained page.

against your running service
$ sodl run
$ sodl report -open

While authoring, sodl check is the faster loop — same derivation, same runner, read back as one verdict with remediation. It writes no evidence record: running is the evidence-producing act.

The fastest path

Hand it to an AI agent

SODL ships an ADOPT.md bootstrap prompt and an MCP server. Paste the prompt into an MCP-capable coding agent inside your service’s repository and it will install SODL, register the server, analyse your contracts, and offer you the choice: understand the system first, or verify a running deployment.

The prompt sets one rule the agent must follow: every claim it makes has to trace to SODL output. Which is the same rule the product holds itself to.

ADOPT.md →  ·  What a first session looks like →

What comes back, roughly

  • Your system, drawn from your protos — nothing else
  • A short list of things you may not know about it
  • A starter suite authored from the coverage queue
  • sodl check green before anything runs
  • A run, an evidence record, and a report page

Failures at this stage are usually findings, not test bugs — and the record shows the evidence for both readings.

Reference

What is in a release

AssetWhat it is
sodl-<version>-<platform>.zip The sodl binary, plus install.adoc and quickstart.adoc. Platforms: linux-amd64, darwin-amd64, darwin-arm64, windows-amd64.
sodl-vscode-<version>.vsix The VS Code extension.
install.sh, install.ps1 The installers the one-liners above invoke.
SHA256SUMS Checksums for every archive in the release.
VERSION The version string on its own, for scripting.
README, INSTALL, ADOPT, sample-session Attached so a downloaded kit is self-contained.

One binary does everything. check, run, coverage, bundle, drift, report, can-deploy, the language server the editor spawns — all of it is sodl. sodl --help lists every command; sodl <command> -h prints its flags and exit codes.

Before you invest a day in it

Read the boundaries. SODL is pre-V1, it is not for UI, load or unit testing, and there are things it deliberately does not do yet. All of it is written down.