Compare
gRPC vs. Graftcode

Same wire speed. Far less code.

Skip the .proto files, the stub regeneration, the status-code mapping. Expose a class and call it.

/USED BY LEADING COMPANIES

3G TMS
ARC CORE
IBM
Intermodal Tank Transport
NewDoors
First Premier Bank
TotalEnergies
TRUMPF
Stratus
SIEMENS
Nuance
Walter
Tangram
Nevada
BREAS
Statistics Norway
3G TMS
ARC CORE
IBM
Intermodal Tank Transport
NewDoors
First Premier Bank
TotalEnergies
TRUMPF
Stratus
SIEMENS
Nuance
Walter
Tangram
Nevada
BREAS
Statistics Norway
3G TMS
ARC CORE
IBM
Intermodal Tank Transport
NewDoors
First Premier Bank
TotalEnergies
TRUMPF
Stratus
SIEMENS
Nuance
Walter
Tangram
Nevada
BREAS
Statistics Norway

/AT GLANCE

gRPC vs Graftcode

Both give you strong typing and fast calls. The difference is everything around the call.

gRPC
  • Write and share a .proto contract for every service
  • Regenerate stubs by hand whenever the interface changes
  • Implement a generated service interface, not a plain class
  • Map exceptions to gRPC status codes on both sides
  • You are limited to remote only
  • Expose an ordinary public class — zero annotations, no IDL
  • The typed Graft auto-refreshes when your interface evolves
  • Install the Graft like any npm / NuGet / pip package
  • Normal exceptions propagate — no status-code mapping
  • In-process ↔ remote is a config switch, not a rewrite

/WHY SWITCH

Three reasons teams move from gRPC

gRPC solved fast RPC. It didn't remove the work that surrounds every call.

getUser call skipping .proto files on the way to Graftcode

No .proto, no stubs

Graftcode reads your public method signatures directly. There's no contract file to author, distribute, or keep in sync — and no protoc step to run on every change.

In-process and remote topology switched in configuration

Topology is configuration

Move a module from in-process to remote, or swap the transport, without touching a single caller. gRPC bakes the wire into your code; Graftcode keeps it out of it.

Public methods exposed as MCP tools

AI-ready out of the box

Your public methods are exposed as MCP tools automatically. Any MCP client — Claude, Cursor, ChatGPT — calls them as-is. With gRPC that's a custom wrapper you write and maintain.

/SHOW, DON'T TELL

Same call. 4 steps vs 2.

A single typed remote call — getUser(42) — end to end.

gRPC
  1. write the .proto
    service UserService {
      rpc GetUser (GetUserRequest) returns (User);
    }
    message GetUserRequest { int32 id = 1; }
    message User { int32 id=1; string name=2; }
  2. regenerate stubs
    $ protoc --go_out=. --go-grpc_out=. user.proto
  3. implement + map DTOs
    func (s *server) GetUser(ctx, r *pb.GetUserRequest)
        (*pb.User, error) {
      u := db.Find(r.Id)
      return &pb.User{Id:u.Id, Name:u.Name}, nil
    }
  4. dial, build stub, call
    conn, _ := grpc.Dial(addr, opts...)
    client := pb.NewUserServiceClient(conn)
    res, err := client.GetUser(ctx, &pb.GetUserRequest{Id:42})
GRAFTCODE
  1. expose a class
    export class BillingService {
      calculateBill(kwhUsed: number): number {
        return kwhUsed * 0.42;
      }
    }
  2. Install the Graft & call
    import { BillingService } from "@acme/billing-service";
    
    const billing = new BillingService();
    
    const total = billing.calculateBill(420);

Same strong typing. Same wire speed.60% less code for you - and for your AI - to read, write and review.

/FEATURE MATRIX

The honest, line-by-line comparison

