
One feel, every language
tRPC's type safety stops at the TypeScript border. Graftcode gives you the same local-call feel whether the other side is .NET, Java, Python, Go — or Node.

Same local feel. Any language.
tRPC's typed calls stop at the TypeScript border. Graftcode gives you the same feel across .NET, Java, Python and Go.
/USED BY LEADING COMPANIES
/AT GLANCE
Both give you great typed DX. The difference shows the moment you leave TypeScript.
/WHY SWITCH
tRPC gave TypeScript a great typed RPC. The limits show the moment you leave the monorepo, add a second language, or bring in an AI agent.

tRPC's type safety stops at the TypeScript border. Graftcode gives you the same local-call feel whether the other side is .NET, Java, Python, Go — or Node.

tRPC needs a router and procedures that become your contract. Graftcode reads your plain public methods — nothing to define, distribute, or keep in sync.

tRPC's types only travel inside a monorepo. Graftcode ships a versioned Graft any repo or language installs like a normal package.
/SHOW, DON'T TELL
The same typed call — getUser(42) — but the caller no longer has to be TypeScript.
export const appRouter = router({
getUser: publicProcedure
.input(z.object({ id: z.number() }))
.query(({ input }) => db.find(input.id)),
});
export type AppRouter = typeof appRouter;const trpc = createTRPCClient<AppRouter>({ links });
const user = await trpc.getUser.query({ id: 42 });public class UserService {
public User GetUser(int id) => _db.Find(id);
}from acme_user_service import UserService
user = UserService.get_user(42)/FEATURE MATRIX
| Capability | TRPC | Graftcode |
|---|---|---|
| PROGRAMMING MODEL | ||
| Call with Strongly Typed Methods | [✓] YES | [✓] YES |
| Regular Exception support | [-] PARTIAL | [✓] YES |
| Complex DTOs & arrays passed by value in one call | [✓] YES | [✓] YES |
| PROGRAMMING DEPENDENCIES & CONTRACTS | ||
| No additional SDK | [×] NO | [✓] YES |
| No contract files | [×] NO | [✓] YES |
| Use remote modules as dependencies | [-] PARTIAL | [✓] YES |
| TOPOLOGY & TRANSPORT | ||
| Monolith <-> Microservices switch by configuration | [×] NO | [✓] YES |
| Switch remote <-> in-memory with config only | [×] NO | [✓] YES |
| TOPOLOGY & TRANSPORT | ||
| Same programming model for queues / event buses | [×] NO | [✓] Via plugins |
| Full streaming | [-] LIMITED | [✓] YES |
| Automatic Native MCP | [×] NO | [✓] YES |
/BY THE NUMBERS
60%
less code for AI to touch
1/8
of REST/RPC overhead via Hypertube™
20
coding languages supported
10
package managers supported
/FAQS
Inside TypeScript, tRPC is genuinely low-ceremony — that's its strength. But it still needs a router that acts as your contract, it's confined to the TypeScript/JavaScript ecosystem, and it has no config-driven topology or MCP path. Graftcode keeps the low ceremony and removes those limits.
/COMMUNITY
Many developers are loving Graftcode and what it brings to them.


















“Graftcode appears to be an exceptionally useful platform. Its key value proposition is allowing developers to concentrate on core business requirements instead of tedious service integration tasks. I believe the concept of beginning with a monolithic structure and then having the option to dynamically transition to a microservice architecture will prove to be extremely valuable.”
Expose one class, install the Graft, and make your first typed cross-service call inabout 10 minutes.
