- name
- starlink
- version
- 1.0.0
- description
- 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.
- homepage
- https://github.com/danfedick/starlink-cli
- metadata
- {"clawdbot":{"emoji":"📡","requires":{"bins":["starlink"]},"install":[{"id":"cargo","kind":"cargo","git":"https://github.com/danfedick/starlink-cli","bins":["starlink"],"label":"Install starlink-cli (cargo)"}]}}
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-cliRequires Rust and protoc (Protocol Buffers compiler).
Commands
Status
Get dish state, uptime, SNR, latency, throughput, obstructions:
starlink status
starlink status --jsonWiFi Clients
List devices connected to the Starlink router:
starlink clients
starlink clients --jsonOutput 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 --jsonReturns download/upload Mbps and latency.
Stow/Unstow
Stow dish flat for transport or storage:
starlink stow # stow
starlink stow --unstow # unstow and resumeReboot
Reboot the dish:
starlink rebootLocation
Get GPS coordinates (must be enabled in Starlink app → Settings → Advanced → Debug Data → "allow access on local network"):
starlink location
starlink location --jsonOutput 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
Source
https://github.com/danfedick/starlink-cli