Skip to content

forde-dev/dishy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛰 Dishy — Starlink Terminal Monitor

A terminal UI dashboard that connects to your Starlink Dishy via gRPC and displays real-time metrics as live-updating charts.

Dishy Dashboard

Go

Features

  • Real-time monitoring — polls your dish every second for live metrics
  • Dynamic panels — add, remove, and rearrange panels on the fly
  • Fullscreen zoom — press Enter to expand any panel to full screen
  • Graph panels — downlink/uplink throughput, latency, drop rate, SNR, obstruction
  • Tabular panels — device info, network stats, connection event log
  • Adaptive grid — layout automatically reflows as panels are added/removed
  • Panel picker — press a to browse and add from 9 available panel types

Requirements

  • Go 1.21+
  • Network access to your Starlink Dishy (default: 192.168.100.1:9200)
  • Must be on the Starlink LAN (or have routed access to the dish)

Install

go install github.com/forde-dev/dishy@latest

Or build from source:

git clone https://github.com/forde-dev/dishy.git
cd dishy
go build -o dishy .

Usage

# Connect to dish at default address (192.168.100.1:9200)
./dishy

# Use environment variable for address
export DISHY_ADDR=192.168.100.1:9200
./dishy

# Custom address overrides environment variable
./dishy -addr 192.168.100.1:9200

# Custom polling interval
./dishy -interval 2s

Address resolution order:

  1. -addr flag (highest priority)
  2. DISHY_ADDR environment variable
  3. default 192.168.100.1:9200

Keyboard Controls

Key Action
q / Ctrl+C Quit
Tab Cycle focus to next panel
Shift+Tab Cycle focus to previous panel
Enter Toggle fullscreen zoom on focused panel
Esc Exit fullscreen / close picker
d Remove focused panel from dashboard
a Open panel picker to add a new panel
/k /j Navigate panel picker

Available Panel Types

Graph panels (sparkline charts):

Panel Metric Unit
Downlink Download throughput Mbps
Uplink Upload throughput Mbps
Latency PoP ping latency ms
Drop Rate Packet drop rate %
SNR Signal-to-noise ratio dB
Obstruction Dish obstruction %

Table panels:

Panel Content
Device Info HW/SW version, device ID, uptime, state
Network Stats Current throughput, latency, drop rate, SNR + drop rate sparkline
Connection Log Timestamped state changes, obstruction events, errors

Dashboard Layout

┌──────────────────────┐┌──────────────────────┐
│ ↓ Downlink (Mbps)    ││ ↑ Uplink (Mbps)      │
│  ▃▅▇█▆▅▃▂▅▇█▇▅▃      ││  ▂▃▄▅▃▂▁▂▃▄▅▄▃▂      │
│                      ││                      │
└──────────────────────┘└──────────────────────┘
┌──────────────────────┐┌──────────────────────┐
│ ⏱ Latency (ms)       ││ 📡 Device Info       │
│  ▂▃▂▂▃▄▃▂▂▃▂▂▃▂      ││ State    🟢 CONNECTED│
│                      ││ Uptime   2d 5h 30m   │
│                      ││ Software 2024.01.00  │
└──────────────────────┘└──────────────────────┘

Architecture

Starlink Dishy ◄──gRPC──► Collector (1s poll) ──► Ring Buffer ──► Bubble Tea TUI
  • gRPC Client — connects to the dish using community-maintained proto bindings
  • Collector — polls get_status at configurable intervals, stores in a fixed-size ring buffer (300 samples = 5 minutes), tracks connection events
  • TUI — Bubble Tea framework with dynamic panel system, adaptive grid layout, and picker overlay

Project Structure

dishy/
├── main.go                     # Entry point, CLI flags
├── internal/
│   ├── dish/
│   │   ├── client.go           # gRPC client for Dishy
│   │   └── metrics.go          # Metric types + ConnectionEvent
│   ├── collector/
│   │   └── collector.go        # Periodic polling, ring buffer, event log
│   └── ui/
│       ├── app.go              # Bubble Tea model + keybindings
│       ├── dashboard.go        # Panel rendering (graphs + tables)
│       ├── layout.go           # Adaptive grid layout engine
│       ├── panel.go            # Panel type definitions + catalog
│       └── styles.go           # Lip Gloss theme + picker styles
└── README.md

License

MIT

About

Starlink Terminal Monitor

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages