Skip to main content

Lab notebook for computational science: Python tools produce per-run artifacts; Typst publishes them as a web bundle, per-entry PDFs, and a book.

Project description

Demolab

A lab notebook for computational science — reproducible results, published and citable, run by a coding agent instead of a build system.

Coding agent setting someone up? Run uvx demolab-cli docs GETTING-STARTED, read the file it prints, and follow it strictly, step by step. (Human, setting up by hand? See Quickstart.)

You write a model or experiment once as a small program. Demolab runs it, captures everything it produced, stamps it with the exact code version, and publishes a clean page — figures, numbers, and real typeset maths — to both the web and PDF. The numbers on the page are read from the run, so they can't drift. You drive it all by talking to a coding agent; there's no web development or build config to touch.

Quickstart

Open your coding agent in an empty folder and paste:

Run uvx demolab-cli init here, then follow its GETTING-STARTED runbook strictly.

It lays your lab down, walks you through the toolchain (uv, typst) and your first experiment, one step at a time.

Set it up by hand instead?

Install uv and typst (brew install uv typst), then:

mkdir my-lab && cd my-lab
uvx demolab-cli init   # lab structure + git init — yours from the first commit
uv sync                # installs the deps and the `demolab` command

Then demolab add-demo-content && demolab run exp000 && demolab dev to see the loop. demolab clear-demo-content wipes the demo again. The engine lives in the demolab-cli package — updating it is uv lock --upgrade-package demolab-cli && uv sync.

What to ask your agent

Open your lab in your agent and say a runbook's name — it follows that runbook one step at a time. demolab docs lists them all (each is a plain file shipped in the package; demolab docs <NAME> prints its path). In this repo they live under demolab_cli/runbooks/.

Say… …and it will
GETTING-STARTED set you up end to end: scaffold, your first experiment live on a page, brand, publish
TOUR guided walkthrough of the lab — what's here, what it found, where to start
MIGRATE-CODE bring an existing codebase in, one experiment at a time
FROM-JUPYTER launder a Jupyter notebook into a reproducible, seeded experiment
FROM-PAPER scaffold experiments to reproduce a paper's key result in your stack
MIGRATE-STACK write your tools in MATLAB / Julia / R / Octave instead of Python
EMBED-DOCS drop demolab into another project as a docs/ site
NEXT read your whole arc and propose the next experiments worth running
GROUND-CLAIMS find the source sentences behind each citation
LINT check your writeups against the house style
DOCTOR audit the repo against the conventions
RED-TEAM adversarially check a result holds up before you publish it
STEELMAN build the strongest honest case for a result, so you don't under-sell it
UPDATE update the engine package, leaving your content untouched

How it works

One decoupled loop: a tool computes → drops data → an experiment writes it up → the site publishes it. Every run records its exact parameters and the git commit it came from (stamped on the page), and tables read their numbers straight from the run — so prose and results can't disagree. A single Typst pass emits a website, a PDF per entry, and a book, all sharing the same live numbers.

The detail lives in the guides (in a lab: demolab docs <NAME>; in this repo, the files under demolab_cli/guides/):

  • RULES.md — the tool ↔ experiment contract, schemas, provenance, and how to add things.
  • STRUCTURE.md — the annotated file tree.
  • HOUSESTYLE.md — prose, maths, and figure style.
  • AGENTS.md — the agent entry point.

Commands

demolab shows them all. The everyday ones: init, docs, install, scaffold · add-demo-content · clear-demo-content, run expNNN, dev, build, test.

License

MIT — free to use, fork, and adapt for your own lab.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

demolab_cli-1.1.5.tar.gz (3.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

demolab_cli-1.1.5-py3-none-any.whl (3.4 MB view details)

Uploaded Python 3

File details

Details for the file demolab_cli-1.1.5.tar.gz.

File metadata

  • Download URL: demolab_cli-1.1.5.tar.gz
  • Upload date:
  • Size: 3.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for demolab_cli-1.1.5.tar.gz
Algorithm Hash digest
SHA256 dc0f8f556456991dcf8a4fd3924bb3eea2c8fbe434546ade0e985701abf86feb
MD5 84dde2529e3964a7f26a6c66e90f8963
BLAKE2b-256 752002c789b1ba2b6ccd9d88fabba27cab101a141ed1ca71e564f08cd1e2c9cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for demolab_cli-1.1.5.tar.gz:

Publisher: publish.yml on eoinmurray/demolab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file demolab_cli-1.1.5-py3-none-any.whl.

File metadata

  • Download URL: demolab_cli-1.1.5-py3-none-any.whl
  • Upload date:
  • Size: 3.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for demolab_cli-1.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 a8e8f022fff7c0cd24821c0afccee51a4605199889cebe2a5e73a9e3071c275b
MD5 3345f08a9842b3db4ac27dc2f4ef4412
BLAKE2b-256 8479e5adfe91ac8d2042088ac6774898ddd9a3d45f2196ba4a5ef021eedbe704

See more details on using hashes here.

Provenance

The following attestation bundles were made for demolab_cli-1.1.5-py3-none-any.whl:

Publisher: publish.yml on eoinmurray/demolab

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page