gRPC Reflection

gRPC reflection lets a client inspect services and message types without a local proto file. Use it for development checks and service exploration. Keep the published proto files in your application build because production clients should not depend on reflection.

Check a service

Pass your API key as metadata.

bash
export NODE_API_KEY="YOUR_API_KEY"

grpcurl \
  -H "x-api-key: ${NODE_API_KEY}" \
  geyser.sol.cubestech.online:443:443 \
  list

Inspect one service after the list command succeeds.

bash
grpcurl \
  -H "x-api-key: ${NODE_API_KEY}" \
  geyser.sol.cubestech.online:443:443 \
  describe geyser.Geyser

Run the same service-list check against streams.sol.cubestech.online:443:443 for Enhanced Streams and events.sol.cubestech.online:443:443 for Program Streams.

If reflection is unavailable

Use the published definitions:

  • Enhanced Streams proto
  • Enhanced Streams descriptor set
  • Program Streams proto
  • Program Streams descriptor set

The descriptor sets include imported definitions. Tools such as grpcurl, Buf, and language generators read them without contacting a reflection service.

Deployment check

Run the repository reflection audit after each gRPC deployment.

bash
NODE_API_KEY="YOUR_API_KEY" npm run audit:grpc-reflection

The check fails when a documented endpoint stops exposing its service list.