Terminal API client that stores HTTP, GraphQL, gRPC, WebSocket and SSE requests as plain .http files you can version in git.
fullstorydev/grpcurl
A command-line tool for calling gRPC servers, like curl but using JSON input over gRPC, with schema discovery via server reflection or proto files.
Open-source alternative to:Postman
- Stars
- 12,861
- Forks
- 589
- Open issues
- 121
- Last commit
- 9 days ago
What is it?
grpcurl lets you invoke RPC methods on gRPC servers from the command line. Because gRPC uses binary protocol buffers on the wire, ordinary curl cannot talk to these servers. grpcurl accepts request bodies as JSON, converts them to protobuf, and prints responses back in readable form.
The tool discovers service schemas in three ways: by querying a server that supports gRPC server reflection, by reading .proto source files, or by loading compiled protoset files. It handles unary and streaming methods, including bidirectional streams driven interactively from a terminal. It works with both TLS and plain-text servers, including mutual TLS with client certificates.
Beyond the CLI, the repository provides a Go library package with helpers for building other tools that dynamically invoke gRPC endpoints.
Key features
- 01Sends JSON request bodies and converts them to protobuf automatically.
- 02Supports unary, server-streaming, client-streaming and bidirectional-streaming methods.
- 03Discovers schemas via server reflection, .proto files, or protoset files.
- 04Supports plain-text, TLS and mutual TLS connections.
- 05Lists services and describes symbols, and can export proto or protoset files.
Use cases
- Debugging a gRPC service by sending test requests from the terminal.
- Scripting gRPC calls in shell pipelines, for example with jq generating request bodies.
- Exploring an unfamiliar gRPC API by listing its services and methods.
- Building internal tools that invoke gRPC endpoints dynamically through the Go library.
Quick start
- 1
Install grpcurl on macOS with Homebrew
brew install grpcurl - 2
Or install from source with the Go toolchain
go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest - 3
List services on a server that supports reflection
grpcurl localhost:8787 list
Things to know
- Requires a gRPC server for invocation; server reflection, proto files, or protoset files are needed to understand the schema.
Topics
FAQ
- What is grpcurl?
- A command-line tool for calling gRPC servers, like curl but using JSON input over gRPC, with schema discovery via server reflection or proto files. grpcurl lets you invoke RPC methods on gRPC servers from the command line. Because gRPC uses binary protocol buffers on the wire, ordinary curl cannot talk to these servers. grpcurl accepts request bodies as JSON, converts them to protobuf, and prints responses back in readable form.
- Is grpcurl free to use? What license does it have?
- grpcurl is open source under the MIT license. Check the license terms before using it in commercial products.
- Is grpcurl still maintained?
- Actively maintained. The last commit to grpcurl was on Oct 13, 2026.
- What can I use grpcurl for?
- Debugging a gRPC service by sending test requests from the terminal. Scripting gRPC calls in shell pipelines, for example with jq generating request bodies. Exploring an unfamiliar gRPC API by listing its services and methods. Building internal tools that invoke gRPC endpoints dynamically through the Go library.
- How do I install grpcurl?
- Install grpcurl on macOS with Homebrew: brew install grpcurl Or install from source with the Go toolchain: go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest List services on a server that supports reflection: grpcurl localhost:8787 list
- Where can I get grpcurl?
- The source code and installation instructions are on GitHub: https://github.com/fullstorydev/grpcurl
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Hurl is a command line tool that runs and tests HTTP requests written in a plain text file format.
A friendly, fast command-line HTTP client that reimplements much of HTTPie's syntax with better startup performance.
A CLI and HTTP server that turns OpenAPI v2/v3 and Postman Collection files into mock APIs with request validation and a validation proxy.
A terminal (TUI) HTTP client that defines and runs REST requests from version-controllable YAML collections.
A terminal-based HTTP API client, an alternative to Postman and Insomnia, with requests stored as plain YAML files.