Choose over Twirp when you need gRPC interoperability, streaming, and active development while keeping Twirp-like HTTP simplicity.
The Go implementation of Connect: Protobuf RPC that works.
- 4.1k
- Go
- Apache-2.0
protobuf RPC / service-to-service communication
Twirp is a Go RPC framework that generates lightweight server/client code from Protocol Buffer service definitions and runs over standard HTTP with JSON support as a simpler alternative to gRPC.
Same problem, same approach. Swapping one for another is a config change, not a rewrite.
Choose over Twirp when you need gRPC interoperability, streaming, and active development while keeping Twirp-like HTTP simplicity.
The Go implementation of Connect: Protobuf RPC that works.
Solves the same problem with a different architecture or at a different layer. Expect to rewrite the integration.
Use when you need a high-performance, feature-rich Go microservice RPC framework with protobuf/thrift and service governance, at the cost of much greater complexity than Twirp.
Go RPC framework with high-performance and strong-extensibility for building micro-services.
Choose for Apache Dubbo-compatible Go services with mature microservice capabilities and protobuf support when Dubbo integration outweighs Twirp's minimalism.
Go Implementation For Apache Dubbo .
Pick for a lightweight Go RPC framework over a custom streaming protocol when you don't need HTTP/1.1 JSON debuggability and want lower overhead than gRPC.
drpc is a lightweight, drop-in replacement for gRPC
Use when the RPC service is written in Elixir and you prefer gRPC over HTTP/2 rather than Twirp's HTTP/1.1 design.
An Elixir implementation of gRPC
Use for TypeScript services/clients when you want Connect/gRPC interoperability with a Twirp-like API, rather than calling a Go Twirp server directly.
The TypeScript implementation of Connect: Protobuf RPC that works.
An earlier or more limited way to do the job. Still the right call when you need something small, proven, or CPU-only.
An archived legacy Rust gRPC implementation; choose only for maintaining an old Rust gRPC stack, not for new work where Twirp or current Rust alternatives fit.
Rust implementation of gRPC
These projects were analysed and named twirp among their alternatives. The relationship is not symmetric — how twirp rates them is a separate judgement, made when twirp is analysed in its own right.
calls twirp “choose it for a simple HTTP-based protobuf RPC with less moving parts, if you accept no recent maintenance.”
Go RPC framework with high-performance and strong-extensibility for building micro-services.