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.