- Receiver 1 (reference)
- Receiver 2
- Receiver 3
- Receiver 4
phase
phase · aligned
phase over time
aligned
- Nodes
- 4
- Rate
- 500 Hz
- Frames
- 89
- Node align
- pseudo-sync
The beta is open — for researchers and for product teams.
Tell us what you're sensing, what hardware you have, and how much data you expect to collect. We onboard by use case, and we're still shaping the platform around what the first cohort actually needs.
The pipeline
Five stages. One system.
Today each stage is a different repo, a different notebook and a different afternoon. Fresnel makes them one continuous path from radio to running model.
- 01
Data collection
ShippingFlash the firmware, start a session, stream CSI frames off one board or a distributed array — locally or over the network from a site you aren't standing in. Every frame carries the metadata that makes it re-usable later: radio settings, antenna, node identity and timestamp.
- 02
Analysis and sanitization
ShippingInspect amplitude and phase per receiver in the browser as it arrives. Remove the artifacts that make raw CSI unusable — phase offset, dropped frames, subcarrier nulls — with the corrections applied consistently across the whole dataset rather than per notebook.
- 03
Model building
In betaStart from CSI-native architectures for presence, activity and counting, or plug in your own through the SDK — anything ONNX-compatible. Feature extraction and windowing are configured against your capture, not re-derived from a paper's appendix.
- 04
Training
In betaTrain hosted, or take the pipeline offline and train on your own machines. Either way you compare runs across environments and see where a model stops generalizing before it reaches a room it has never been in.
- 05
Deployment
In betaSome models belong on the node; some belong in your cloud. Deploy either way — back to the ESP hardware the data came from, or to infrastructure you run — and keep collecting from the deployed fleet so the next model is trained on the field, not the lab.
Why this is hard today
CSI work stalls before the model
What you get that you can't assemble yourself
The parts that were the hard part
Open source
The capture path is open
The firmware and transport layers are Rust crates under the csi-rs organisation — read them, build them, run them without an account. The platform sits on top of them.
- 01CaptureCollect CSI frames on the board.esp-csi-rs
- 02SessionStart a capture and forward the stream.esp-csi-cli-rs
- 03BridgeMove frames from the board to a client.csi-webserver
- 04ReadPlot amplitude and phase live.csi-webclient
Apply for the beta
A few questions about what you're trying to sense, the hardware you have, and your timeline. We read every one and onboard by use case — the beta is how we find out which parts of this matter most.