Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,22 @@ jobs:
- name: Install bpf-linker
run: cargo install bpf-linker

- name: Install Musl Target
run: rustup target add x86_64-unknown-linux-musl

- name: Install Musl Tools
run: sudo apt-get install -y musl-tools

- name: Run Fast Checks (Push)
if: github.event_name == 'push'
run: cargo xtask check

- name: Run Full Verification (Pull Request)
if: github.event_name == 'pull_request'
run: cargo xtask verify

- name: Build eBPF
run: cargo xtask build-ebpf --release

- name: Build Static Binary (Musl)
run: cargo build --package netmonitor --release --target x86_64-unknown-linux-musl
13 changes: 12 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,19 @@ jobs:
- name: Build eBPF
run: cargo xtask build-ebpf --release

- name: Build NetMonitor Binary
- name: Build NetMonitor Binary (Dynamically Linked)
run: cargo build --package netmonitor --release

- name: Install Musl Target & Tools
run: |
rustup target add x86_64-unknown-linux-musl
sudo apt-get install -y musl-tools

- name: Build NetMonitor Binary (Musl Static)
run: |
cargo build --package netmonitor --release --target x86_64-unknown-linux-musl
tar -czvf netmonitor-x86_64-unknown-linux-musl.tar.gz -C target/x86_64-unknown-linux-musl/release netmonitor

- name: Build Debian Package
run: |
cd netmonitor
Expand All @@ -52,5 +62,6 @@ jobs:
files: |
target/release/netmonitor
target/debian/netmonitor_*.deb
netmonitor-x86_64-unknown-linux-musl.tar.gz
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39 changes: 38 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@
> Real-time Bandwidth. Deep Insights. Zero Overhead.
```

## 📸 Screenshots & Demo

*(Insert High-Quality GIF or Screenshot here showing the Dashboard and Process Monitor in action)*
`![NetMonitor Dashboard Demo](docs/assets/demo_dashboard.gif)`

*(Insert High-Quality GIF or Screenshot here showing the Interactive Graph and Kill-Switch)*
`![NetMonitor Graph Demo](docs/assets/demo_graph.gif)`

---

## ✨ Key Features
Expand Down Expand Up @@ -44,7 +52,17 @@ Download the latest `.deb` package from the [Releases](https://github.com/A-K-6/

```bash
sudo apt install ./netmonitor_0.1.0-beta.2_amd64.deb
sudo systemctl start netmonitor
sudo systemctl enable --now netmonitor
```

### Static Binary (Musl)
A fully static binary is provided in the releases for portability across different Linux distributions without relying on glibc:
```bash
wget https://github.com/A-K-6/NetMonitor/releases/download/v0.1.0-beta.2/netmonitor-x86_64-unknown-linux-musl.tar.gz
tar -xzf netmonitor-x86_64-unknown-linux-musl.tar.gz
sudo mv netmonitor /usr/local/bin/
sudo setcap cap_sys_admin,cap_bpf,cap_net_admin,cap_perfmon+ep /usr/local/bin/netmonitor
netmonitor
```

### Build & Install from Source
Expand Down Expand Up @@ -86,6 +104,25 @@ netmonitor
| `t` | Change **Theme** |
| `?` | Show Help Overlay |

### 🛠️ Advanced Usage Examples

**1. Headless Exporting (JSON/CSV):**
NetMonitor can be used without the TUI for scripting or integration with other tools (e.g., Prometheus).
```bash
# Output network stats in JSON format every 5 seconds, for 3 iterations
netmonitor --headless --output json --interval 5 --count 3
```

**2. Identifying Bandwidth Hogs & Throttling:**
- Open NetMonitor, press `Tab` to switch to the **Process Monitor**.
- Press `s` repeatedly to sort by **Total** or **Down** rate.
- Found the culprit? Press `b`, enter a limit like `500` (KB/s), and press `Enter` to throttle its traffic.
- To view historical bandwidth for that process, press `g` to show the **Interactive Graph**.

**3. Digging into Connections & Geo-IP:**
- Select a process and press `Enter` to open the **Detail View**.
- You will see exactly which IP addresses the process is connecting to, along with their resolved **Hostname**, **Country**, and **ISP/ASN** (e.g., `github.com (US - Microsoft)`).

---

## 🛠️ Architecture
Expand Down
4 changes: 2 additions & 2 deletions docs/workflow/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ This roadmap outlines the path from initial scaffolding to a production-ready Li
- [ ] **Community Feedback Loop:** Establish a Beta/Release Candidate (RC) phase for real-world user feedback.
- [ ] **Packaging Validation:**
- [ ] Verify `.deb` package installs across different Debian/Ubuntu versions.
- [ ] Test static binary portability.
- [ ] **User Manual:** Finalize a compelling `README.md` with high-quality GIFs and usage examples.
- [x] Test static binary portability.
- [x] **User Manual:** Finalize a compelling `README.md` with high-quality GIFs and usage examples.

## Phase 6: Hardening & Ecosystem
*Goal: Long-term sustainability, security, and official stable release.*
Expand Down
Loading