Epicurrents is an open-source, browser-based viewer for neurophysiological signal data — EEG, EMG, NCS, and adjacent modalities such as DICOM imaging, PDF reports, and tabular metadata. It is written in TypeScript and runs entirely in the browser, with no proprietary plugins or desktop software required. The goal is to give clinicians, researchers, and technicians a fast, modern review environment that handles real-world recording sizes without compromising on responsiveness or analytical depth.
The viewer is built around a small core runtime (@epicurrents/core) and a constellation of pluggable packages. Readers (EDF/BDF, DICOM, WAV, PDF, HTM, REST API) translate file formats into a common signal abstraction; modules (EEG, EMG, NCS, document, tabular) add modality-specific UI, montages, and analysis tools; and services (Pyodide for in-browser Python, ONNX for ML inference) bring heavy computation directly into the browser. Every modality registers itself through the same lifecycle, so adding support for a new file format or signal type is an additive operation rather than a fork.
Performance is treated as a first-class concern. Signal data is decoded in dedicated Web Workers, kept in SharedArrayBuffer memory under a custom mutex when cross-origin isolation is available, and rendered through a hand-tuned WebGL line renderer that draws thousands of samples per channel at interactive frame rates. Filtering, montage derivation, and trend computation (e.g. amplitude-integrated EEG) all run off the main thread, so scrolling and re-montaging stay smooth even on long, high-channel-count recordings. Where browser-native math is not enough, Pyodide hosts a NumPy/SciPy/MNE pipeline for spectral analysis, topographic mapping, and source localisation — again, entirely client-side.
Beyond raw display, the viewer ships a complete annotation workflow (events, labels, interruptions, channel rejections with full audit semantics), a configurable layout with navigator strips and trend bands, multiple montage systems with standard 10-20 / 10-10 setups bundled in, structured reporting forms, and a Vue 3 interface that can be embedded as a library or run as a standalone application. A plugin contract on the embedding side lets deployments inject custom setups, montages, hotkeys, and lifecycle hooks without modifying viewer source.
The viewer is the centrepiece of the broader Epicurrents platform — a self-hostable Django + Vue stack adding recording storage, fine-grained access control, audit trails, server-side computation, and optional federation between instances. The viewer itself, however, is fully usable on its own: open a local EDF file in a browser and everything described above works without any backend at all.