Sam Holt
autolab is an autonomous lab framework with provenance as its foundation.
Core trick
After each simulation result, the planner picks continue, branch, replan, retry, or stop, and every step is written to an append-only hashed ledger.
Description
autolab is an autonomous lab framework with provenance as its foundation. Claude plans and reacts, typed resources execute scientific operations, and every step is written to an append-only hashed ledger.
The demo optimizes micromagnetic sensor designs using real physics simulations, comparing Claude as Planner against Optuna TPE on the same workflow, budget, and resource. The key feature is react(): after each result, Claude can continue, branch, replan, retry, ask a human, or stop based on the latest evidence and figures.
README excerpt
# autolab **An autonomous lab with provenance as its foundation.** autolab is a closed-loop, resource-aware framework for autonomous science. A long-running Lab service orchestrates experimental and computational workflows. An agent (Claude Opus 4.7) proposes and reacts. A typed pool of Resources executes. **Every step — including the agent's reasoning, every failed attempt, and every interim figure — lands as an append-only hashed Record on the Ledger.** Adaptive mid-workflow replanning, live scheduler visualisation, and first-class provenance are the foundation, not afterthoughts. The framework scope is experimental + computational science. The shipped demo runs computationally — micromagnetic sensor design end-to-end, head-to-head between Claude as Planner and Optuna TPE. Same workflow, same resource, same budget; you watch the ledger fill in real time. > **Apache-2.0** · public from commit one · alpha. Test suite passes. CI runs lint + tests + frontend build on every push. --- ## Why this is different Four axes of differentiation, called out explicitly because the same words mean different things in adjacent tools: 1. **`react()` — adaptive mid-experiment replanning.** A Planner proposes, the Lab executes one Operation, and the policy reads the *just-finished* Record (its outputs, its rendered figure, the trend so far) and chooses one of nine structured Actions: `continue`, `add_step`, `retry_step`, `replan`, `branch`, `accept`, `escalate`, `ask_human`, or `stop`.