ghz
ghz.sh
What it is
ghz is a command-line utility and Go package for load testing and benchmarking gRPC services, including local debugging and performance regression checks in CI. Tests can define a service with a.proto file, a compiled protoset bundle, or server reflection, and exercise unary, streaming, or duplex calls using JSON or binary data. Load schedules include constant, step, and linear request rates. Go templates can generate request data and metadata for each call using values such as worker ID, request number, method name, and timestamps. The CLI can emit summary, CSV, JSON, pretty JSON, HTML, Prometheus text exposition, and InfluxDB line protocol results. Documentation also covers InfluxDB output, Prototool, and prebuilt Grafana dashboards. The complementary ghz-web application is labeled beta; it stores reports in projects for viewing and comparison over time, and supports SQLite, MySQL, or PostgreSQL storage. It accepts reports through ingest endpoints. The project is identified as Apache-2.0 licensed. Installation options include prebuilt executables, Homebrew, and building from source. The CLI is listed at free; the web companion is beta.
Spec sheet
- Purpose
- ghz is a command line utility and Go package for load testing and benchmarking gRPC services, including local debugging and performance regression testing in automated CI environments.Read 4 Oct 2026 · ghz.sh
- API
- ghz-web provides ingest endpoints for raw JSON reports, including an endpoint that creates a project automatically.Read 4 Oct 2026 · ghz.sh
- Integrations
- The documentation includes prebuilt Grafana dashboards and describes InfluxDB output and use with Prototool.Read 4 Oct 2026 · ghz.sh
- Support
- The site links to the guide, Go documentation, GitHub repository, and a community support link labeled “Say Thanks!”.Read 4 Oct 2026 · ghz.sh
- License
- The GitHub repository identifies the project license as Apache-2.0.Read 4 Oct 2026 · github.com
- Call types
- The maker says ghz can test unary, streaming, and duplex calls using JSON or binary data.Read 4 Oct 2026 · ghz.sh
- Custom request data
- Request data and metadata can use Go template actions evaluated for every request, with variables such as worker ID, request number, method name, and timestamps.Read 4 Oct 2026 · ghz.sh
- Dynamic data
- Go templates and template functions can generate request data and metadata for each request.Read 4 Oct 2026 · ghz.sh
- Ingest API
- The web server provides POST /api/ingest to create a project and ingest a report, or POST /api/projects/:id/ingest to add a report to an existing project.Read 4 Oct 2026 · ghz.sh
- Installation
- The maker documents downloadable operating-system binaries, Homebrew, source builds, and Docker installation.Read 4 Oct 2026 · github.com
- Load patterns
- Load options include constant, step, and linear request rates.Read 4 Oct 2026 · ghz.sh
- Load schedules
- Load can use constant, step, or line schedules to control request rates.Read 4 Oct 2026 · ghz.sh
- Output formats
- Results can be emitted as summary, CSV, JSON, pretty JSON, HTML, Prometheus text, or InfluxDB line protocol.Read 4 Oct 2026 · ghz.sh
- Pricing and trial
- The maker's opened pages describe ghz as a complementary tool and do not state a price or trial offer.Read 4 Oct 2026 · ghz.sh
- Protocol definitions
- Tests can use a .proto file, a compiled protoset bundle, or server reflection.Read 4 Oct 2026 · ghz.sh
- Protocol inputs
- ghz can use a proto file, a prebuilt protoset bundle, or server reflection.Read 4 Oct 2026 · ghz.sh
- Report formats
- The CLI documents summary, CSV, HTML, JSON, Prometheus text exposition, and InfluxDB line protocol output formats.Read 4 Oct 2026 · ghz.sh
- RPC patterns
- ghz supports unary, streaming, and duplex calls using JSON or binary data.Read 4 Oct 2026 · ghz.sh
- Security options
- The CLI documents CA certificates, client certificates and keys, server-name override, and options to skip TLS verification or use plaintext connections.Read 4 Oct 2026 · github.com
- Self-hosted storage
- ghz-web supports SQLite, MySQL, and PostgreSQL databases and can be configured with environment variables or a YAML, TOML, or JSON file.Read 4 Oct 2026 · ghz.sh
- Web application
- The beta ghz-web companion stores, displays, compares, and tracks test results over time.Read 4 Oct 2026 · ghz.sh
- Web companion
- ghz-web is a complementary server and web application for storing, viewing, and comparing ghz test results; the maker labels it beta.Read 4 Oct 2026 · ghz.sh
- Web report status
- Reports and projects have OK or FAIL status, and a project reflects the status of its latest report.Read 4 Oct 2026 · ghz.sh
- Web result tracking
- ghz-web groups individual test reports into projects so results can be tracked, analyzed, and compared over time.Read 4 Oct 2026 · ghz.sh
- Web server installation
- ghz-web is distributed as a prebuilt executable for the user's operating system and can be configured with environment variables or a configuration file.Read 4 Oct 2026 · ghz.sh
Plans and prices
Strong points and limits
Strong points
- Tests unary, streaming, and duplex calls
- Supports server reflection for protocol inputs
- Offers constant, step, and linear load schedules
- Produces several report and monitoring formats
- Supports SQLite, MySQL, and PostgreSQL in ghz-web
Limits
- ghz-web is labeled beta
- ghz-web requires self-hosted deployment
- No price or trial offer is stated for ghz-web
Who it suits
ghz suits developers who need gRPC load tests from a CLI or Go code, with output formats for reports and monitoring systems. ghz-web may suit those who want to group and compare test reports, provided they are comfortable with a beta self-hosted companion.
Verdict
ghz provides flexible gRPC testing inputs, call patterns, and reporting outputs at free. Treat ghz-web as a beta companion rather than an established production component.
Where Specifiction places it
- gRPC Tools#2 of 248.7