Analysis updated 2026-07-03
Build a Rust microservice that other services can call over the network by defining a single Rust trait, with no extra tools or generated code.
Add automatic request timeouts and cancellation propagation across a chain of Rust services without writing that logic yourself.
Test service code using in-memory channels, then switch to a real TCP transport for deployment with minimal code changes.
Track how a single request flows through multiple backend services using tarpc's built-in distributed tracing support.
| google/tarpc | kamiyaa/joshuto | touchhle/touchhle | |
|---|---|---|---|
| Stars | 3,696 | 3,698 | 3,699 |
| Language | Rust | Rust | Rust |
| Setup difficulty | moderate | easy | easy |
| Complexity | 3/5 | 2/5 | 4/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires familiarity with Rust async and Tokio, add tarpc and tokio to Cargo.toml and configure a transport layer.
Tarpc is a library for the Rust programming language that makes it easier to build networked services where one program calls functions in another program running on a different machine. This pattern is called remote procedure calls, or RPC. It is common in server software where you have multiple services that need to talk to each other, and each service handles a specific job. The library's main selling point is simplicity. You define your service using ordinary Rust code rather than a separate description language. Many RPC frameworks require you to write your service definition in a special file format, run a separate tool to generate code from it, and then write your actual logic in yet another file. Tarpc skips that step: you write one trait definition annotated with a single attribute, and the library generates the client and server code for you. Several practical features are built in. Requests have deadlines, defaulting to 10 seconds, and the server automatically stops working on a request once its deadline passes. If a client cancels a request partway through, that cancellation propagates through any downstream requests the server was making on the client's behalf. The library also includes distributed tracing support, which lets you follow a single request through multiple services to understand where time is being spent. Tarpc is designed to work with Tokio, Rust's most widely used library for writing asynchronous code. The transport layer is pluggable: you can use network connections for real deployments or in-memory channels for testing. Note that despite being hosted under Google's GitHub organization, the project's README explicitly states it is not an official Google product. It is MIT licensed and maintained as an independent open-source project.
Rust library for calling functions in remote services over the network using plain Rust traits, with no code generation step or separate description language required.
Mainly Rust. The stack also includes Rust, Tokio, async.
MIT licensed, use freely for any purpose, including commercial projects, as long as you keep the copyright notice.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.