google/tarpc

An RPC framework for Rust with a focus on ease of use.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 26 minutes ago
Added to GitGenius on September 18th, 2026
Created on February 11th, 2016
Open Issues & Pull Requests: 59 (+0)
GitHub issues: Enabled
Number of forks: 231
Total Stargazers: 3,742 (+0)
Total Subscribers: 40 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 5.0 hours
Mean response time: 36.7 days
90th percentile: 184.3 days
Tracked items: 16

Most active contributors

Sign in to see contributor activity.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 12
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 550 days
Stale 30+ days: 12
Stale 90+ days: 6

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • bug (1)
  • documentation (1)
  • feature (1)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

tarpc is an RPC framework for Rust with a focus on ease of use.

tarpc addresses the need to define remote procedure call services without the overhead of separate schema languages or compilation steps. It uses Rust macros to generate service definitions directly in code, eliminating context switching between languages and the need for separate build processes. Developers define a service trait with the tarpc::service attribute, and the macro expands it into the boilerplate needed for both client and server implementations.

The tool suits projects where schema-in-code simplicity matters more than language-agnostic schema definitions. It works well in Rust-only microservices architectures and applications that benefit from tight integration between service definitions and implementation. tarpc distinguishes itself from frameworks like gRPC and Cap'n Proto by avoiding external schema languages entirely. The framework supports pluggable transports—any type implementing the Stream and Sink traits can carry requests and responses—and does not require Send + 'static bounds if the transport doesn't need them. It includes cascading cancellation so dropping a request propagates cancellation through the entire dependency chain, configurable deadlines with automatic propagation across service calls, and distributed tracing instrumentation compatible with OpenTelemetry and Jaeger. Serialization via Serde is optional, allowing in-memory transports to avoid serialization overhead when not needed.

Development activity shows consistent engagement with the codebase through regular commits addressing both features and maintenance. The project maintains active issue triage and responds to pull requests, indicating ongoing stewardship. Documentation is kept current alongside code changes, and the maintainers integrate feedback from users into refinements of the API and feature set.