OpenReadout
Open sourceSingle binaryNo vendor softwareNo network access

Instrument files, readable by AI agents

OpenReadout is an open-source reader for lab-instrument files, designed for AI agents. It reads 96 formats from microscopes, mass spectrometers, cytometers, electrophysiology rigs and other instruments, without the vendor's software. Your agent gets metadata, images, traces, spectra and tables as JSON, and image previews it can understand.

# paste into your agent's chat: it reads the skill and installs the rest
$ curl -fsSL https://raw.githubusercontent.com/openreadout/openreadout/main/skills/openreadout/SKILL.md
# or, with openreadout installed, register it yourself
$ openreadout self skill --install all
$ openreadout mcp --install claude-desktop   # or claude, cursor, codex, vscode, gemini …

There is no packaged release yet. Install lists the other options.

Section of a whole mouse, stained, decoded from a Zeiss CZI slide scan
Zoomed view of the mouse section Closer view of the same region The same region at full resolution
A whole-mouse section from a 3.7 GB Zeiss slide scan: 190,309 × 69,378 pixels at 0.22 µm. OpenReadout reads about 2.5 MB of the file to draw the overview, and only the tiles it needs for each zoom. How it works.

What it does

Decoded from raw files

Each panel is drawn from what OpenReadout read out of a public sample file, with no vendor software and no conversion.

For AI agents

Connect OpenReadout to Claude, Cursor, Codex, VS Code, Gemini or another agent with the skill or the MCP server, then ask about your files in plain words. The tool output below is what OpenReadout returned for public sample files.

Stable JSON
Every command takes --json and prints JSON with a published schema.
Exit codes
0 ok, 3 unknown format, 4 corrupt, 6 unsupported feature. Agents branch on the code, not the message.
Errors with a hint
Each error says what to try next, so the agent can fix its own mistakes.
Previews
preview writes a PNG the agent can look at, so it can see the image, trace or plate it is reasoning about.
Cheap metadata
info reads headers only, so a 100 GB file costs the same as a small one. --only returns just the fields asked for.
Assurance
Each result says whether files like it were validated against an independent reader, so the agent knows when to double-check.

An agent asks for an image that does not exist.

$ openreadout preview cells.lif --image 3 --json
{
  "ok": false,
  "error": {
    "code": "usage",
    "message": "usage error: image 3 not found (file has 1 images)",
    "hint": "Indices are zero-based; `openreadout info FILE --json` lists the images, traces (sweep_count, sample_count), tables (row_count) and spectra the file holds.",
    "exit_code": 2
  }
}

The agent follows the hint, lists the images and picks the right index. Connect an assistant.

Formats

AreaFormatsExport to
Light microscopyZeiss CZI, Nikon ND2, Leica LIF, Olympus OIR/VSI/OIB, Imaris, OME-TIFF and other TIFF variants, OME-Zarr, whole-slide imagesOME-TIFF, OME-Zarr
High-content screeningHarmony (Opera Phenix, Operetta), ImageXpress, CellVoyagerOME-Zarr plate, OME-TIFF
Electron microscopyMRC, Gatan DM3/DM4, FEI SER/EMI, Velox EMDOME-TIFF, OME-Zarr
Mass spectrometryThermo RAW, Bruker timsTOF, Agilent MassHunter, Waters MassLynx, Sciex WIFF, mzMLmzML, Parquet, Arrow
ChromatographyAgilent ChemStation and OpenLab, Shimadzu, Chromeleon, AIA/ANDICSV, JCAMP-DX, Parquet
ElectrophysiologyAxon ABF, Intan, SpikeGLX, Open Ephys, Neuralynx, Blackrock, Plexon, HEKA, Spike2, NWBNWB, CSV, Parquet
NMR and spectroscopyBruker TopSpin and OPUS, Varian, JEOL, Thermo OMNIC, Renishaw, JCAMP-DX, SPCJCAMP-DX, CSV
Flow cytometryFCS, FlowJo workspaces, Gating-MLCSV, Parquet, Arrow
Plate readers and qPCRPlate-reader exports, RDML, Applied Biosystems, LightCycler, Rotor-GeneAllotrope ASM, RDML, CSV
OtherÄKTA, ITC, Biacore, Seahorse, Octet, Zetasizer, XRD, EPR, electrochemistry, thermal analysisCSV, Parquet

All 96 formats, with what each reader covers and its known gaps.

Tested against real files

Readers are tested on about 1,500 public instrument files and compared with independent libraries such as czifile, nd2, Bio-Formats, FlowIO and pyABF. Pixel data must match exactly. Validation.

Your files are read-only

OpenReadout doesn't modify your files. Exports go to a new file, which is read back and compared with the original before it gets its final name.

It works offline

OpenReadout doesn't connect to the internet, so your data stays on your computer. Readers are written from public files and permissively licensed documentation, under a clean-room policy.

Where to go next

About the files. The images and examples use public files: Zenodo records, OME sample data and the test data of open-source projects such as pyABF and FlowKit, used under their licences. The damaged-folder example was made by cutting a real file short.