Project releases

rvCSI hardens the runtime that turns WiFi CSI into typed events

WiFi sensing pipelines are usually shell scripts and patched firmware. rvCSI is the hardware abstracted runtime underneath them. An August 2 commit removed implicit unwraps and dead code across the workspace.

GitHub activity: · Published:

What rvCSI is

Channel state information is the raw material of WiFi sensing, and getting at it is miserable: every chipset formats it differently, drivers are unstable, and most pipelines are a chain of scripts nobody can rerun.

rvCSI normalises CSI from Nexmon, ESP32, Intel, Atheros, files and replay into validated, typed, confidence scored events, from Rust, TypeScript or the command line.

What changed

Commit 2ef4fd1 is correctness work: implicit unwraps removed, dead code deleted, and rough edges closed across the workspace. For a runtime that other projects build on, that matters more than a feature.

Earlier in the series, commit 1ba7c98 exposed the live capture API through CaptureRuntime, and a CI commit set up npm publishing of @ruv/rvcsi through OIDC trusted publishing.

Get started

A Rust toolchain, or Node 18 or newer. For the CLI:

cargo install rvcsi-cli

Expected result: an rvcsi binary on your path.

For TypeScript:

npm install @ruv/rvcsi

Inspect a capture file without any radio hardware connected:

import { inspectCaptureFile, eventsFromCaptureFile } from "@ruv/rvcsi";

console.log(inspectCaptureFile("session.rvcsi"));
for (const ev of eventsFromCaptureFile("session.rvcsi"))
  console.log(ev.kind, ev.confidence, ev.timestampNs);

Expected result: frame count, channels and quality, then a stream of typed events with confidence scores.

The workspace includes rvcsi-mcp, an MCP tool server, alongside the daemon and the ESP32 adapter.

Use it today

Practical case: a sensing experiment you need to be able to repeat. Input is a recorded .rvcsi capture. Workflow is inspect, then run the DSP cleaned frames through the runtime, then read events. Output is a reproducible event stream from a fixed file.

Acceptance test: run cargo test --workspace in a checkout and confirm the suite passes before you attach any radio.

Push it further

Experimental commentary. Because rvCSI abstracts the chipset, a single sensing model can in principle be trained on one radio and deployed on another. That is the promise; treat it as untested for your hardware pair.

Limitation: normalisation does not erase physical differences between radios. Falsifiable test: record the same scene on two chipsets, run both through the runtime, and compare the event streams.

Read the original on GitHub commit

Commit 2ef4fd1 — correctness hardening across the workspace

rvCSI repository

Back to the newsroom