home / skills / openclaw / skills / starlink

starlink skill

/skills/danfedick/starlink

This skill helps you control your Starlink dish locally, fetch status, GPS, connected devices, speed tests, and perform stow and unstow actions.

npx playbooks add skill openclaw/skills --skill starlink

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
2.6 KB
---
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

```bash
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:
```bash
starlink status
starlink status --json
```

### WiFi Clients
List devices connected to the Starlink router:
```bash
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:
```bash
starlink speedtest
starlink speedtest --json
```

Returns download/upload Mbps and latency.

### Stow/Unstow
Stow dish flat for transport or storage:
```bash
starlink stow           # stow
starlink stow --unstow  # unstow and resume
```

### Reboot
Reboot the dish:
```bash
starlink reboot
```

### Location
Get GPS coordinates (must be enabled in Starlink app → Settings → Advanced → Debug Data → "allow access on local network"):
```bash
starlink location
starlink location --json
```

## Output Formats

- **Default**: Human-readable colored output
- **--json**: JSON for scripting/parsing

Example JSON parsing:
```bash
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

Overview

This skill controls a Starlink dish via its local gRPC API on the local network. It exposes commands to inspect dish status, list WiFi clients, run speed tests, stow/unstow the dish, reboot, and retrieve GPS location. Outputs are available in human-friendly text or machine-readable JSON for automation. Use it when you need local troubleshooting, monitoring, or simple remote operations without the cloud app.

How this skill works

The skill talks to the dish at 192.168.100.1:9200 using Starlink’s local gRPC interface. It queries status metrics (uptime, SNR, latency, throughput, obstructions), enumerates connected WiFi clients with details, triggers speed tests, and issues control commands like stow, unstow, and reboot. Location access requires enabling local network debug data in the Starlink app. Results can be returned as colored text for humans or JSON for scripts.

When to use it

  • Check real-time dish health and connectivity metrics
  • List devices connected to the Starlink router and their signal info
  • Run a network speed test through the dish for troubleshooting
  • Stow the dish for transport or unstow to resume operation
  • Reboot the dish locally when remote cloud options are unavailable

Best practices

  • Be on the Starlink LAN or wired to the router so 192.168.100.1 is reachable
  • Enable location access in the Starlink app (Settings → Advanced → Debug Data) before requesting GPS
  • Use --json output for automation and piping into jq or other tools
  • Confirm ping to 192.168.100.1 before running commands that require connectivity
  • Avoid attempting device pause/unpause—those controls are cloud-only

Example use cases

  • Quick diagnostic: run status to check SNR, latency, and obstructions after signal loss
  • Inventory: list clients to identify an unknown device consuming bandwidth
  • Performance test: run speedtest and log JSON results to a monitoring system
  • Field prep: stow the dish before packing up a vehicle for transport
  • Recovery: reboot the dish locally when remote support is not accessible

FAQ

Can I control the dish remotely over the internet?

No. The skill only works on the local network; remote control requires network routing or cloud features from Starlink.

Why is location information empty?

Make sure location access is enabled in the Starlink app under Settings → Advanced → Debug Data → allow access on local network.