Minimal, end-to-end type-safe RPC framework. Inspired by tRPC v10. Built for speed, developer experience, and production-grade applications.
GitHub • Organization • Twitter
# Clone and setup
git clone https://github.com/renderhq/tinyRPC.git
cd tinyRPC
pnpm install
# Build and run
pnpm build
pnpm dev:server # Terminal 1
pnpm dev:client # Terminal 2- Type Safety: Automatic type inference from server to client without code generation.
- Protocol Agnostic: Works over HTTP/S, WebSockets, or entirely in-process (Server Callers).
- Edge Ready: Built-in support for Web Standard Request/Response (Fetch API).
- Composable: Powerful middleware system with context transformation and metadata.
- Reactive: Native support for Observables and real-time subscriptions.
This is a pnpm monorepo designed for modularity:
@tinyrpc/server: Procedure builders, router logic, and adapters (Node/Fetch/WS).@tinyrpc/client: Generic proxy client, link system, and observable utilities.example: A reference implementation featuring infinite loading, file uploads, and rate limiting.
Execute procedures server-side (e.g., in background tasks) with full type safety and zero network overhead.
const createCaller = createCallerFactory(appRouter);
const caller = createCaller({ user: systemUser, db });
const message = await caller.chat.sendMessage.mutate({
text: 'System update available.'
});Transparently support complex types like Date, Map, Set, or BigInt across the network.
// Server & Client
const t = initTRPC.create({
transformer: {
serialize: (v) => superjson.serialize(v),
deserialize: (v) => superjson.deserialize(v),
}
});Deploy anywhere using the universal fetchRequestHandler.
export default {
async fetch(request) {
return fetchRequestHandler({
router: appRouter,
req: request,
endpoint: '/trpc',
});
}
}We are approaching v1.0. Our focus is on:
- Batching Optimization: Smart request windowing.
- Standardization: Stable API for custom links and adapters.
- Observability: Built-in OpenTelemetry support.
See V2 Proposal for future architectural plans.