Skip to main content
Michael P. Goodman

Project · Research and development In development

OpenBCI: a local-first data pipeline for brain-computer interfaces

An ongoing research and development project by Michael P. Goodman that pairs OpenBCI Cyton and Galea hardware with Python and a ChromaDB vector store, to capture EEG data, organize it, and make it searchable on hardware he controls.

By Michael P. Goodman · Last reviewed

Hardware
OpenBCI Cyton and Galea
Language
Python
Storage
ChromaDB vector database
Status
Exploratory R&D

Scope and safety

This is an exploratory engineering and research project. It is not a medical device, makes no diagnostic or therapeutic claims, and does not provide medical advice.

OpenBCI overview

Brain-computer interface data is a hard data-engineering problem long before it is a modeling problem: continuous multi-channel signals, tight timing, noisy inputs and a lot of recordings to organize. This project builds the plumbing first.

It is also an unusually sensitive kind of data. That makes it a natural fit for the way I build everything else: keep the data on local storage, keep the pipeline auditable, and avoid sending raw recordings to a third-party service.

  • Acquire. Stream samples from OpenBCI hardware into Python.
  • Prepare. Buffer, timestamp and clean the signal, and cut it into labeled windows.
  • Represent. Turn each window into features or embeddings.
  • Store and search. Persist vectors and session metadata in ChromaDB so recordings can be queried and compared.

OpenBCI screenshots

Screenshots of the signal viewer and pipeline output will be added here.

Screenshots are being added

Annotated screenshots of this project will appear here. The architecture diagram below and the linked live or source pages show the current state in the meantime.

OpenBCI architecture

The pipeline has four stages. Everything runs on a machine I own.

OpenBCI data pipeline architectureOpenBCI Cyton or Galea hardware streams EEG samples into a Python acquisition process. A preparation stage buffers, timestamps and windows the signal. A representation stage converts windows into features or embeddings, which are stored with session metadata in a local ChromaDB vector database for search and comparison.LOCAL-FIRST: recordings and embeddings stay on hardware under my controlOpenBCI hardwareCyton / GaleaPython capturestream + timestampPreparefilter + windowChromaDBvectors + metadataRepresentfeatures / embeddings
OpenBCI data pipeline: acquire, prepare, represent, store and search, all on local hardware.

OpenBCI outcomes

Current state of the work. Measured results will be added as experiments are completed and documented.

End-to-end pipeline design

A defined path from headset to searchable vector store, with clear boundaries between stages.

Local-first handling of neural data

Recordings and embeddings are designed to stay on local storage, not in a third-party cloud service.

Reusable data-engineering pattern

The acquire, prepare, represent and store pattern carries over to any streaming-sensor project.

Technologies used in OpenBCI

The tools involved in the pipeline.

Hardware

  • OpenBCI Cyton
  • OpenBCI Galea

Software

  • Python
  • ChromaDB
  • Signal filtering and windowing
  • Feature or embedding extraction

Infrastructure

  • Local workstation
  • Local-only storage

OpenBCI FAQ

What is OpenBCI?

OpenBCI is an open-source brain-computer interface hardware and software ecosystem. This project uses its Cyton and Galea hardware.

Is this a medical or clinical project?

No. It is exploratory engineering and research. It makes no diagnostic or therapeutic claims.

Why use a vector database for EEG data?

ChromaDB stores embeddings with metadata, which allows similarity search across recordings in addition to ordinary session lookups.

Building a sensor or data pipeline?

Streaming data, careful storage and an auditable path from raw signal to answer are the same problems at any scale.