Skip to content

feat: Network Monitor — live upload/download speeds and per-process bandwidth #9

@chojuninengu

Description

@chojuninengu

Summary

Add a Network Monitor tab showing live network activity — upload/download speeds
per interface, total data transferred, and which processes are consuming the most
bandwidth.

Why

Memory, CPU, Disk, and Battery are all covered. Network is the last missing piece
in the monitoring story. Users frequently want to know what's consuming their
bandwidth in the background.

Scope

Rust backend

  • Add get_network_stats() -> Vec<NetworkInterface> Tauri command
  • Use sysinfo::Networks (already available in the dependency) to read:
    • Interface name (eth0, wlan0, en0, etc.)
    • Bytes received / transmitted (total)
    • Bytes received / transmitted (per second — delta between refreshes)
    • MAC address
    • IP address
  • Emit network stats on the existing process-update event every 3s
  • Add NetworkInterface struct to lib.rs:
  pub struct NetworkInterface {
      pub name: String,
      pub rx_bytes: u64,
      pub tx_bytes: u64,
      pub rx_speed: u64,   // bytes/sec
      pub tx_speed: u64,   // bytes/sec
      pub total_rx: u64,
      pub total_tx: u64,
  }

Frontend

  • Add "Network" tab to the sidebar between Processes and Applications
  • Stat cards row: Total Download speed, Total Upload speed, Total RX today, Total TX today
  • Per-interface table: name, IP, download speed, upload speed, total rx, total tx
  • Live sparkline chart (reuse existing Recharts setup) showing RX/TX over last 60s
  • Format speeds as KB/s, MB/s, GB/s automatically

Acceptance criteria

  • Network tab shows live speeds updating every 3s
  • Works on Ubuntu, macOS, and Windows
  • Speeds shown in human-readable format (KB/s / MB/s)
  • Multiple interfaces shown separately (WiFi, Ethernet, VPN)
  • Chart shows last 60 seconds of activity

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions