Skip to main content

Troubleshooting

Common symptoms and how to resolve them. For the underlying model, see Error handling.

Installation

pip install / npm install can't find the package. The SDK is served from the Buf Schema Registry, not the default registries. Make sure you pointed your package manager at the BSR — the --extra-index-url for pip, or the @buf registry line in .npmrc for npm. See Install.

buf generate fails for C++. Confirm the buf CLI is installed and your buf.gen.yaml matches the example in Install. Generation pulls plugins remotely, so it needs network access to the BSR — for air-gapped builds, vendor the generated code (see Robust streaming).

Authentication and connection

Calls fail with UNAUTHENTICATED. The token is missing, expired, or invalid. Check PLATFORM_TOKEN is set and current, and that it is attached to the channel as call credentials. See Authenticate.

TLS / certificate verification errors. The endpoint is likely on a private network with a self-signed certificate. Supply the vessel's CA certificate to the channel — see Connecting to a vessel.

Calls fail with UNAVAILABLE. The endpoint is unreachable: check the host:port, network reachability to the vessel, and that the deployment is up. This is transient — retry with backoff.

Calls fail with NOT_FOUND. The vessel_id isn't served by this endpoint. Confirm the IDs your endpoint serves through your engagement — see Connecting to a vessel.

Calls and streams

A command returned without error, but the vessel didn't act. A command RPC returning is only delivery. Check the success/message on the response, and watch the matching state stream to confirm the effect. See Error handling.

A stream stops emitting after a while. Links drop. Wrap streams in the reconnect-with-backoff pattern so they re-open automatically and re-converge on the current value — see Streaming and reconnection.

An optional field reads as a default/zero value. Fields that may be unavailable are declared optional. Check presence (msg.HasField("range") in Python) before reading them, rather than trusting a 0.

Still stuck?

Reach out through your Greenroom engagement channel with the failing call, the gRPC status code or message, and the schema version you've pinned.