signal is a network monitoring tool for macOS, designed to be minimal and beautiful.
As of now, I haven't setup code signing for this (and probably won't do it for a while). If you're interested in using this app, you will have to clone and build it yourself. See building.
System requirements:
- macOS only
- Apple Silicon Mac recommended
- Xcode Command Line Tools
- Node.js and Yarn
- Rust stable toolchain
- Nightly Rust with
rustfmtfor formatting
### App icons are generated from the single source SVG at `src-tauri/icons/app-icon.svg`:
cargo tauri icon src-tauri/icons/app-icon.svg -o src-tauri/icons
### run in development mode
cargo tauri dev
### for formatting rust code
cargo +nightly fmt
### create a production build and install it
cargo tauri buildSignal is built as a single-writer event-driven runtime.
- Rust owns networking, state, persistence, and app lifecycle.
- React is a rendering layer that hydrates from
get_initial_state()and then listens for live Tauri events. - Collectors such as throughput, interface, and connectivity samplers are read-only. They observe the selected interface, gather data from macOS, and emit
AppEvents. - All collector output and configuration changes flow through a single
tokio::sync::mpscchannel. - A single reducer task is the only writer to
AppState. It processesAppEvents, updates in-memory state, persists time-series samples to SQLite, and emits UI updates. - SQLite stores durable history with background cleanup of older samples, while in-memory history is intentionally bounded for live rendering.
At a systems level, the app is structured to keep data flow one-way and ownership explicit: many producers, one event queue, one reducer, one source of truth.
Happy hacking!
