Fabric has a multi-language SDK family so services can share protocol behavior without copying envelope, capability, streaming, and error logic.
SDK Family
| Language | Main use |
|---|---|
| TypeScript | Diminuendo, clients, Unison, local tooling |
| Rust | Podium, Chronicle, codex-tui, performance-sensitive local clients |
| Go | Ensemble service integration |
| Python | Agent tooling and test clients |
| Swift | Apple client surfaces and native integrations |
What SDKs Should Provide
| Capability | Description |
|---|---|
| JSON-RPC envelopes | Request, response, notification, batch, and error helpers |
| Capability negotiation | Initialize, profile discovery, and feature flags |
| Streaming helpers | Event parsing, cancellation, terminal state handling |
| Auth metadata | Bearer token and scoped identity propagation |
| Profile clients | Focused helpers for inference, runtime, resource, conversation, and workspace methods |
| Test fixtures | Shared protocol examples that catch drift across languages |
Current Guidance
Use the SDK that belongs to the service runtime when building inside the Fabric workspace. For docs and new protocol examples, prefer Fabric method names and profile concepts over older service-native or ACP-specific examples.
When an SDK has compatibility helpers for a legacy REST or ACP path, treat those helpers as adapter code. New first-party work should target Fabric profiles.