gRPC Client

Veyak includes a native, high-performance gRPC client powered by Rust and Tokio HTTP/2 transport. You can discover services dynamically using gRPC Server Reflection, inspect service and method descriptors, edit protobuf payloads in JSON, send custom metadata, and execute both unary and streaming invocations.


Key Features

  • Server Reflection — Automatically discover packages, services, and methods by providing a server address.
  • Protobuf Schemas — Compile and parse local .proto files with custom include paths.
  • Multiple Call Modes — Unary, Server Streaming, Client Streaming, and Bidirectional Streaming.
  • Metadata Management — Key-value editor for request and authorization headers.
  • Monaco JSON Editor — Syntax-highlighted request editor with schema type hints.
  • Response & Stream Viewer — Live message logging, latency timing, gRPC status badges (OK, UNAVAILABLE, NOT_FOUND, etc.), and copy actions.
  • Security & TLS — One-click toggle between plaintext (h2c) and TLS connections, with configurable SSL certificate verification.

Creating a gRPC Request

  1. In the sidebar, click the + button next to your collection.
  2. Select gRPC from the item creation menu.
  3. Enter a descriptive name for your request (e.g., Greeter / SayHello).
  4. The request will open in a dedicated gRPC editor tab with the cyan gRPC badge.

Discovering Services (Server Reflection)

The easiest way to work with gRPC services is via Server Reflection:

  1. In the address bar, enter your server host and port:
    grpcb.in:9000
    or for secure servers:
    grpc.postman-echo.com:443
  2. If your endpoint requires TLS, click the TLS toggle button to enable encryption.
  3. Click the Reflect button (or press Enter in the address bar).
  4. Veyak connects to the reflection service, queries available descriptors, and populates the Service and Method dropdowns.

Tip: If you are testing a local service with a self-signed TLS certificate, navigate to Settings (Ctrl+, or Cmd+,) and toggle off Validate SSL Certificates.


Local Proto Files

If your target gRPC server does not have reflection enabled, you can provide .proto definitions directly:

  • Import your .proto file and any directory dependencies.
  • Veyak compiles the descriptors on the fly using its embedded protobuf compiler engine in veyak-grpc.

Service & Method Selection

Once reflection completes or proto files are loaded:

  1. Service Selector — Choose the target service (e.g. helloworld.Greeter).
  2. Method Selector — Select the RPC method (e.g. SayHello).
  3. Veyak automatically displays:
    • Stream Type BadgeUnary, Server Stream, Client Stream, or Bidi Stream.
    • Type Info — Request type (e.g., HelloRequest) and response type (e.g., HelloReply).

Stream Types

Stream Type Description
Unary Single request message sent, single response message received.
Server Streaming Single request initiated, server streams multiple response messages over time.
Client Streaming Client sends a continuous stream of messages, server responds once.
Bidirectional Streaming Both client and server stream messages asynchronously over an active HTTP/2 channel.

Composing Messages

Under the Message tab in the request panel:

  • The editor utilizes Monaco configured for JSON representations of your protobuf messages.
  • Field types match your Protobuf definition:
    {
      "name": "Veyak User",
      "greeting_count": 1
    }
  • Use Shift+Alt+F to format your payload.
  • Environment variables like "token": "{{API_KEY}}" are supported in values.

gRPC Metadata

Switch to the Metadata tab to add custom key-value headers to the gRPC call:

Column Description
Enabled Toggle whether this header is included in the call.
Key Metadata header key (e.g. authorization, x-request-id).
Value Header value or variable placeholder (e.g. Bearer {{JWT_TOKEN}}).

Invoking the Call

Click the Invoke button:

  1. The status bar changes to Invoking… (or Streaming for streaming calls).
  2. The response appears in the right-hand panel:
    • Status BadgeOK (0), CANCELLED (1), UNKNOWN (2), INVALID_ARGUMENT (3), NOT_FOUND (5), UNAVAILABLE (14), etc.
    • Latency — Elapsed duration measured in milliseconds.
    • Direction Indicator — Sent messages (↑) and received messages (↓).
    • JSON Formatter — Auto-formatted response payload with a 1-click copy button.

To terminate an in-flight streaming call, click Cancel.


Keyboard Shortcuts

  • Cmd+Enter / Ctrl+Enter — Invoke active gRPC call.
  • Cmd+S / Ctrl+S — Save request configuration to your collection.