grotto

Native macOS gRPC client with a permissive, user-friendly GUI

Go v0.8.0 MIT
View on GitHub

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

grotto terminal demo

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

Launch grotto
$ grotto
Launch with debug logging
$ GROTTO_DEBUG=true grotto
Use a custom storage directory
$ GROTTO_STORAGE_PATH=~/my-workspaces grotto