grotto
Native macOS gRPC client with a permissive, user-friendly GUI
A desktop gRPC client built with Go and Fyne that discovers services via reflection and lets you explore APIs through auto-generated forms or direct JSON editing. Features syntax-colored JSON responses, smart optional field handling, and full streaming support across all four gRPC modes. Ships as a native macOS app with workspaces, request history, TLS/mTLS, metadata inspection, and keyboard shortcuts.
Preview
Features
Reflection-based discovery — automatically discovers services and methods with permissive descriptor handling
Dual interaction modes — auto-generated forms with validation or direct JSON editing with bidirectional sync
Full streaming support — unary, server streaming, client streaming, and bidirectional RPCs
Smart optional fields — proto3 optional fields and single-member oneofs render as toggle checkboxes with proper field presence
Syntax-colored responses — JSON output with color-coded keys, strings, numbers, and booleans, plus copy to clipboard
Well-known type widgets — native form controls for Timestamp, Duration, and FieldMask
TLS and mTLS — secure connections with configurable certificates and skip-verify option
Workspaces — save and load connections, selected methods, and request data with per-item management
Request history — track and replay previous requests
Metadata inspection — send and view gRPC request and response headers
Install
Homebrew
$ brew install shhac/tap/grotto Build from Source
$ git clone https://github.com/shhac/grotto.git && cd grotto && go build -o grotto ./cmd/grotto Usage
$ grotto $ GROTTO_DEBUG=true grotto $ GROTTO_STORAGE_PATH=~/my-workspaces grotto