A web UI for gRPC servers, in the style of Postman or grpcui. Easily self-hosted, and works with any gRPC servive over server reflection. Schemas can also be imported from the Buf Schema Registry if reflection service is not exposed.
Requests proxy through Next.js API routes using @grpc/grpc-js. Deploys to
Vercel as-is or self-host via Docker / Node.js.
- Server reflection (v1/v1alpha, auto-detected) and BSR schema import
- Multiple simultaneous connections, color-coded
- Request forms generated from protobuf definitions (nested messages, repeated fields, enums, maps, all scalar types)
- Auth: Bearer tokens, API keys, mTLS
- Code export: grpcurl, curl/REST, TypeScript, Go, Python -- includes current params, metadata, and auth
- REST path mapping from
google.api.httpannotations - Round-robin endpoints, DNS validation, automatic blacklisting on failure, TLS auto-retry
- Search by namespace, service, or method
- Client-side caching (configurable TTL, localStorage)
- Execution history with timing
- Keyboard shortcuts
- Light/Dark/Retro themes
- Optional Cosmos SDK chain registry integration (100+ chains)
docker compose -f deployment/docker-compose.yml up -dNode.js 20+.
yarn install
yarn build:prod
yarn start:prodAuto-detects an available port starting at 3000.
yarn install
yarn devSee deployment/README.md for systemd and other deployment options.
Cmd/Ctrl+N opens the connection dialog. Two modes:
Generic gRPC (default) has two tabs:
-
Endpoint -- enter
host:port, configure TLS and optional auth (Bearer, API key, or mTLS). Discovers services via reflection. -
buf.build -- search BSR modules by org or browse popular ones. Pick a module and version, provide an execution endpoint. Private modules supported with auth token.
Cosmos SDK -- searchable chain registry. Select a chain to pull its gRPC endpoints from cosmos/chain-registry. Supports multi-endpoint selection for round-robin. Endpoints are DNS-validated before use.
Both modes show recently used connections.
Services are listed by namespace in the left panel. The search bar filters across namespaces, services, and methods.
Select a method to get a generated form. Fill in fields, hit Execute
(Cmd/Ctrl+Enter). The right panel shows:
- Proto -- request/response type definitions
- Code -- client stubs in 5 languages (snippet or full scaffold)
- Results -- response JSON, timing, status
| Shortcut | Action |
|---|---|
Cmd/Ctrl+N |
Add network |
Cmd/Ctrl+W |
Close tab |
Cmd/Ctrl+Enter |
Execute |
Cmd/Ctrl+/ |
Focus search |
Cmd/Ctrl+Tab |
Next tab |
Cmd/Ctrl+Shift+Tab |
Previous tab |
Cmd/Ctrl+Shift+E |
Export params |
Cmd/Ctrl+Shift+I |
Import params |
Cmd/Ctrl+Shift+? |
Shortcut help |
Gear icon in the menu bar:
- Theme (Light, Dark, 8-bit Retro, System)
- Default mode (Generic / Cosmos)
- Request timeout (1s--60s, default 10s)
- Auto-collapse panels
- Cache TTL (None / 1hr / 6hr / 24hr / 36hr / 72hr / Never)
Browser (JSON) --> Next.js API Routes --> gRPC Server (protobuf/HTTP2)
| Route | Purpose |
|---|---|
POST /api/grpc/services |
Service discovery via reflection |
POST /api/grpc/execute |
RPC invocation |
POST /api/grpc/descriptor |
Lazy-load service field definitions |
POST /api/grpc/validate-endpoints |
DNS validation |
POST /api/grpc/test-compatibility |
Bulk method testing |
GET /api/bsr/modules |
BSR module search |
POST /api/bsr/descriptor |
Fetch FileDescriptorSet from BSR |
GET /api/chains |
Cosmos chain registry |
Custom implementation on @grpc/grpc-js and protobufjs. Supports v1 and
v1alpha with auto-detection. Recursively resolves nested type dependencies
(depth limit 50). Cosmos chains also try v2alpha1 for faster service enumeration.
Tracks per-endpoint health: success/failure counts, response times. Blacklists after 5 consecutive failures (recovers after 3 successes or 1 hour). Retries without TLS on SSL errors.
| Variable | Default |
|---|---|
PORT |
3000 |
NEXT_TELEMETRY_DISABLED |
1 (prod build) |
yarn test # Unit tests (vitest)
yarn test:watch # Watch mode
yarn test:coverage # Coverage
# Integration (needs dev server running)
yarn dev # Terminal 1
yarn test:grpc # Terminal 2Connection failures: Endpoint format is host:port, no protocol prefix.
Port 443 usually needs TLS on; other ports usually need it off. The UI warns
on mismatches and retries without TLS on SSL errors.
No services: Server must support reflection, or import from BSR. No
.proto / protoset support.
BSR issues: Module path is owner/repository. Version defaults to main.
Private modules need an auth token.
Stale data: Check cache TTL in settings, or clear via the menu bar cache indicator.
Unreachable endpoints: DNS validation runs before connecting. If all endpoints fail, verify the server has outbound access to the gRPC ports (typically 9090, 443).
MIT