| Crates.io | starlink-grpc-client |
| lib.rs | starlink-grpc-client |
| version | 0.4.1 |
| created_at | 2025-05-15 14:31:10.14666+00 |
| updated_at | 2025-05-17 17:42:49.923678+00 |
| description | A safe, async, type-safe client for querying Starlink Gen 3 Dishy via gRPC. |
| homepage | https://github.com/andywwright/starlink-grpc-client |
| repository | https://github.com/andywwright/starlink-grpc-client |
| max_upload_size | |
| id | 1675185 |
| size | 482,832 |
A safe, async, and type-safe Rust client for querying status information from a Starlink Gen 3 Dishy via gRPC
thiserrorCargo.toml[dependencies]
starlink-grpc-client = "0.4.1"
tokio = "1.45.0"
(or whatever the last version is)
use starlink_grpc_client::client::DishClient;
#[tokio::main]
async fn main() {
let mut client = DishClient::connect("http://dishy.starlink.com:9200")
.await
.expect("Failed to connect to Dish");
let status = client.get_status()
.await
.expect("Failed to fetch dish status");
println!("{:#?}", status);
}
✅ See working examples in usage.rs, stream.rs and with simple charts
| Method | Signature | Description |
|---|---|---|
| connect | pub async fn connect(endpoint: &str) -> Result<Self, DishError> |
Create a new client by dialing the given URL. |
| get_status | pub async fn get_status(&mut self) -> Result<DishStatus, DishError> |
Perform a single, unary status RPC. |
| stream_status | pub async fn stream_status(&mut self) -> Result<impl Stream<Item = Result<DishStatus, DishError>>, DishError> |
Poll getStatus once per second, silently. |
| stream_status_logged | pub async fn stream_status_logged(&mut self) -> Result<impl Stream<Item = Result<(DishStatus, Duration), DishError>>, DishError> |
Poll with outbound logs and true RTT measurement. |
Clone the repository and build:
git clone https://github.com/andywwright/starlink-grpc-client.git
cd starlink-grpc-client
cargo build
If you change the .proto files and need to regenerate the Rust bindings, use the build-protos feature:
cargo build --features build-protos
proto_bindings.When to use this:
.proto definitions.When not needed:
protoc.This project follows Semantic Versioning 2.0.0:
Current Version: 0.1.0 (Developer Preview)
MIT License. See LICENSE for details.