// grpc
gRPC
Resonance speaks gRPC natively, with server reflection so you can explore a service without hunting down its .proto files. Everything runs locally through the Rust backend.
What It Does
- Discovers services and methods automatically via gRPC server reflection
- Supports all four RPC kinds: unary, server-streaming, client-streaming, and bidirectional streaming
- Connects over plaintext or TLS
- Sends request metadata (headers) and shows response metadata and trailers
- Edits messages as JSON, with skeletons generated from the method’s schema
- Loads
.protofiles directly when reflection isn’t available — noprotocinstallation needed
Connecting to a Server
- Create a gRPC request — the panel switches to gRPC mode
- Enter the server address as
host:port, e.g.localhost:50051 - Enable TLS for secure servers
- Fetch the service list via reflection, or load a
.protofile directly - Pick a service and method — the message editor populates with a JSON skeleton
Using .proto Files
- In the Proto file card, click Load .proto and pick the file
- Resonance compiles it inside the app — you don’t need
protoc. Google’s well-known types such asgoogle/protobuf/timestamp.protoare built in - If the file imports definitions from another folder (for example a
googleapischeckout), click Add import path and pick that folder. The button is also offered after a failed load, and the file is reloaded with the new path - The file and its import paths are saved with the request, so reopening it resolves the same imports
RPC Kinds
The method kind is shown as a badge next to the selected method. Each kind behaves differently once you send:
- Unary — one request, one response. Click Send; Cancel (or
Esc) aborts a slow call. The deadline follows the request timeout in Settings, and the response stays in the tab that sent it even if you switch tabs meanwhile - Server-streaming — one request, a stream of responses appended to the transcript as they arrive
- Client-streaming — send several messages, then close the stream to receive the single response
- Bidirectional — send and receive concurrently; the transcript shows both directions
While a stream is open, the button next to Send reads Disconnect; click it or press Esc to end the stream.
Metadata, Messages & Trailers
- Add key-value metadata (the gRPC equivalent of headers) to the outgoing call
- Edit the request message as JSON — the skeleton mirrors the message’s fields
- Response metadata and trailers appear in their own response tabs
Troubleshooting
Method discovery is empty
- The server must have the gRPC reflection service enabled
- If reflection is unavailable, load the service’s
.protofile instead
A .proto file fails to load
- The error names the import that could not be found — add the folder that contains it with Add import path
TLS handshake fails
- Confirm the TLS toggle matches the server (plaintext vs. secure)
- For private or self-signed CAs, configure custom CA trust in the certificate settings
Next Steps
- Getting Started — environments and variables you can reuse in metadata
- WebSocket — another persistent, streaming transport