Overview • Features • Installation • Usage • Architecture • License
--- ## 📌 Overview **pulse** is a lightweight, strictly native, command-line tool built in C++ that effortlessly tracks and displays real-time Receive (Rx) and Transmit (Tx) bandwidth for Linux network interfaces. Bypassing bloatware and external dependencies entirely, pulse maps directly into the Linux kernel's SysFS (`/sys/class/net/`) architecture to derive zero-overhead packet statistics. Designed for stability and endurance, `pulse` acts as a highly accurate data monitor that you can confidently leave running in the background. --- ## ✨ Key Features - **Zero External Dependencies**: Operates natively reading direct kernel stats. No `libpcap`, external wrappers, or heavy runtimes are required. - **Universal Static Binary**: Shipped as a fully statically linked executable guaranteeing bulletproof compatibility out-of-the-box across all Linux distributions. - **Smart Auto-Discovery**: Automatically scans and binds to physical network hardware, intelligently filtering out virtual routing bridges like Docker, VMs, or VPNs when no specific target is provided. - **Daemon Viewer Concurrency**: Run `pulse -d` to track statistics silently in the background. Launching standard `pulse` natively detects the background POSIX `flock()` lockfile and smoothly drops into a realtime Read-Only GUI viewer to track metrics without database clashing. - **Crash-Resilient Durability**: Hourly data bandwidth is physically flushed to disk (`fsync()`) resolving to an atomic backup database (`~/.pulse_data.csv`). - **Signal-Safe Mathematics**: Implements advanced threshold bounding to recover phantom bytes lost during kernel integer bounds wrapping, backed by async-signal-safe POSIX routines guaranteeing flawless operation through `kill -9` or connection resets. - **Dynamic Scale Formatting**: Tracks usage dynamically from basic `B/s` all the way to `GB/s` as well as interchangeable metric flags (`-b`) for bits visualization (`b/s` to `Gb/s`). --- ## 🚀 Installation ### Option 1: One-Line Install (Recommended) The easiest way to get started is by pulling the latest pre-compiled production binary straight to your environment. ```bash sudo wget -O /usr/local/bin/pulse https://github.com/arpnova/pulse/releases/download/v0.2.0/pulse && sudo chmod +x /usr/local/bin/pulse ``` > **Note**: You can run `pulse` from anywhere in your terminal once installed. The command above targets the latest **v0.2.0** stable release. ### Option 2: Build from Source **Prerequisites**: - Any modern Linux-based operating system. - `g++` (Compiler supporting C++17). - `make` (GNU Make). ```bash # 1. Clone the repository git clone https://github.com/arpnova/pulse.git cd pulse # 2. Compile using GNU Make make ``` *This statically links and places the `pulse` executable inside the newly generated `build/` directory.* --- ## 💻 Usage Regardless of how you installed pulse, usage remains identical. If no arguments are passed, `pulse` falls back to auto-discovering the best active connection. ### Core Flags | Flag | Long Flag | Description | | :--- | :--- | :--- | | `-i` | `--interface