version control for simulation runs

sillon.

Every run leaves a wake. Log it, version it, and pull it back later. A toolchain to track, store, and analyze the data your simulations leave behind.

$ pip install sillon
01
Three surfaces, one trail

Log a run from your sim with sillonpy, query the history with sillonlab, or reach for the sillon CLI.

logging a runpython
import sillonpy as sp
import numpy as np

# start a run — params, results, figures & source are tracked
sp.init(run_name="my_fit", project_name="lattice-mbl")
sp.add_tag("quasicrystal")

x = np.linspace(0, 10, 100)
sp.log_param("grid", 512)
sp.log_result("coef", np.polyfit(x, evolve(x), 1))  # arrays → HDF5
# ↳ run my_fit sealed on exit · coef stored in the glob
in action
log.gifdrop a recording of a run being logged
retrieving & analyzingpython
import sillonlab as sl

# load the project store and query its history
project = sl.load_project()
runs = project.query(tags="quasicrystal",
                     results={"coef": lambda v: v[0] < 0})

df = runs.to_dataframe(results=True)  # tidy DataFrame
coef = project.get("my_fit").load_result("coef")  # arrays back
# ↳ 14 runs matched · cheap filters first, globs only on survivors
in action
analyze.gifdrop a recording of a query + plot
command linebash
# inspect the trail without opening python
$ sillon context              # overview of all runs
$ sillon show my_fit -p -r    # full run detail
$ sillon compare my_fit my_fit_2   # diff two runs
$ sillon grab my_fit -r coef  # pull a result to disk
Run name   Timestamp             Params   Status
my_fit     2026-06-01 10:00:00   2        SUCCESS
my_fit_2   2026-06-02 14:20:00   2        SUCCESS
in action
cli.gifdrop a terminal recording (asciinema → gif works well)
02
What sillon gives you
sillonpy

Capture

Drop a couple of lines into a sim and every param, result, figure, and the source itself is recorded. The run seals automatically when it finishes.

sillonlab

Retrieve

Query runs by params, metadata, tags, date, or result values, diff configs, and pull arrays straight back into memory. Your history is addressable.

$ sillon

Inspect

A CLI for the trail — search, show, compare, grab, report, and prune runs from the terminal without writing a line of glue code.

Read the docs

Full guides, API reference, and the data model — built with MkDocs.

Documentation →