
Connect-Rust
https://github.com/anthropics/connect-rust- Category
- Developer Tools
- Rank
- No. 772Tools index
Previous survey · No. 760 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- anthropics
- GitHub
- 509 stars
- Latest release
- v0.9.0
- Date
About
Rust implementation of the ConnectRPC protocol for building HTTP-based RPC services.
What it does
Connect-Rust turns protobuf service definitions into typed Rust servers and clients. Its Tower-based runtime accepts Connect, gRPC, and gRPC-Web traffic, supports binary and JSON messages, and handles unary plus streaming calls through one service registration.
Why it's ranked here
The runtime covers three related protocols and all four RPC shapes, while remaining compatible with Tower-based HTTP stacks. Its strongest credibility signal is passing the full ConnectRPC conformance suite. The verdict remains qualified because the public API is explicitly pre-1.0 and may change during minor releases.
What's good
Teams can generate service traits, clients, and message types either during Cargo builds or as checked-in output through Buf. Feature flags separate client, server, TLS, JSON, compression, streaming, and Axum support. Standard health checking and server reflection are supplied as companion crates. Borrowed request views can avoid copying string data from request buffers.
Tradeoffs
The minimum supported compiler is Rust 1.88 with the 2024 edition. Generated services depend on Buffa message types and views, so this is not a neutral protobuf backend. Checked-in generation requires multiple plugins and careful module mounting. Disabling JSON requires coordinated generator and runtime settings across the dependency graph. Browsers cannot stream request bodies, and full-duplex calls require HTTP/2.
How to use it well
Use it for Rust services that must serve Connect, gRPC, and gRPC-Web clients from shared protobuf schemas. Prefer build-time generation for simple projects and checked-in Buf output for multi-language or structured pipelines. Pair the runtime with Axum for application routing, or enable its built-in server for simpler deployments. It does not remove browser streaming limits.
Technical notes+
Cargo.toml defines a Rust workspace containing the runtime, code generator, build integration, health, reflection, conformance, examples, tests, and benchmarks. connectrpc/src/lib.rs denies unsafe code, exposes Tower-first routing and service types, and gates server, TLS, and Axum integrations with Cargo features. connectrpc-build/src/lib.rs acquires descriptors through protoc, Buf, or a precompiled FileDescriptorSet, then emits Buffa messages and ConnectRPC stubs into OUT_DIR. connectrpc-health/src/lib.rs implements the standard gRPC health service with optional generated client support. conformance/src/lib.rs uses length-prefixed protobuf messages over stdin and stdout to communicate with the external conformance runner.
Observed
- License
- Apache-2.0
- Primary language
- Rust, using the 2024 edition
- Minimum Rust version
- Rust 1.88
- Interfaces
- Rust runtime library, protoc and Buf code-generation plugin, and Cargo build integration
- Packaging
- Runtime and companion crates are published through Cargo; code generation is also available as prebuilt binaries and a Buf Schema Registry remote plugin
- Prebuilt plugin platforms
- Linux x86_64 and aarch64, macOS x86_64 and aarch64, and Windows x86_64
- Protocol surface
- Connect, gRPC, and gRPC-Web with unary, server-streaming, client-streaming, and bidirectional RPC shapes
- Workspace structure
- Separate runtime, codegen, build, health, reflection, conformance, example, test, and benchmark packages
Read from README.md, Cargo.toml, docs/guide.md, connectrpc/src/lib.rs, benches/rpc-go/main.go, conformance/src/lib.rs, connectrpc/src/server.rs, benches/charts/generate.py, benches/rpc-tonic/build.rs, connectrpc-build/src/lib.rs, connectrpc-health/src/lib.rs, connectrpc-codegen/src/lib.rs, benches/rpc/format-results.py.
What it can do
Define RPC service interfaces
Protocol buffer definitions → Rust service trait definitions
Generate HTTP/2 endpoints from RPC definitions
RPC service definitions → HTTP/2 server endpoints
Handle bidirectional streaming RPC calls
Streaming RPC requests → Streaming RPC responses
Serialize and deserialize protobuf messages
Rust structs or protobuf binary data → Protobuf binary data or Rust structs
Create RPC clients for service communication
Service endpoint URLs and method definitions → Configured RPC client instances
Process unary RPC requests and responses
Single RPC request messages → Single RPC response messages
Handle RPC error responses with proper status codes
Error conditions and messages → Structured RPC error responses
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.