// 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 .proto files directly when reflection isn’t available — no protoc installation needed

Connecting to a Server

  1. Create a gRPC request — the panel switches to gRPC mode
  2. Enter the server address as host:port, e.g. localhost:50051
  3. Enable TLS for secure servers
  4. Fetch the service list via reflection, or load a .proto file directly
  5. Pick a service and method — the message editor populates with a JSON skeleton

Using .proto Files

  1. In the Proto file card, click Load .proto and pick the file
  2. Resonance compiles it inside the app — you don’t need protoc. Google’s well-known types such as google/protobuf/timestamp.proto are built in
  3. If the file imports definitions from another folder (for example a googleapis checkout), 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
  4. 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 .proto file 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