
No controllers, no DTOs
REST makes you hand-write controllers, routes, DTOs and JSON serialization for every endpoint. Graftcode exposes your public methods directly.

No controllers. No DTOs. Just methods.
REST works everywhere — but you hand-write controllers, DTOs and serialization for every endpoint. Graftcode turns your methods into a typed client.
/USED BY LEADING COMPANIES
/AT GLANCE
REST is the universal HTTP contract. As a way to call your own services, it's a lot of hand-written plumbing.
/WHY SWITCH
REST is the universal edge contract. For internal service and app calls, its plumbing is pure overhead.

REST makes you hand-write controllers, routes, DTOs and JSON serialization for every endpoint. Graftcode exposes your public methods directly.

REST is strongly-typed over the wire; real types mean an OpenAPI spec and a codegen step that drifts. Graftcode ships a typed Graft that auto-refreshes.

Change a REST response and you version endpoints and chase every client. Graftcode updates each caller's typed Graft when the signature changes.
/SHOW, DON'T TELL
Fetching one user — the REST plumbing vs a direct typed call.
[ApiController]
public class UsersController : ControllerBase {
[HttpGet("/users/{id}")]
public ActionResult<UserDto> Get(int id) =>
_db.Find(id).ToDto();
}const res = await fetch(`/users/42`);
const user = await res.json(); // anypublic class UserService {
public User GetUser(int id) => _db.Find(id);
}from acme_user_service import UserService
user = UserService.get_user(42)/FEATURE MATRIX
| Capability | REST | Graftcode |
|---|---|---|
| PROGRAMMING MODEL | ||
| Call with Strongly Typed Methods | [×] NO | [✓] YES |
| Regular Exception support | [×] NO | [✓] YES |
| Complex DTOs & arrays passed by value in one call | [✓] YES | [✓] YES |
| PROGRAMMING DEPENDENCIES & CONTRACTS | ||
| No additional SDK | [-] PARTIAL | [✓] YES |
| No contract files | [×] NO | [✓] YES |
| Use remote modules as dependencies | [×] NO | [✓] 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 | [-] PARTIAL | [✓] 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
At the edge, yes - keep REST for public and partner APIs. Internally, hand-writing controllers, DTOs and clients for every service call is overhead REST doesn't remove. Graftcode gives typed calls between your own services; REST stays at the boundary.
/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.
