Skip to content

Transit

Write functions in Rust, Java, or Python — then call them from JavaScript as if they were normal async functions. No REST APIs, no JSON schemas, no glue code.

No Glue Code

Write your logic in the language that fits the job. Transit handles serialization, process management, and function discovery automatically.

Zero Changes

The scanner discovers your existing public functions automatically. No decorators, no annotations, no source modifications.

Optimal Transport

Rust runs in-process via N-API for zero overhead. Java and Python run as resident processes with a binary TCP protocol.

Works Everywhere

Supports Rust, Java, Python, and JavaScript/TypeScript. Works on Linux, macOS, and Windows.

import { transit } from "transit"
import { resolve } from "node:path"
const __dirname = import.meta.dirname
const rs = transit.rust(resolve(__dirname, "./rust"))
const jv = transit.java(resolve(__dirname, "./java/src/main/java"))
const py = transit.python(resolve(__dirname, "./python"))
// Call functions across language boundaries
const rustResult = await rs.processFile({ id: "job-001", bytes: [72, 101, 108] })
const javaResult = await jv.handleSpecialized(rustResult)
const pythonResult = await py.analyzeData(javaResult)