SDKs
Every EvidentSource SDK covers three concerns:
- Client — a typed gRPC client for issuing commands, reading state views, and subscribing to events.
- Functions — the scaffolding to write State Change (
decide) and State View (evolve) components that compile to WebAssembly. - Codegen — types generated from your project’s schemas (see Defining schemas).
Maturity
Section titled “Maturity”| Language | Client | Functions | Notes |
|---|---|---|---|
| Rust | ✅ stable | ✅ stable | Reference implementation — most complete |
| Go | ✅ stable | ✅ stable | Requires TinyGo 0.40.1+ for WASM |
| TypeScript | ✅ stable | ✅ stable | ESM-only; uses jco for WASM |
| Python | ✅ stable | 🚧 beta | Uses componentize-py |
| .NET | ✅ stable | ✅ stable | .NET 10+; WASM compilation is Windows-only at time of writing |
Picking a language
Section titled “Picking a language”The programming model is identical everywhere — you write decide and evolve as pure functions of typed inputs. Pick the language your team already lives in. Rust has the deepest ergonomics; TypeScript and Python are fastest for exploratory work; Go is the most straightforward for server-side integration.
Getting started
Section titled “Getting started”- Connecting a client to the Sandbox: Connecting with an SDK
- Issuing commands: Issuing commands
- Generating code from Designer: Generating code
Source
Section titled “Source”Each SDK lives under evidentsource/sdks/<language>/ in the monorepo. Each has its own README with language-specific build and test instructions.