Lab Tracker captures the work your lab already does—with as little extra effort as possible—and preserves the reasoning behind it. Figures can register when you save them, analysis runs can carry their exact code version, and existing output folders can be watched for new evidence. When context exists only at the bench or in your head, add a one-line note or photo; a voice memo is an option, not a prerequisite.
Everything lands staged. AI proposes how it fits among your questions, data, claims, and figures; you simply tell it if it got anything wrong. Nothing enters the durable record until you approve it. The system takes on the filing without taking away the judgment, so next week's meeting and next year's report can begin with the scientific thread already assembled.
A file named 2025_12_10_Rig2_session001.nwb says when and where it was
collected. It rarely says why it exists, what you expected, or what you
learned. That reasoning lives on whiteboards, on paper towels, and in people's
heads—and walks out the door when they do. Lab Tracker gives it a queryable home
alongside projects, questions, sessions, datasets, analyses, claims, and
visualizations.
Read-only demo · Deploy to Render · Documentation · Run locally
Status: Lab Tracker is at
0.2.0and under active development. It is intended for evaluation and early research use; interfaces and deployment defaults may still change. The supported v1 surface is authoritative.
Author and time-window filters let an authorized assistant assemble what a person committed within a period: sessions, datasets, analyses, figures, claims, and notes. That can become the evidence packet for a progress report, grant renewal, trainee meeting, lab meeting, or committee update. You supply the window—Lab Tracker does not own the meeting calendar—and the assistant starts from your curated record instead of a blank page.
The result is only as complete as what the lab captured and committed. Lab Tracker does not invent missing experiments or evidence, and assistant-written prose remains a draft to verify against the underlying graph.
The core loop is deliberately small:
- Capture. Send a text note, photo, voice note, or photo-and-voice bundle
from the browser or a paired phone; at the bench, a kiosk scan station, NFC
session tags, a hands-free voice shortcut, and a voice debrief cut the taps
per capture. After a one-time setup, figures from IPython, Jupyter, plain
Python scripts, R, and MATLAB are captured as they are saved or displayed,
lt runand the pipeline adapters record analysis and Snakemake, Nextflow, Kedro, or DVC runs, and thelt watch,lt repo, andlt hpcadapters keep durable local outboxes for folder, repository, and Slurm evidence. Operators can add Slack, email, instrument-calendar, and data-store channels. Large source artifacts can remain in their original data store. The capture guide maps each way of working to its setup. - AI proposes. For an individual image note, the configured vision-capable model receives the image itself and can use visible text, handwriting, plots, and diagrams as context—there is no separate OCR-to-transcript step first. Scheduled batch drafts use the available text, voice transcripts, capture hints, links, and metadata. Both paths propose typed graph changes with rationale, confidence, and source references; neither creates canonical graph records.
- A person decides. The review assignee can edit, accept, or reject
individual operations, or ask the model to revise the draft. A project owner
commits the accepted operations. No AI-proposed graph change is committed
until a person accepts it, and non-interactive service or automation
principals cannot accept, bulk-accept, or commit — unless the project owner
turns on delegated curation, which lets the drafting pass (and agents with
a Curate graph token) apply a bounded class of proposals on their own,
each recorded as
auto_accepted. Acceptance provenance distinguishes individually selected operations from bulk and delegated acceptance. - Retrieve and export. Search the record, inspect the project graph, ask an MCP-capable assistant for bounded decision context, or export PROV-O / JSON-LD provenance and plaintext sidecars that can travel with the data.
Direct human work is intentionally different from AI output. A person with project contributor access can create and commit datasets, analyses, claims, and visualizations without a mandatory second-person approval step. The human gate protects the record from machine-authored changes; it is not a universal peer-review workflow.
Lab Tracker can begin in the middle of the science. Orient me to this project creates one attributed present-tense checkpoint from the current output, live questions, strongest recent context, and next move. It produces a small question map and copyable brief, then hands off to one real text, photo, or voice capture so routine tracking starts prospectively.
The checkpoint is visible to authorized project members and explicitly labels earlier historical coverage as selective. It is not a reconstructed-complete history or a claim of lab consensus. Exact manual question mappings remain direct human staged writes; optional AI alignment stays individually reviewed and owner-gated. See joining an ongoing project.
The daily review is the human half of the system: time set aside to return to the work, notice what changed, test the model's interpretation, connect results to the questions that made them worth collecting, and decide what remains uncertain. That reflection is scientific work in its own right—often the part bench work leaves too little room for—so Lab Tracker is built to support attention rather than rush it.
The proposal queue has an alternate Narrative view for reading the day as a connected account instead of a stack of operation cards. Numbered citations point to the exact proposed graph edits. Hover, focus, or click a citation to inspect its rationale and source evidence, accept or reject the edit, or leave a review note.
The existing Proposals view remains available beside it for operation-by-operation review, payload editing, and the same commit workflow. Switching views changes only how the draft is presented; it does not create, remove, or accept an edit.
Review proposals one at a time when they deserve close attention, or use bulk
acceptance for routine items. On a keyboard, j and k move between
proposals and a, r, and d accept, reject, or defer the focused one,
moving on to the next undecided proposal. Claim statements and other free-text
fields have their own editors, the commit message is optional (a dated
summary of what was kept is used when it is left blank), and a committed
review hands off to the next one waiting for you. Drafts started from a single
capture appear on the same Daily review page as the scheduled batches. The record preserves which review mode you used,
so bulk acceptance is never represented later as individual review. Proposal
preparation can run on a schedule; judgment cannot. Some reviews take minutes,
and some science deserves longer.
Captured notes stay staged and visible until they are incorporated or archived with a reason. If you skip a review, the captures wait for you and the coverage gap remains inspectable instead of silently making the record look complete.
Lab Tracker starts with the questions a project is trying to answer. Broad questions can branch into atomic experimental, method, control, and analysis questions, and a question may have more than one parent.
The schema enforces a few important links:
- A dataset must name one primary question; secondary question links are optional.
- An analysis must name its source dataset or datasets.
- A visualization must name its analysis.
- A claim marked
supportedmust cite a dataset or analysis as evidence.
Other useful links remain optional. Claims do not universally have to answer a question, visualizations do not universally have to name a related claim, and notes can target the most relevant retained entity. That distinction matters: Lab Tracker makes provenance explicit where it exists without pretending that every historical record arrived fully connected.
- Research context: projects and lab groups, role-based access, question graphs, notes, sessions, datasets, analyses, claims, visualizations, goals, and exploration records for decisions, dead ends, and pivots.
- Evidence capture: browser and paired-device capture with bench
shortcuts (kiosk scanning, NFC session tags, trusted share windows, photo
import, voice debriefs, a hands-free shortcut, and a desktop bookmarklet);
raw files and editable voice transcripts; figure capture from Python,
notebooks, scripts, R, and MATLAB;
lt run, pipeline, CI, and Slurm epilog capture; offline-first watch-folder, repository, and HPC adapters with instrument file headers; coding-agent session retrospectives; and opt-in server channels for Slack, email, instrument calendars, registered-store scans, and barcodes in photos. See the capture guide. - Linking without typing: proposed links for captures made during a session, from the same code as a commit, or sharing bytes; session suggestions; and day logs that group a busy bench day into one proposal.
- Human-gated drafting: note-scoped and batch graph drafts, scheduled or run-now drafting, accept/edit/reject review, and durable curation provenance.
- Ongoing-project onboarding: an attributed current-state checkpoint, individually reviewed question alignment, deterministic brief, and one separate forward capture without requiring historical backfill.
- Retrieval and portability: substring search, project graph views, permission-bounded assistant context, publication-readiness checks, provenance export, and hash-verified external artifact references.
Lab Tracker owns the question-and-provenance spine. It integrates with data stores, analysis repositories, experiment trackers, and ELNs rather than trying to replace them.
The shortest source install on macOS or Linux uses uv:
git clone https://github.com/SamuelBrudner/lab-tracker.git
cd lab-tracker
uv sync --frozen
source .venv/bin/activate
lab-tracker serveuv sync --frozen installs the exact dependency versions recorded in uv.lock.
lab-tracker serve applies migrations, snapshots a file-backed SQLite database
before migrating it, opens http://127.0.0.1:8000/app, and starts the server.
Windows instructions and development dependencies are in the
setup guide. Double-click macOS and Windows launchers live in
deploy/launchers/.
SQLite is the convenient single-client local default. Use Postgres, enable authentication, and establish backups for a shared or hosted lab instance; see deployment options and self-hosted operations.
For a no-terminal hosted start:
The graph and direct human workflows work without an AI provider. Graph drafting supports three server-side providers:
| Provider | Draft setting | Voice transcription |
|---|---|---|
| OpenAI | openai |
Yes |
| Anthropic (Claude) | anthropic or claude |
No |
| Google (Gemini) | google or gemini |
Yes |
Set LAB_TRACKER_GRAPH_DRAFT_PROVIDER and the matching server-held API key.
With a vision-capable model, each provider can draft directly from an individual
image note or figure as well as text. Scheduled batch drafts currently use
text, voice transcripts, capture hints, links, and metadata rather than image
bytes. For the configured models and recommendation review dates, run
lab-tracker models --json; see AI model maintenance.
Use lab-tracker maintenance run --config /absolute/path/inventory.json for
scheduled operator checks and review packets; see
supervised maintenance.
Voice transcription currently requires OpenAI or Google; Anthropic can
draft from a transcript created another way. The manual Transcribe action is
always available. Operators can opt into best-effort transcription after each
new audio upload with LAB_TRACKER_AUTO_TRANSCRIBE_VOICE_CAPTURES=true, but it
is disabled by default because raw audio and the capture hint leave the
instance, provider charges apply, and Lab Tracker does not yet enforce a
per-user rate limit or daily transcription budget.
Any MCP-capable coding agent can read the same permission-bounded context.
lab_tracker init scaffolds common client configurations, and the policy stays
the same across vendors: agents may suggest and stage when asked, but they do
not operate the human commit gate. Follow the
AI and agent setup guide for credentials, scheduling,
MCP, and verification.
- Start and deploy: local setup · deployment options · configuration
- Capture and integrate: start with the capture guide · phone capture · bench capture · photographed labels and file headers · watch folders · notebooks and scripts · R integration · MATLAB integration · command runs · pipelines and CI · HPC · repository commits · coding-agent sessions · server capture channels · session suggestions · provenance export
- Understand the model: vision · review and commit · supported v1 surface
- Operate AI drafting: agent setup · scheduled review
- Maintain and release: versioning and releases
- This repository does not currently declare an open-source license. Public source availability should not be read as permission to redistribute it.
- Standalone OCR-to-transcript workflows, semantic/vector search, default-on or unbudgeted public transcription, and a standing system-selected extraction inbox are outside the supported v1 surface. Opt-in audio transcription is intended for bounded, operator-controlled deployments; individual image-note drafting remains multimodal.
- Full research artifacts often remain outside Lab Tracker. External resolution is opt-in, read-only, bounded, and hash-checked; operators must configure the allowed roots or remotes.
- A shared deployment is an operated service: the lab remains responsible for provider approval, credentials, access policy, database backups, and durable file storage.