Files
ruvnet--RuView/python/ruview-meta
ruv f74e73ccf7 chore(adr-184): promote wifi-densepose to 2.0.0 stable + ruview 2.0.0 (P2)
ADR-184 P2 (version promotion + changelog) — version-metadata prep only;
triggers NO publish (P3's real PyPI upload is still gated on the manual
Trusted Publisher registration on pypi.org).

- python/pyproject.toml: version 2.0.0a1 -> 2.0.0; classifier
  "Development Status :: 3 - Alpha" -> "5 - Production/Stable".
- python/ruview-meta/pyproject.toml: version 2.0.0a1 -> 2.0.0; same
  classifier bump; repointed the wifi-densepose dependency pins
  (base + [client]) from ==2.0.0a1 to ==2.0.0 so the stable ruview
  meta-package depends on the stable wifi-densepose, not the alpha.
- python/wifi_densepose/__init__.py: runtime __version__ 2.0.0a1 -> 2.0.0
  (caught during the sanity check — it would otherwise contradict the
  stable wheel version reported by `wifi_densepose.__version__`).
- CHANGELOG.md: [Unreleased] entry recording the promotion.

Sanity-checked that the core package genuinely deserves "Production/Stable"
(not just a version-string change):
  maturin build --release --strip  -> default wheel 279 KB
  pytest python/tests/ (excluding [aether]/[meridian]/[mat] extra modules)
    -> 185 passed, 0 failed (smoke/keypoint/pose/vitals/bfld/security/
       WS+MQTT client)
  post-bump: wheel installs as 2.0.0, __version__ = 2.0.0, smoke 6/6 pass.
No publish/tag/release commands were run.
2026-07-21 17:36:37 -07:00
..

ruview

Ambient intelligence from WiFi CSI. Detect human presence, count people, read breathing and heart rate, and estimate skeletal pose — using only the WiFi signal already in your home. No cameras. No wearables. Works through walls and in the dark.

ruview is the brand-facing meta-package for the RuView sensing stack. It installs the compiled PyO3 wheel published as wifi-densepose and re-exports its full API under the ruview namespace — so you can write either of these and they do the same thing:

from ruview import BreathingExtractor, SensingClient
from wifi_densepose import BreathingExtractor, SensingClient

Install

pip install ruview                 # core DSP
pip install "ruview[client]"       # + WebSocket/MQTT clients

Usage

from ruview import BreathingExtractor

br = BreathingExtractor.esp32_default()  # 56 subcarriers @ 100 Hz, 30s window
for residuals, weights in csi_source:
    est = br.extract(residuals=residuals, weights=weights)
    if est is not None:
        print(f"{est.value_bpm:.1f} BPM  (confidence={est.confidence:.2f})")

Full API + WebSocket / MQTT / Home Assistant integration docs: wifi-densepose on PyPI.

Why two PyPI names?

Historic: wifi-densepose is the technical / academic name (the project started as a WiFi-based DensePose implementation). ruview is the brand the v2 ambient-intelligence platform ships under. Both are the same code. You pick the import that reads better in your project.

License

MIT.