Native accelerator (pieeg-core)
pieeg-server ships with a pure-Python reference implementation for every
DSP hot path (24-bit ADC decode, Butterworth bandpass, Hampel spike
rejection). Installing the optional pieeg-core (opens in a new tab)
Rust accelerator transparently swaps those hot paths for compiled
equivalents (~15–1000× faster) — no config, no code changes.
Install
pip install 'pieeg-server[fast]'That's it. The native engine is picked up automatically at startup. If the
wheel is missing or fails to import, pieeg-server falls back to the
Python implementation — nothing breaks.
Verify which engine is active
The active engine is announced at three places:
- Server startup logs — look for the
DSP engineline. - WebSocket
connectedmessage —enginefield:{ "engine": { "native": true, "engine": "pieeg-core", "version": "..." } } pieeg-server doctor— prints a dedicated DSP Engine section.
Benchmark
Run the bundled script to compare the two engines on your hardware:
python -m scripts.bench_native --seconds 5Sample results (Windows, 5 s @ 250 Hz × 16 ch):
| Hot path | Python | pieeg-core | Speedup |
|---|---|---|---|
MultichannelFilter (bandpass 1–40 Hz) | 992 samples/s | 1,048,658 samples/s | ~1057× |
HampelFilter (spike removal) | 24,619 samples/s | 358,361 samples/s | ~15× |
decode_channels (24-bit SPI → µV) | 121,352 samples/s | 1,134,301 samples/s | ~9× |
Real-time streaming at 250 Hz × 16 ch requires 4,000 samples/s — the
pure-Python MultichannelFilter is below that threshold, so installing
pieeg-core is effectively required when server-side filtering is
enabled on 16-channel rigs.
Licensing
pieeg-core is licensed AGPL-3.0-or-later; installing it is strictly
opt-in so the default MIT-licensed pieeg-server install stays
license-clean. If your deployment must remain MIT-only, keep the base
install and rely on the Python implementation (sufficient for 8-channel
rigs or when server-side filtering is disabled).