EEG, MEG, and MRI — processed on your own machine.

Neuro Lab is a local-first neuroimaging workbench: a Tauri desktop app backed by a Rust workspace of processing crates. Recordings never leave your machine — no server, no cloud, no accounts.

3
modalities
10+
input formats
0
network calls
eeg-pipeline.json
{
  "nodes": [
    { "type": "bandpass", "params": { "l_freq_hz": 1, "h_freq_hz": 40 } },
    { "type": "ica", "params": { "topographies": true } },
    { "type": "epoch", "params": { "tmin_s": -0.2, "tmax_s": 0.5 } }
  ]
}

One workspace for three modalities

EEG, MEG, and MRI datasets live side by side in a single local workspace with projects, experiments, and full provenance.

EEG pipelines

BrainVision, EDF+, and NPY input. Filtering, re-referencing, baseline correction, event-locked epoching, FastICA with topographies, and SSP.

MEG pipelines

FIF, CTF, KIT, BIDS, and OPM input. Compensation grades, FIF projectors, synthetic gradiometers, ICA, SSP, epoching and evoked responses — plus a low-order SSS approximation.

MRI pipelines

NIfTI and DICOM volumes with multiplanar slices, MIP, statistics, bias-field correction, heuristic skull stripping, and rigid/affine registration.

Reproducible pipelines

Pipelines are plain JSON node lists — filter, rereference, ICA, SSP, epoch, register — saved as named presets. Every run records its parameters and produces a manifest.

Interoperable exports

NPY, CSV, and EDF for signals; FIF output validated against MNE; BIDS datasets; NIfTI volumes; DICOM converted to NIfTI with spatial metadata preserved.

Versioned, resumable storage

Chunked uploads with SHA-256 integrity verification, dataset versions, experiment records, and artifact provenance — all in a local workspace database.

Pipelines as data

No hidden steps — a pipeline is a JSON list of nodes you can read, save, and share. These are the same definitions the app runs.

eeg-pipeline.json
{
  "nodes": [
    { "type": "bandpass", "params": { "l_freq_hz": 1, "h_freq_hz": 40 } },
    { "type": "ica", "params": { "topographies": true } },
    { "type": "ica_remove", "params": { "components": [0, 3] } },
    { "type": "epoch", "params": { "tmin_s": -0.2, "tmax_s": 0.5 } }
  ]
}
meg-pipeline.json
{
  "nodes": [
    { "type": "bandpass", "params": { "l_freq_hz": 1, "h_freq_hz": 40 } },
    { "type": "sss", "params": { "l_in": 4, "l_out": 2 } },
    { "type": "evoked", "params": {} }
  ]
}
Workspace layout
$ ls crates
neuro-core   shared numerics, ICA
neuro-eeg    EEG readers + pipelines
neuro-meg    MEG readers + pipelines
neuro-mri    MRI volumes + DICOM
neuro-store  workspace persistence

How it works

From raw recording to published-format export in three steps.

01

Import

Point the app at a recording. Neuro Lab resolves companion files — channel manifests, event markers, digitization points — and validates the file set before analysis.

recording.eeg + .vhdr + .vmrk
02

Compose

Chain pipeline nodes in the UI or paste JSON directly. Filter, reject artifacts, epoch, register — save the chain as a preset and rerun it on any compatible dataset.

pipeline.json → named preset
03

Inspect and export

Browse signal windows, spectra, epochs, ICA components, and MRI slices. Export to NPY, CSV, EDF, FIF, BIDS, or NIfTI — every artifact carries its provenance record.

md/ → artifacts/ with manifest

Build from source

Requires Node.js + pnpm and Rust. Everything compiles locally — there is no backend service to deploy.

Install and run
$ git clone https://github.com/hieudoanm/neuro.lab
$ cd neuro.lab
$ pnpm install
$ pnpm tauri:dev     # desktop app in dev mode
$ pnpm tauri:build   # release bundles
$ cargo test --workspace   # 24 test suites

See the README for prerequisites and crate details.