Saikuro

Cross-language invocation fabric. Typed function calls, streams, and channels across TypeScript, Python, C#, Rust, C, and C++.

Transport Agnostic
Strict Schema
Six Primitives
WASM Ready

Quick Start GitHub
Why Saikuro?

Normal multi-language setups mean HTTP boilerplate, JSON that drifts out of sync, and a week debugging silent failures.

Saikuro replaces all of it. One protocol, thin adapters, zero hand-written bindings. Define functions once, call them from any language.

Features

Transport Agnostic Protocol

Same wire format whether you are talking in-process, over a Unix socket, or across a WebSocket. Pick the transport that fits; the protocol does not care.

Strict Schema Model

Functions, types, capabilities, and namespaces are all declared in a schema the runtime enforces. No more “I thought it accepted a string” surprises.

Six Invocation Primitives

Call, cast, stream, channel, batch, and resource. Use the right primitive for the job instead of shoehorning everything into request/response.

Language Adapters

Thin clients for TypeScript, Python, C#, Rust, C, and C++. Consistent API surface across every language. Adding a new language means writing a transport and a schema mapper.

Dev Mode Discovery

Providers announce their schema automatically during development. No codegen step until you freeze things for production.

WASM Native

Run the runtime and providers entirely in the browser via WASM. WasmHost transport uses BroadcastChannel for same-origin adapter communication. Storage backends for IndexedDB, OPFS, and Web Storage.

Quick Example

TypeScript provider, Python caller. No IDL, no stub generator, no HTTP server.

TypeScript Provider
Python Caller
import { SaikuroProvider } from "@nisoku/saikuro";

const provider = new SaikuroProvider("math");
provider.register("add", (a: number, b: number) => a + b);
await provider.serve("unix:///tmp/saikuro.sock");
from saikuro import SaikuroClient

async with SaikuroClient.connect("unix:///tmp/saikuro.sock") as client:
    result = await client.call("math.add", [1, 2])
    print(result)  # 3

Installation

TypeScript
Python
C#
Rust
npm install @nisoku/saikuro
pip install saikuro
dotnet add package Saikuro
[dependencies]
saikuro = "0.1"

Next Steps