https://github.com/eitol/starlink-client
Starlink API client that allows you to manage your account and the device
https://github.com/eitol/starlink-client
api client grpc http router spacex starlink
Last synced: 5 months ago
JSON representation
Starlink API client that allows you to manage your account and the device
- Host: GitHub
- URL: https://github.com/eitol/starlink-client
- Owner: Eitol
- License: mit
- Created: 2024-06-26T15:28:31.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-09T18:00:33.000Z (12 months ago)
- Last Synced: 2025-07-29T02:51:33.568Z (6 months ago)
- Topics: api, client, grpc, http, router, spacex, starlink
- Language: Dart
- Homepage:
- Size: 2.48 MB
- Stars: 19
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Starlink Client Library Documentation
## Description
This library allows you to connect to the Starlink system in two ways:
- **Directly to Starlink on the local network**: This option is available if Starlink is accessible within the local network. No authentication is required to perform operations in this case.
- **Remotely via the Starlink API**: This requires authentication, and communication is done through gRPC-Web and REST.
Note: The starlink dish run a gRPC server on port 9200, but it is not exposed to the internet.

The .proto files were obtained from the antenna itself, using grpc-curl.
If you have an antenna and want to update the protos you can run
```bash
make extract_protos
```
To compile the prototypes to specific languages, connect was used
```bash
make generate
```
See: https://connectrpc.com/
## Supported Operations
- **Get Account Data**: Retrieve account information such as email, customer name, etc.
- **Get Device Location**: Obtain the location of the device. For precise real-time location, you need to be on the local network. Otherwise, you can get the H3 cell where the antenna is connected.
- **Get Network Stats**: Retrieve network statistics such as latency and current download speed.
- **Reboot the Dish**: Remotely reboot the Starlink dish.
- **Telemetry**: Retrieve telemetry data from the dish and router, including errors, warnings, etc.
- **Set Dish Config**: Set the dish configuration, such as snow melt mode, power saving mode, etc.
- **Get WiFi Status**: Get information about connected clients, SSID, etc.
- **Change WiFi Configuration**: Modify the SSID name, hide SSID, change passwords, enable bypass mode, etc.
You can use the predefined methods provided by the library for these operations or make direct calls using the `call` method with the Request and Response messages defined in the "proto" directory.
## Authentication
To extract the cookie from the browser, you need to log in from any browser and manually copy the cookie.
The cookie lasts for 15 days, but the library supports cookie refresh, which allows for longer use if the cookie is refreshed regularly. Simply use the library within 15 days, and it will save the refreshed cookie in a directory.
Note that some calls can be made via Stream instead of gRPC unary calls.
## Supported Client Libraries
The following languages are supported for client libraries:
- [x] [GO](https://github.com/Eitol/starlink-client/tree/main/libs/golang/client)
- [x] [Python](https://github.com/Eitol/starlink-client/tree/main/libs/python/starlink-client)
- [ ] Javascript
- [ ] Dart
- [ ] Java
- [ ] Kotlin
- [ ] Swift
### Legal
This project is not affiliated with SpaceX or Starlink. It is an independent project created by a fan of the service.