Starlink
Verified@danfedick
npx machina-cli add skill @danfedick/starlink --openclawStarlink 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
Source
Overview
This skill lets you interrogate and manage a Starlink dish over its local gRPC API. You can get dish status, see connected WiFi clients, run speed tests, stow/unstow the dish, reboot, and fetch GPS location. It’s useful for diagnosing internet status, device connectivity, and satellite link details on a local network.
How This Skill Works
The Starlink CLI communicates with the dish over the local network using gRPC at 192.168.100.1:9200. It exposes commands for status, clients, speedtest, stow/unstow, reboot, and location, with optional --json output for scripting and automation.
When to Use It
- To check overall internet health and uptime on the Starlink dish
- To audit devices connected to the Starlink router and their signal strength
- To verify throughput and latency with a speed test
- To physically prepare the dish for transport by stowing or unstowing
- To obtain GPS coordinates for satellite visibility or troubleshooting (when enabled in the Starlink app)
Quick Start
- Step 1: Install starlink-cli (cargo) from the GitHub repo: cargo install --git https://github.com/danfedick/starlink-cli
- Step 2: Ensure you're connected to the Starlink network and the dish is reachable at 192.168.100.1:9200
- Step 3: Run commands such as 'starlink status' and 'starlink location --json' (use --json for scripting)
Best Practices
- Only run commands while on the Starlink network to ensure the API is reachable
- Use the --json flag when scripting to parse results reliably
- Test status before running bandwidth tests to establish a baseline
- Enable local network access for GPS data in the Starlink app if you plan to fetch location
- Keep the dish reachable at 192.168.100.1:9200 and avoid bypass configurations that block local routes
Example Use Cases
- Check current internet status and uptime after a drop
- Identify which devices are connected to the Starlink router and their signal strength
- Measure real-time download and upload speeds from the Starlink link
- Prepare the dish for transport by issuing a stow command
- Fetch GPS location for satellite alignment or troubleshooting