From 6fea56c4a941e457b72adb9f53abf10f2b149c6b Mon Sep 17 00:00:00 2001 From: ruv Date: Wed, 4 Mar 2026 10:19:41 -0500 Subject: [PATCH] Add RuView hero image to top of README Co-Authored-By: claude-flow --- README.md | 50 ++++++++++++++++++++++------------------ assets/ruview-small.jpg | Bin 0 -> 208087 bytes 2 files changed, 27 insertions(+), 23 deletions(-) create mode 100644 assets/ruview-small.jpg diff --git a/README.md b/README.md index 0162585c..a942cf03 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # ฯ€ RuView +

+ RuView - WiFi DensePose +

+ **See through walls with WiFi.** No cameras. No wearables. No Internet. Just radio waves. WiFi DensePose turns commodity WiFi signals into real-time human pose estimation, vital sign monitoring, and presence detection โ€” all without a single pixel of video. @@ -10,8 +14,8 @@ By analyzing Channel State Information (CSI) disturbances caused by human moveme [![Rust 1.85+](https://img.shields.io/badge/rust-1.85+-orange.svg)](https://www.rust-lang.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![Tests: 1300+](https://img.shields.io/badge/tests-1300%2B-brightgreen.svg)](https://github.com/ruvnet/wifi-densepose) -[![Docker: 132 MB](https://img.shields.io/badge/docker-132%20MB-blue.svg)](https://hub.docker.com/r/ruvnet/wifi-densepose) +[![Tests: 1300+](https://img.shields.io/badge/tests-1300%2B-brightgreen.svg)](https://github.com/ruvnet/RuView) +[![Docker: multi-arch](https://img.shields.io/badge/docker-amd64%20%2B%20arm64-blue.svg)](https://hub.docker.com/r/ruvnet/wifi-densepose) [![Vital Signs](https://img.shields.io/badge/vital%20signs-breathing%20%2B%20heartbeat-red.svg)](#vital-sign-detection) [![ESP32 Ready](https://img.shields.io/badge/ESP32--S3-CSI%20streaming-purple.svg)](#esp32-s3-hardware-pipeline) [![crates.io](https://img.shields.io/crates/v/wifi-densepose-ruvector.svg)](https://crates.io/crates/wifi-densepose-ruvector) @@ -102,8 +106,8 @@ Fast enough for real-time use, small enough for edge devices, simple enough for | | Feature | What It Means | |---|---------|---------------| | โšก | **Real-Time** | Analyzes WiFi signals in under 100 microseconds per frame โ€” fast enough for live monitoring | -| ๐Ÿฆ€ | **810x Faster** | Complete Rust rewrite: 54,000 frames/sec pipeline, 132 MB Docker image, 1,031+ tests | -| ๐Ÿณ | **One-Command Setup** | `docker pull ruvnet/wifi-densepose:latest` โ€” live sensing in 30 seconds, no toolchain needed | +| ๐Ÿฆ€ | **810x Faster** | Complete Rust rewrite: 54,000 frames/sec pipeline, multi-arch Docker image, 1,031+ tests | +| ๐Ÿณ | **One-Command Setup** | `docker pull ruvnet/wifi-densepose:latest` โ€” live sensing in 30 seconds, no toolchain needed (amd64 + arm64 / Apple Silicon) | | ๐Ÿ“ก | **Fully Local** | Runs completely on a $9 ESP32 โ€” no internet connection, no cloud account, no recurring fees. Detects presence, vital signs, and falls on-device with instant response | | ๐Ÿ“ฆ | **Portable Models** | Trained models package into a single `.rvf` file โ€” runs on edge, cloud, or browser (WASM) | @@ -512,8 +516,8 @@ The installer walks through 7 steps: system detection, toolchain check, WiFi har From Source โ€” Rust (primary) or Python ```bash -git clone https://github.com/ruvnet/wifi-densepose.git -cd wifi-densepose +git clone https://github.com/ruvnet/RuView.git +cd RuView # Rust (primary โ€” 810x faster) cd rust-port/wifi-densepose-rs @@ -551,10 +555,10 @@ cd docker && docker compose up docker run --rm -v $(pwd):/out ruvnet/wifi-densepose:latest --export-rvf /out/model.rvf ``` -| Image | Tag | Size | Ports | -|-------|-----|------|-------| -| `ruvnet/wifi-densepose` | `latest`, `rust` | 132 MB | 3000 (REST), 3001 (WS), 5005/udp (ESP32) | -| `ruvnet/wifi-densepose` | `python` | 569 MB | 8765 (WS), 8080 (UI) | +| Image | Tag | Platforms | Ports | +|-------|-----|-----------|-------| +| `ruvnet/wifi-densepose` | `latest`, `rust` | linux/amd64, linux/arm64 | 3000 (REST), 3001 (WS), 5005/udp (ESP32) | +| `ruvnet/wifi-densepose` | `python` | linux/amd64 | 8765 (WS), 8080 (UI) | @@ -689,9 +693,9 @@ The signal processing stack transforms raw WiFi Channel State Information into a |---------|-------------|------| | [Key Features](#key-features) | Sensing, Intelligence, and Performance & Deployment capabilities | โ€” | | [How It Works](#how-it-works) | End-to-end pipeline: radio waves โ†’ CSI capture โ†’ signal processing โ†’ AI โ†’ pose + vitals | โ€” | -| [ESP32-S3 Hardware Pipeline](#esp32-s3-hardware-pipeline) | 20 Hz CSI streaming, binary frame parsing, flash & provision | [ADR-018](docs/adr/ADR-018-esp32-dev-implementation.md) ยท [Tutorial #34](https://github.com/ruvnet/wifi-densepose/issues/34) | +| [ESP32-S3 Hardware Pipeline](#esp32-s3-hardware-pipeline) | 20 Hz CSI streaming, binary frame parsing, flash & provision | [ADR-018](docs/adr/ADR-018-esp32-dev-implementation.md) ยท [Tutorial #34](https://github.com/ruvnet/RuView/issues/34) | | [Vital Sign Detection](#vital-sign-detection) | Breathing 6-30 BPM, heartbeat 40-120 BPM, FFT peak detection | [ADR-021](docs/adr/ADR-021-vital-sign-detection-rvdna-pipeline.md) | -| [WiFi Scan Domain Layer](#wifi-scan-domain-layer) | 8-stage RSSI pipeline, multi-BSSID fingerprinting, Windows WiFi | [ADR-022](docs/adr/ADR-022-windows-wifi-enhanced-fidelity-ruvector.md) ยท [Tutorial #36](https://github.com/ruvnet/wifi-densepose/issues/36) | +| [WiFi Scan Domain Layer](#wifi-scan-domain-layer) | 8-stage RSSI pipeline, multi-BSSID fingerprinting, Windows WiFi | [ADR-022](docs/adr/ADR-022-windows-wifi-enhanced-fidelity-ruvector.md) ยท [Tutorial #36](https://github.com/ruvnet/RuView/issues/36) | | [WiFi-Mat Disaster Response](#wifi-mat-disaster-response) | Search & rescue, START triage, 3D localization through debris | [ADR-001](docs/adr/ADR-001-wifi-mat-disaster-detection.md) ยท [User Guide](docs/wifi-mat-user-guide.md) | | [SOTA Signal Processing](#sota-signal-processing) | SpotFi, Hampel, Fresnel, STFT spectrogram, subcarrier selection, BVP | [ADR-014](docs/adr/ADR-014-sota-signal-processing.md) | @@ -760,7 +764,7 @@ WiFi DensePose is MIT-licensed open source, developed by [ruvnet](https://github |---------|-------------|------| | [Changelog](#changelog) | v3.0.0 (AETHER AI + Docker), v2.0.0 (Rust port + SOTA + WiFi-Mat) | [CHANGELOG.md](CHANGELOG.md) | | [License](#license) | MIT License | [LICENSE](LICENSE) | -| [Support](#support) | Bug reports, feature requests, community discussion | [Issues](https://github.com/ruvnet/wifi-densepose/issues) ยท [Discussions](https://github.com/ruvnet/wifi-densepose/discussions) | +| [Support](#support) | Bug reports, feature requests, community discussion | [Issues](https://github.com/ruvnet/RuView/issues) ยท [Discussions](https://github.com/ruvnet/RuView/discussions) | @@ -1010,8 +1014,8 @@ Download a pre-built binary โ€” no build toolchain needed: | Release | What's included | Tag | |---------|-----------------|-----| -| [v0.2.0](https://github.com/ruvnet/wifi-densepose/releases/tag/v0.2.0-esp32) | Stable โ€” raw CSI streaming, multi-node TDM, channel hopping | `v0.2.0-esp32` | -| [v0.3.0-alpha](https://github.com/ruvnet/wifi-densepose/releases/tag/v0.3.0-alpha-esp32) | Alpha โ€” adds on-device edge intelligence and WASM modules ([ADR-039](docs/adr/ADR-039-esp32-edge-intelligence.md), [ADR-040](docs/adr/ADR-040-wasm-programmable-sensing.md)) | `v0.3.0-alpha-esp32` | +| [v0.2.0](https://github.com/ruvnet/RuView/releases/tag/v0.2.0-esp32) | Stable โ€” raw CSI streaming, multi-node TDM, channel hopping | `v0.2.0-esp32` | +| [v0.3.0-alpha](https://github.com/ruvnet/RuView/releases/tag/v0.3.0-alpha-esp32) | Alpha โ€” adds on-device edge intelligence and WASM modules ([ADR-039](docs/adr/ADR-039-esp32-edge-intelligence.md), [ADR-040](docs/adr/ADR-040-wasm-programmable-sensing.md)) | `v0.3.0-alpha-esp32` | ```bash # 1. Flash the firmware to your ESP32-S3 @@ -1072,7 +1076,7 @@ python firmware/esp32-csi-node/provision.py --port COM7 \ When Tier 2 is active, the node sends a 32-byte vitals packet once per second containing: presence, motion level, breathing BPM, heart rate BPM, confidence scores, fall alert flag, and occupancy count. -See [firmware/esp32-csi-node/README.md](firmware/esp32-csi-node/README.md), [ADR-039](docs/adr/ADR-039-esp32-edge-intelligence.md), [ADR-044](docs/adr/ADR-044-provisioning-tool-enhancements.md), and [Tutorial #34](https://github.com/ruvnet/wifi-densepose/issues/34). +See [firmware/esp32-csi-node/README.md](firmware/esp32-csi-node/README.md), [ADR-039](docs/adr/ADR-039-esp32-edge-intelligence.md), [ADR-044](docs/adr/ADR-044-provisioning-tool-enhancements.md), and [Tutorial #34](https://github.com/ruvnet/RuView/issues/34). @@ -1143,7 +1147,7 @@ See [ADR-021](docs/adr/ADR-021-vital-sign-detection-rvdna-pipeline.md). cargo test -p wifi-densepose-wifiscan ``` -See [ADR-022](docs/adr/ADR-022-windows-wifi-enhanced-fidelity-ruvector.md) and [Tutorial #36](https://github.com/ruvnet/wifi-densepose/issues/36). +See [ADR-022](docs/adr/ADR-022-windows-wifi-enhanced-fidelity-ruvector.md) and [Tutorial #36](https://github.com/ruvnet/RuView/issues/36). @@ -1247,7 +1251,7 @@ The [`wifi-densepose-ruvector`](https://crates.io/crates/wifi-densepose-ruvector | **O(1) survivor triangulation** | O(N^3) matrix inversion | `ruvector-solver` | Neumann series linearization for instant position updates | | **75% memory compression** | 13.4 MB breathing buffers that overflow edge devices | `ruvector-temporal-tensor` | Tiered 3-8 bit quantization fits 60s of vitals in 3.4 MB | -See [issue #67](https://github.com/ruvnet/wifi-densepose/issues/67) for a deep dive with code examples, or [`cargo add wifi-densepose-ruvector`](https://crates.io/crates/wifi-densepose-ruvector) to use it directly. +See [issue #67](https://github.com/ruvnet/RuView/issues/67) for a deep dive with code examples, or [`cargo add wifi-densepose-ruvector`](https://crates.io/crates/wifi-densepose-ruvector) to use it directly. @@ -1641,10 +1645,10 @@ WebSocket: `ws://localhost:3001/ws/sensing` (real-time sensing + vital signs) | Hardware | CSI | Cost | Guide | |----------|-----|------|-------| -| **ESP32-S3** | Native | ~$8 | [Tutorial #34](https://github.com/ruvnet/wifi-densepose/issues/34) | +| **ESP32-S3** | Native | ~$8 | [Tutorial #34](https://github.com/ruvnet/RuView/issues/34) | | Intel 5300 | Firmware mod | ~$15 | Linux `iwl-csi` | | Atheros AR9580 | ath9k patch | ~$20 | Linux only | -| Any Windows WiFi | RSSI only | $0 | [Tutorial #36](https://github.com/ruvnet/wifi-densepose/issues/36) | +| Any Windows WiFi | RSSI only | $0 | [Tutorial #36](https://github.com/ruvnet/RuView/issues/36) | | Any macOS WiFi | RSSI only (CoreWLAN) | $0 | [ADR-025](docs/adr/ADR-025-macos-corewlan-wifi-sensing.md) | | Any Linux WiFi | RSSI only (`iw`) | $0 | Requires `iw` + `CAP_NET_ADMIN` | @@ -1783,8 +1787,8 @@ POSE_MAX_PERSONS=10 # Max tracked individuals Dev setup, code standards, PR process ```bash -git clone https://github.com/ruvnet/wifi-densepose.git -cd wifi-densepose +git clone https://github.com/ruvnet/RuView.git +cd RuView # Rust development cd rust-port/wifi-densepose-rs @@ -1882,7 +1886,7 @@ MIT License โ€” see [LICENSE](LICENSE) for details. ## ๐Ÿ“ž Support -[GitHub Issues](https://github.com/ruvnet/wifi-densepose/issues) | [Discussions](https://github.com/ruvnet/wifi-densepose/discussions) | [PyPI](https://pypi.org/project/wifi-densepose/) +[GitHub Issues](https://github.com/ruvnet/RuView/issues) | [Discussions](https://github.com/ruvnet/RuView/discussions) | [PyPI](https://pypi.org/project/wifi-densepose/) --- diff --git a/assets/ruview-small.jpg b/assets/ruview-small.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5655e0e700a878efa630b982b22746e3ed56f8c3 GIT binary patch literal 208087 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