factcircuit
FactCircuit: an auditable claim-and-evidence verification loop with immutable provenance, staged checks, bounded retrieval, and reproducible evaluation.
Lab Tracker preserves experiment reasoning, notes, datasets, analyses, claims, and visualizations for wet-lab research.
DataPython · JavaScriptGitHub @SamuelBrudnerOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
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.Read the full README ↗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:
lt run and the pipeline adapters record analysis and Snakemake, Nextflow,
Kedro, or DVC runs, and the lt watch, lt repo, and lt hpc adapters
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.auto_accepted. Acceptance provenance distinguishes
individually selected operations from bulk and delegated acceptance.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:
supported must 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.
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.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 serve
uv 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.