Open-source electronic lab notebook

A lab notebook that stays on your own machines.

Experiments, protocols, runs, workflows and analyses, kept as plain files your lab owns. Every save is kept, records can be signed and witnessed, and the whole lab can share one notebook from a server you run.

Free for macOS, Windows and Linux.

Prem reads and writes plain markdown files in a vault folder you own, with every save kept in a hash-chained history. Python and other apps write to the same files. An optional lab server shares one vault with roles and per-folder permissions.

Your data stays with the lab

Notebooks are folders of markdown and attachments, on your computer or a server you run. No account with us, no cloud, and nothing locked into a format only Prem can read.

Built for the bench

Protocols with checkable steps, runs that record when each step was done, workflows that hand jobs from person to person, and samples with IDs.

Records you can stand behind

Every save is kept in a tamper-evident history. Sign an entry to lock it, have a colleague witness it, and change it later only through an amendment with a reason.

Analysis in the record

Run Python in an entry, or write to it from your scripts and Jupyter. Every result says which code, data and packages made it, and can be rerun to check.

How a record moves through Prem

A workflow starts jobs, and each stage of a job starts a run of a protocol. Finishing the run finishes the stage and hands the job to the next person. Runs and jobs are signed, witnessed and exported to PDF. Analyses land in the same entries, and every change is kept.

Three lanes. Process: workflow, new job, job stage, complete stage, job done, my tasks. Record: protocol, start run, run, complete run, sign and witness, amend, PDF export. Analysis: scripts and Jupyter through the prem package, and Python cells with their outputs and Reproduce, all kept in the history.

Workflows, jobs and the board

Write a lab process once as a workflow: its stages, the protocol for each, and who does it. Every job of it shows on the board. Drag a card to the next column to complete a stage and hand the job on, or back to redo a stage with a reason. My tasks shows what's waiting on you.

On a team server, only a job's assignee or the PI moves it on.

The board for the Plasmid prep workflow: columns Grow culture, Miniprep, Sequence check and Done, with job cards, a card being dragged to the next stage, and a My tasks button showing 2.

Sign, witness, amend

Every save of an entry is kept, and each one includes the hash of the one before. Sign an entry to lock it, have a colleague witness it, and change it later only through an amendment with a reason. Alter anything in the past and Prem shows that the history no longer checks out.

Signatures are recorded attestations, not cryptographic signatures yet. Prem is not certified for 21 CFR Part 11.

One note's history: two saves, then signed by alice, witnessed by bob, and amended with a reason. Each entry shows its hash and the hash of the entry before.

Analysis you can rerun

Put a python {run} cell in an entry. Its output is saved under it with the code version, the files it read and the exact packages it ran with. If the data changes, the output is flagged. Reproduce rebuilds the environment, reruns the cells and says what still matches.

From scripts and Jupyter, the prem Python package attaches figures and records results into the same entries.

A Python cell in a note, its saved output with code, Python, environment and input-file fingerprints, the saved environment list, and Reproduce comparing a rerun: same or different.

Where Prem is going

Now: pilot

Protocols and runs, workflows with a board, signing and history, Python cells you can reproduce, the prem package, PDF export and a lab server you run.

Next: samples and instruments

A sample registry with freezer maps, plate layouts, reagent lots and equipment, Open in Jupyter, and instrument folders that file new data where it belongs.

Later: stronger records

Per-person signing keys, scheduled pipelines on the lab server, and signed installers with auto-update.

Follow along or help shape it on GitHub Discussions.