A web UI for gRPC servers, in the style of Postman or grpcui. Easily self-hosted, works with any gRPC service that supports reflection. Schemas can be imported from the Buf Schema Registry if reflection service is not supported / 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 stub export: grpcurl, curl/REST, TypeScript, Go, Python -- includes current params, metadata, and auth
- Optional base64/binary response inspection that parses decoded JSON when present, preserving original response JSON for copy and save actions
- REST path mapping from
google.api.httpannotations - Search by namespace, service, or method
- Cosmos SDK chain registry integration
docker compose -f deployment/docker-compose.yml up -dNode.js 20+.
yarn install
yarn build:prod
yarn start:prodRuns on first 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 preserves the original purpose of this application as an entirely separate operating mode. Either search / select a chain to pull any registered gRPC endpoints from cosmos/chain-registry, or enter a valid, reflection-enabled gRPC endpoint to generate the available method descriptors, make requests, and more. Supports multi-endpoint selection for round-robin execution. Endpoints are DNS-validated only.
Services are listed by namespace in the left source/network 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 |
Open connection dialog |
Cmd/Ctrl+W |
Close tab |
Cmd/Ctrl+Enter |
Execute |
Cmd/Ctrl+Shift+? |
Shortcut help |
Basic UI / UX preferences:
- Theme (Light, Dark, 8-bit Retro, System)
- Default mode (Generic / Cosmos)
- Service discovery timeout (1s--60s, default 10s)
- Auto-collapse panels
- Cache TTL (None / 1hr / 6hr / 24hr / 36hr / 72hr / Never)
| 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 plus bounded gRPC reflection qualification |
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 2MIT