finds.dev← search

// the find

twitchtv/twirp

★ 7,528 · Go · Apache-2.0 · updated Aug 2024

A simple RPC framework with protobuf service definitions

Twirp is a Go framework that generates routing, serialization, and clients from protobuf service definitions, and serves them on the standard library's net/http server instead of gRPC's custom transport. It suits Go teams making internal service-to-service calls who want typed contracts without HTTP/2 or a separate server stack.

Because it sits on net/http, services work with ordinary middleware, HTTP/1.1 load balancers, and standard debugging tools, and JSON encoding lets you curl an endpoint during development. Errors use a small fixed set of codes that map onto HTTP statuses, so clients in different languages handle failures the same way. Hooks and interceptors cover metrics and logging without touching handler code, and the repo ships a statsd hook as a working example.

It is unary only. There is no streaming RPC, so anything needing server push or long-lived bidirectional streams has to go to gRPC or a different design. The last push was 2024-08-05, more than two years ago. The README build badge still points at travis-ci.org, and the repo still carries Gopkg files and a vendored _tools tree from the dep and retool era, so check the current release state before adopting it. The cross-language table mixes actively maintained projects with one-person ones, and the README does not say which is which.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →