Skip to content

Choose a language

Every supported language can host services and call them through the shared Rust engine. Choose a language below for a complete first-service project and separate server and client references for its runtime APIs.

Language Setup and example Server Client
Rust First service Server Client
Python First service Server Client
TypeScript First service Server Client
Go First service Server Client
Java and Kotlin First service · Kotlin Server Client
.NET First service Server Client

Each reference covers service registration or connection setup, all four RPC patterns, sessions, admission, deadlines, errors, resource ownership, and telemetry. Language syntax and convenience APIs differ, so use the guide for the binding you installed.

Start with the language your application already uses, then check how it creates wire metadata and loads the native runtime. Every language can be a producer, a consumer, or both; these roles describe which side hosts a method.

Language Before the first call Application responsibility
Rust Enable rpc; derive payloads and expand the service macro Keep the node alive; register adapters and verified peer policy
Python Install the platform wheel; define decorated services Keep async contexts alive; configure consumer admission
TypeScript Install native addon; run aster-gen and tsc Load generated metadata; own process lifetime and transport closure
Go Set up pinned source, CGO, and matching native library Register payloads and methods; pass contexts and close owners
Java/Kotlin Load native classifier; configure APT or KSP Register codec types; implement streaming dispatchers; close owners
.NET Configure NuGet sources and matching native runtime Register builders and payloads; dispose native owners

For evaluation, follow one first-service project above through its expected output. For deployment, continue to that binding’s admission and shutdown sections and the operations guide.

  • Go installation: the tested guide uses pinned public source and a local module replacement. Public vanity-module installation remains unqualified.
  • JVM generation: Java APT and Kotlin KSP generate unary handlers. Streaming uses explicit dispatchers; the JVM tutorial includes a working server stream.
  • Admission: Python, TypeScript, and JVM offer high-level consumer workflows. Native Rust, Go, and .NET require explicit policy integration for protected direct-RPC use.
  • Sessions: owners and cleanup APIs differ. JVM ClientSession.close() is a no-op; connection closure reaps state.
  • API catalogs: hosted generated references currently cover Python and TypeScript. Other languages have the server/client references above and release-specific source/package documentation; see the API index.

The walkthroughs record their tested toolchain and platform. A working local example does not qualify every deployment platform or authorize production access. See release compatibility for the shared runtime and intentional feature boundaries.

Continue with contracts, trust, data, or coordination.