CapabilityGRPC
PROGRAMMING MODEL
Call with Strongly Typed Methods without IDL
[×] NO
Regular Exception support
[×] NO
Complex DTOs & arrays passed by value in one call
[✓] YES
PROGRAMMING DEPENDENCIES & CONTRACTS
No additional SDK
[×] NO
No contract files
[×] NO
Use remote modules as dependencies
[-] PARTIAL
TOPOLOGY & TRANSPORT
Monolith <-> Microservices switch by configuration
[×] NO
Switch remote <-> in-memory with config only
[×] NO
TOPOLOGY & TRANSPORT
Same programming model for queues / event buses
[×] NO
Full streaming
[✓] YES
Automatic Native MCP
[×] NO
GRPC compared with Graftcode
CapabilityGRPCGraftcode
PROGRAMMING MODEL
Call with Strongly Typed Methods without IDL[×] NO[✓] YES
Regular Exception support[×] NO[✓] 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[✓] YES[✓] YES
Automatic Native MCP[×] NO[✓] YES

/BY THE NUMBERS

The payoff, in 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

Before you ask

  • No. Hypertube™ connects language runtimes directly and skips the serialization overhead of HTTP-based transports — roughly 1/8 of REST/RPC overhead. In-process calls run at near-native speed. You keep gRPC-class performance without the gRPC-class boilerplate.

/COMMUNITY

Join grafters community

Many developers are loving Graftcode and what it brings to them.

Community member avatar 1-1
Community member avatar 1-2
Community member avatar 1-3
Community member avatar 1-4
Community member avatar 1-5
Community member avatar 1-6
Community member avatar 1-7
Community member avatar 1-8
Community member avatar 1-9
Community member avatar 1-10
Community member avatar 1-11
Community member avatar 1-12
Community member avatar 1-13
Community member avatar 1-14
Community member avatar 1-15
Community member avatar 1-16
Community member avatar 1-17
Community member avatar 1-18
Community member avatar 1-19
Community member avatar 1-20
Community member avatar 1-21
Community member avatar 1-22
Community member avatar 1-23
Community member avatar 1-24
Community member avatar 1-25
Community member avatar 1-26
Community member avatar 2-1
Community member avatar 2-2
Community member avatar 2-3
Community member avatar 2-4
Community member avatar 2-5
Community member avatar 2-6
Community member avatar 2-7
Community member avatar 2-8
Community member avatar 2-9
Community member avatar 2-10
Community member avatar 2-11
Community member avatar 2-12
Community member avatar 2-13
Community member avatar 2-14
Community member avatar 2-15
Community member avatar 2-16
Community member avatar 2-17
Community member avatar 2-18
Community member avatar 2-19
Community member avatar 2-20
Community member avatar 2-21
Community member avatar 2-22
Community member avatar 2-23
Community member avatar 2-24
Community member avatar 2-25
Community member avatar 2-26
Community member avatar 3-1
Community member avatar 3-2
Community member avatar 3-3
Community member avatar 3-4
Community member avatar 3-5
Community member avatar 3-6
Community member avatar 3-7
Community member avatar 3-8
Community member avatar 3-9
Community member avatar 3-10
Community member avatar 3-11
Community member avatar 3-12
Community member avatar 3-13
Community member avatar 3-14
Community member avatar 3-15
Community member avatar 3-16
Community member avatar 3-17
Community member avatar 3-18
Community member avatar 3-19
Community member avatar 3-20
Community member avatar 3-21
Community member avatar 3-22
Community member avatar 3-23
Community member avatar 3-24
Community member avatar 3-25
Community member avatar 3-26

“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.”

Maciej_e$

GitHub

Start and contribute to the project on GitHub.

JOIN
LinkedIn

Connect with us on LinkedIn.

JOIN
Twitter / X

Follow along on X.

JOIN
Discord

Join the conversation on Discord.

JOIN

Keep the speed.Drop the spaghetti code.

Expose one class, install the Graft, and make your first typed cross-service call inabout 10 minutes.