pRPC
Type-safe, Python-first RPC for modern APIs
Build end-to-end typed APIs without OpenAPI pain, codegen, or boilerplate.
Why pRPC?
Python-native
Built for asyncio, Pydantic, and modern Python — not a port of a Java idea.
End-to-end typing
Request, response, and errors stay in sync without schemas or generators.
Plugin-driven
Auth, caching, observability, and transports as composable plugins.
Modern RPC for Python
| Problem | REST / OpenAPI | gRPC | pRPC |
|---|---|---|---|
| Boilerplate | High | High | Low |
| Python DX | Medium | Poor | Excellent |
| Type safety | Partial | Strong | Strong |
| Flexibility | Medium | Low | High |
One definition. Fully typed. No schema files.
server.py
@rpc
async def get_user(user_id: int) -> User:
return await db.users.get(user_id)client.py
user = await client.get_user.aio(user_id=1)
# Fully typed result!