starlink
// Control Starlink dish via local gRPC API. Get status, list WiFi clients, run speed tests, stow/unstow dish, reboot, and get GPS location. Use when the user asks about Starlink, internet status, connected devices, or satellite connectivity.
Starlink CLI
Control your Starlink dish from the command line via its local gRPC API at 192.168.100.1:9200.
Installation
cargo install --git https://github.com/danfedick/starlink-cli
Requires Rust and protoc (Protocol Buffers compiler).
Commands
Status
Get dish state, uptime, SNR, latency, throughput, obstructions:
starlink status
starlink status --json
WiFi Clients
List devices connected to the Starlink router:
starlink clients
starlink clients --json
Output includes: name, MAC, IP, signal strength, interface (2.4GHz/5GHz/ETH), connection time.
Speed Test
Run a speed test through the dish:
starlink speedtest
starlink speedtest --json
Returns download/upload Mbps and latency.
Stow/Unstow
Stow dish flat for transport or storage:
starlink stow # stow
starlink stow --unstow # unstow and resume
Reboot
Reboot the dish:
starlink reboot
Location
Get GPS coordinates (must be enabled in Starlink app → Settings → Advanced → Debug Data → "allow access on local network"):
starlink location
starlink location --json
Output Formats
- Default: Human-readable colored output
- --json: JSON for scripting/parsing
Example JSON parsing:
starlink status --json | jq '.latency_ms'
starlink clients --json | jq '.[] | .name'
Requirements
- Connected to Starlink network
- Dish reachable at
192.168.100.1:9200 - For location: enable in Starlink app first
Troubleshooting
"Failed to connect to Starlink dish"
- Verify you're on the Starlink WiFi or wired to the router
- Check:
ping 192.168.100.1 - If using bypass mode with your own router, ensure 192.168.100.1 is still routable
Location returns empty
- Enable in Starlink app: Settings → Advanced → Debug Data → "allow access on local network"
Limitations
- Device pause/unpause is NOT available (cloud-only feature via Starlink app)
- Only works on local network, not remotely