Skip to content

Repository files navigation

Muninn Logo

Muninn

A real-time, privacy-first network monitor for your desktop.
Visualise traffic, track connections, and detect anomalies — 100% locally, zero telemetry.

Muninn Dashboard

Overview

Muninn is an open-source, cross-platform desktop application that gives you full visibility into your network activity. Built with Electron and React, it captures and visualises real-time bandwidth, active connections, protocol breakdowns, and geographic traffic flows — all processed on-device with no data ever leaving your machine.

Named after one of Odin's ravens in Norse mythology ("Memory"), Muninn remembers and records your network activity so you don't have to.

Features

📊 Live Network Graph

  • Real-time area chart showing download and upload bandwidth over time
  • Filterable by direction (All / Download / Upload) and timeframe (5 min / 15 min / All)
  • Interactive timeline scrubber with mini-graph preview for navigating history
  • Spike detection with hover tooltips identifying the responsible application

📋 Traffic Breakdown Tables

  • By Application — see which apps consume the most bandwidth
  • By Host — track every remote server your machine talks to
  • By Protocol — HTTP, DNS, mDNS, SSDP, NetBIOS, DHCP breakdown
  • By Country — geographic origin/destination of traffic with flag indicators

🗺️ World Map View

  • Geographic visualisation of traffic destinations plotted on a world map
  • Proportional markers sized by traffic volume per country

📈 Bottom Telemetry Panel

  • Bandwidth column — live rate gauge, download/upload volume bars, session total, and time window
  • Connectivity column — subnet device count, active sockets, RTT latency bar, tracked hosts bar, link quality status
  • Traffic split column — WAN/LAN ratio ring, segmented Rx/Tx bars, geographic region count, protocol count

📱 Usage Analytics

  • Per-application bandwidth usage with proportional bars
  • Historical volume tracking across the monitoring session

🔥 Firewall Monitor

  • Active connection table with process names, remote addresses, ports, and protocols
  • Real-time socket state tracking (ESTABLISHED, CLOSE_WAIT, TIME_WAIT, etc.)

🖥️ Device Scanner

  • ARP-based subnet scanner to discover all devices on your local network
  • Displays IP, MAC address, hostname, and vendor information
  • Cached results for instant tab switching

🔔 Alerts

  • Configurable alerts for unusual network activity
  • Notification logging with timestamps

⚙️ Settings & Theming

  • 5 built-in themes: Deep Forest, Cyber Midnight, Nordic Frost, Bloodmoon, and Custom
  • Custom accent colour picker for download/upload graph colours
  • All preferences persisted locally

🔒 Privacy

  • 100% local — no analytics, no telemetry, no cloud, no accounts
  • No background network connections beyond your own traffic
  • Manual update checks only — the app never phones home

Tech Stack

Layer Technology
Desktop Shell Electron 35
UI Framework React 19
Build Tool Vite via electron-vite
Styling Tailwind CSS 4
Typography Geist Sans & Mono (variable)
Charts Recharts
Animations Framer Motion
Icons Lucide React
Network Data systeminformation
Packaging electron-builder

Getting Started

Prerequisites

  • Node.js ≥ 18
  • npm ≥ 9
  • Git

Install & Run

git clone https://github.com/HawkdotDev/muninn.git
cd muninn
npm install
npm run dev

The app launches in development mode with hot-reload at localhost:6969.

Build for Production

# Platform-specific builds
npm run build:win     # Windows (.exe)
npm run build:mac     # macOS (.dmg)
npm run build:linux   # Linux (.AppImage)

Build artifacts are output to the dist/ directory.


Project Structure

muninn/
├── src/
│   ├── main/              # Electron main process
│   │   ├── index.js        # App lifecycle, window management
│   │   └── monitor.js      # Network data collection engine
│   ├── preload/            # Electron preload scripts (IPC bridge)
│   └── renderer/           # React frontend
│       └── src/
│           ├── App.jsx              # Root component, routing, state
│           ├── main.css             # Global styles, themes, Geist fonts
│           ├── components/
│           │   ├── Header.jsx       # Navigation header with tabs
│           │   ├── LiveGraphs.jsx   # Main graph view + telemetry panel
│           │   ├── common/          # Shared components (AppIcon, CountryFlag)
│           │   └── pages/
│           │       ├── Alerts.jsx
│           │       ├── BreakdownColumns.jsx
│           │       ├── Firewall.jsx
│           │       ├── MapView.jsx
│           │       ├── Settings.jsx
│           │       ├── Things.jsx   # Device scanner
│           │       └── Usage.jsx
│           └── utils/
│               └── format.js        # Formatting helpers (KB/MB/GB, rates)
├── assets/                 # README screenshots
├── build/                  # App icons
├── electron-builder.yml    # Packaging configuration
└── electron.vite.config.mjs

Manual Update Checks

Muninn will never auto-update or download anything in the background. You can check for updates manually from within the app — it queries GitHub Releases and notifies you if a new version is available.


Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you'd like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/my-feature)
  3. Commit your changes (git commit -m 'Add my feature')
  4. Push to the branch (git push origin feature/my-feature)
  5. Open a Pull Request

License

This project is licensed under the AGPL-3.0 License.


Built with 🤍 by HawkdotDev

About

A cross-platform network monitoring desktop application built with Electron and React

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages