grotto

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

Language
Go
Version
0.8.0
License
MIT
Category
Dev Tool

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

01

Reflection-based discovery — automatically discovers services and methods with permissive descriptor handling

02

Dual interaction modes — auto-generated forms with validation or direct JSON editing with bidirectional sync

03

Full streaming support — unary, server streaming, client streaming, and bidirectional RPCs

04

Smart optional fields — proto3 optional fields and single-member oneofs render as toggle checkboxes with proper field presence

05

Syntax-colored responses — JSON with color-coded keys/strings/numbers/booleans, copy (compact or pretty), and export to file

06

Well-known type widgets — native form controls for Timestamp, Duration, and FieldMask

07

Rich gRPC error details — surface field violations, debug info, and structured error metadata

08

TLS and mTLS — secure connections with configurable certificates and skip-verify option

09

Workspaces — save connections, selected methods, per-method request templates, and auto-connect on load

10

Request history — searchable history with replay and per-entry delete

11

Metadata inspection — send and view gRPC request and response headers

12

Preferences and persistence — preferences dialog, configurable RPC timeout, window state restore, schema versioning, log rotation

13

Keyboard shortcuts — full set documented in SHORTCUTS.md

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