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 …
# install (macOS, Linux; Windows, Homebrew, npm and more on the install page)
$ curl -fsSL https://raw.githubusercontent.com/openreadout/openreadout/main/scripts/install.sh | sh
# what is in it, is it intact, look at it, convert it
$ openreadout info cells.lif
$ openreadout check plate7/
$ openreadout preview cells.lif --composite
$ openreadout export cells.lif -o cells.ome.tiff
# wheels for Linux, macOS and Windows
$ pip install openreadout
>>> import openreadout
>>> with openreadout.File("cells.lif") as f:
... plane = f.read_plane(image=0, c=0, z=0) # a NumPy array
There is no packaged release yet. Install lists the other options.
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
--jsonand prints JSON with a published schema. - Exit codes
0ok,3unknown format,4corrupt,6unsupported 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
previewwrites a PNG the agent can look at, so it can see the image, trace or plate it is reasoning about.- Cheap metadata
inforeads headers only, so a 100 GB file costs the same as a small one.--onlyreturns 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
| Area | Formats | Export to |
|---|---|---|
| Light microscopy | Zeiss CZI, Nikon ND2, Leica LIF, Olympus OIR/VSI/OIB, Imaris, OME-TIFF and other TIFF variants, OME-Zarr, whole-slide images | OME-TIFF, OME-Zarr |
| High-content screening | Harmony (Opera Phenix, Operetta), ImageXpress, CellVoyager | OME-Zarr plate, OME-TIFF |
| Electron microscopy | MRC, Gatan DM3/DM4, FEI SER/EMI, Velox EMD | OME-TIFF, OME-Zarr |
| Mass spectrometry | Thermo RAW, Bruker timsTOF, Agilent MassHunter, Waters MassLynx, Sciex WIFF, mzML | mzML, Parquet, Arrow |
| Chromatography | Agilent ChemStation and OpenLab, Shimadzu, Chromeleon, AIA/ANDI | CSV, JCAMP-DX, Parquet |
| Electrophysiology | Axon ABF, Intan, SpikeGLX, Open Ephys, Neuralynx, Blackrock, Plexon, HEKA, Spike2, NWB | NWB, CSV, Parquet |
| NMR and spectroscopy | Bruker TopSpin and OPUS, Varian, JEOL, Thermo OMNIC, Renishaw, JCAMP-DX, SPC | JCAMP-DX, CSV |
| Flow cytometry | FCS, FlowJo workspaces, Gating-ML | CSV, Parquet, Arrow |
| Plate readers and qPCR | Plate-reader exports, RDML, Applied Biosystems, LightCycler, Rotor-Gene | Allotrope ASM, RDML, CSV |
| Other | ÄKTA, ITC, Biacore, Seahorse, Octet, Zetasizer, XRD, EPR, electrochemistry, thermal analysis | CSV, 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.