Type-Safe JSON-RPC for Modern Applications

Generate clients and servers from IDL definitions. Go, Java, Python, TypeScript, C#.

Why PulseRPC?

IDL-Based Code Generation

Define your service once with our Interface Definition Language, then generate type-safe clients and servers in multiple languages.

Type-Safe RPC

Automatic validation of request and response types ensures data integrity and catches errors at compile time, not runtime.

Multi-Language Support

Generate code for Go, Java, Python, TypeScript, and C# from the same IDL file. Perfect for polyglot architectures.

JSON-RPC 2.0

Built on the standard JSON-RPC 2.0 protocol with broad language support. Easy to debug with standard tools.

Web UI Playground

Experiment with IDL definitions and generate code directly in your browser with our interactive Web UI.

Fast & Lightweight

Minimal runtime overhead with embedded type validation. Generate only the code you need, no bloated frameworks.

Quick Look

Define your service interface in a simple IDL file, and PulseRPC generates type-safe code for you.

namespace checkout

interface CatalogService {
    listProducts() []Product
    getProduct(productId string) Product [optional]
}

struct Product {
    productId    string
    name         string
    price        float
    stock        int
}
package main

import (
    "context"
    "github.com/coopernurse/pulserpc-go"
)

type CatalogServer struct {
    // Your data access layer
}

func (s *CatalogServer) ListProducts(ctx context.Context) ([]Product, error) {
    // Implement your business logic
    return []Product{
        {ProductId: "1", Name: "Widget", Price: 9.99, Stock: 100},
    }, nil
}

func (s *CatalogServer) GetProduct(ctx context.Context, productId string) (*Product, error) {
    // Fetch product by ID
    return &Product{
        ProductId: productId,
        Name: "Widget",
        Price: 9.99,
        Stock: 100,
    }, nil
}
import pulserpc

# Create a client
client = pulserpc.Client("http://localhost:8080/rpc")
service = client.checkout_CatalogService()

# Call remote methods with type safety
products = service.list_products()
for product in products:
    print(f"{product.name}: ${product.price}")

# Get a specific product
product = service.get_product("1")
if product:
    print(f"Found: {product.name}")

Common Use Cases

Microservices

Build type-safe communication between services. Ensure contract compatibility across your entire microservices architecture.

Mobile & Web Backends

Generate SDKs for iOS, Android, and web frontends from a single IDL definition. Keep all clients in sync automatically.

API Gateways

Create validated interfaces between API gateways and backend services. Automatic request/response validation for free.

Polyglot Systems

Mix and match languages freely. Write services in Go, Python, or Java, and call them from any supported language.

Ready to Build Type-Safe APIs?

Get started in minutes with our quickstart guide, or explore the IDL reference to learn more.