Skip to content

Monitoring suite for Twingate, ZeroTier, IPFS, IPv6 ingress, and general network health. Part of FlatRacoon Network Stack.

License

Notifications You must be signed in to change notification settings

hyperpolymath/network-dashboard

MPL-2.0 Palimpsest

network-dashboard

Purpose

Monitoring suite for Twingate, ZeroTier, IPFS, IPv6 ingress, BGP, and general network health across the FlatRacoon Network Stack.

Built with Phoenix LiveView for real-time updates and poly-observability-mcp for metrics collection.

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Network Dashboard                          β”‚
β”‚                   (Phoenix LiveView)                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚    β”‚
β”‚  β”‚  β”‚Twingate β”‚ β”‚ZeroTier β”‚ β”‚  IPFS   β”‚ β”‚  IPv6   β”‚   β”‚    β”‚
β”‚  β”‚  β”‚ Panel   β”‚ β”‚  Panel  β”‚ β”‚  Panel  β”‚ β”‚  Panel  β”‚   β”‚    β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜   β”‚    β”‚
β”‚  β”‚       β”‚           β”‚           β”‚           β”‚         β”‚    β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”   β”‚    β”‚
β”‚  β”‚  β”‚           Real-Time Metrics Engine           β”‚   β”‚    β”‚
β”‚  β”‚  β”‚              (GenServer + ETS)               β”‚   β”‚    β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚    β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚            β”‚            β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
     β”‚   Prometheus    β”‚   β”‚   β”‚      Loki       β”‚
     β”‚   (metrics)     β”‚   β”‚   β”‚     (logs)      β”‚
     β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚            β”‚            β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚                   β”‚                   β”‚
β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
β”‚  Twingate   β”‚     β”‚  ZeroTier   β”‚     β”‚    IPFS     β”‚
β”‚  Connector  β”‚     β”‚   Agents    β”‚     β”‚   Nodes     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Components

  • Phoenix LiveView dashboard - Real-time web interface

  • Prometheus integration - Metrics collection and alerting

  • Loki integration - Log aggregation and search

  • Grafana dashboards - Pre-built visualization templates

  • Alert manager - Notification routing

Directory Structure

network-dashboard/
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ network_dashboard/
β”‚   β”‚   β”œβ”€β”€ application.ex
β”‚   β”‚   β”œβ”€β”€ metrics/
β”‚   β”‚   β”‚   β”œβ”€β”€ twingate.ex
β”‚   β”‚   β”‚   β”œβ”€β”€ zerotier.ex
β”‚   β”‚   β”‚   β”œβ”€β”€ ipfs.ex
β”‚   β”‚   β”‚   β”œβ”€β”€ ipv6.ex
β”‚   β”‚   β”‚   └── bgp.ex
β”‚   β”‚   └── alerts/
β”‚   └── network_dashboard_web/
β”‚       β”œβ”€β”€ live/
β”‚       β”‚   β”œβ”€β”€ dashboard_live.ex
β”‚       β”‚   β”œβ”€β”€ twingate_live.ex
β”‚       β”‚   β”œβ”€β”€ zerotier_live.ex
β”‚       β”‚   β”œβ”€β”€ ipfs_live.ex
β”‚       β”‚   └── network_live.ex
β”‚       └── components/
β”œβ”€β”€ assets/
β”‚   └── js/                    # ReScript compiled JS
β”œβ”€β”€ grafana/
β”‚   β”œβ”€β”€ dashboards/
β”‚   β”‚   β”œβ”€β”€ overview.json
β”‚   β”‚   β”œβ”€β”€ twingate.json
β”‚   β”‚   β”œβ”€β”€ zerotier.json
β”‚   β”‚   └── ipfs.json
β”‚   └── provisioning/
β”œβ”€β”€ prometheus/
β”‚   β”œβ”€β”€ rules/
β”‚   └── alerts/
β”œβ”€β”€ configs/
β”‚   β”œβ”€β”€ dashboard.ncl
β”‚   β”œβ”€β”€ alerts.ncl
β”‚   └── retention.ncl
β”œβ”€β”€ mix.exs
β”œβ”€β”€ Justfile
β”œβ”€β”€ README.adoc
β”œβ”€β”€ STATE.scm
β”œβ”€β”€ META.scm
└── ECOSYSTEM.scm

Dashboard Panels

Overview

  • Total connected nodes

  • Active Twingate sessions

  • ZeroTier mesh health

  • IPFS cluster status

  • IPv6 traffic volume

  • BGP session states

Twingate Panel

  • Active connections

  • Authentication events

  • Bandwidth usage

  • Access policy violations

  • Connector health

ZeroTier Panel

  • Peer count and status

  • Network latency matrix

  • NAT traversal success rate

  • Bandwidth per node

  • Route convergence time

IPFS Panel

  • Swarm peer count

  • Pinned content size

  • Gateway request rate

  • Bandwidth in/out

  • Block store metrics

Network Panel

  • IPv6 traffic volume

  • IPv4 rejection count

  • DNS query rate (Hesiod)

  • BGP route count

  • Packet loss metrics

Inputs

Input Description Source

Prometheus endpoint

Metrics scrape target

poly-observability-mcp

Loki endpoint

Log aggregation target

poly-observability-mcp

Module health endpoints

Per-module health checks

Each FlatRacoon module

Alert rules

Alerting configuration

configs/alerts.ncl

Outputs

Output Description

Web dashboard

Real-time Phoenix LiveView UI

Grafana dashboards

Pre-configured visualizations

Prometheus alerts

Configured alerting rules

API endpoints

Programmatic access to metrics

Integration Points

With FlatRacoon Stack

  • All modules - Metrics collection endpoints

  • poly-observability-mcp - Prometheus/Loki integration

  • flatracoon-netstack orchestrator - Health status feed

Machine-Readable Manifest

{
  "module": "network-dashboard",
  "version": "0.1.0",
  "layer": "observability",
  "requires": ["prometheus", "loki", "elixir"],
  "provides": ["dashboard", "alerting", "visualization"],
  "config_schema": "configs/schema.ncl",
  "health_endpoint": "/health",
  "metrics_endpoint": "/metrics"
}

Quick Start

# 1. Install dependencies
just deps

# 2. Configure endpoints
cp configs/dashboard.ncl.example configs/dashboard.ncl
# Edit configs/dashboard.ncl

# 3. Start dashboard
just server

# 4. Access at http://localhost:4000

# 5. Import Grafana dashboards
just grafana-import

Technology Stack

Component Technology

Backend

Elixir / Phoenix 1.7+

Frontend

Phoenix LiveView + ReScript

Real-time

Phoenix Channels / WebSocket

Metrics

Prometheus / VictoriaMetrics

Logs

Loki / Grafana

Visualization

Grafana dashboards

Configuration

Nickel

Status

Phase

Scaffolding

Completion

5%

Next

Phoenix project initialization and LiveView skeleton

License

AGPL-3.0-or-later

About

Monitoring suite for Twingate, ZeroTier, IPFS, IPv6 ingress, and general network health. Part of FlatRacoon Network Stack.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 3

  •  
  •  
  •