Official Strait SDKs for TypeScript, Python, Go, Ruby, and Rust — feature parity across all five languages.
Strait provides official SDKs for TypeScript, Python, Go, Ruby, and Rust. All five SDKs share the same feature set, configuration model, and API coverage.
Installation
npm install @strait/ts
# or
bun add @strait/tspip install strait-pythongo get github.com/strait-dev/go-sdkgem install straitcargo add straitFeature Parity
All five SDKs implement the same capabilities:
| Feature | TypeScript | Python | Go | Ruby | Rust |
|---|---|---|---|---|---|
| API operations (186 endpoints) | client.jobs.list() | client.jobs.list() | jobs.List(ctx) | jobs.list | jobs.list().await |
Config from strait.json | createClientFromConfigFile() | Client.from_file() | NewClientFromFile() | Client.from_file | Client::from_file() |
| Config from env vars | createClientFromEnv() | Client.from_env() | NewClientFromEnv() | Client.from_env | Client::from_env() |
| Authoring DSL | defineJob() / defineWorkflow() | define_job() / define_workflow() | DefineJob() / DefineWorkflow() | define_job / define_workflow | define_job() / define_workflow() |
| Composition helpers | withRetry(), waitForRun(), paginate() | with_retry(), wait_for_run(), paginate() | WithRetry(), WaitForRun(), Paginate() | with_retry, wait_for_run, paginate | with_retry(), wait_for_run(), paginate() |
| FSM state machines | XState v5 actors | transition_run() | CanTransitionRun() | can_transition_run? | can_transition_run() |
| DAG validation | Kahn's algorithm | Kahn's algorithm | Kahn's algorithm | Kahn's algorithm | Kahn's algorithm |
| Middleware hooks | onRequest / onResponse / onError | on_request / on_response / on_error | OnRequest / OnResponse / OnError | on_request / on_response / on_error | on_request / on_response / on_error |
| Typed errors | 10 error classes | 10 exception types | 10 error types | 10 error classes | 10 error variants |
| Custom HTTP client | Custom fetch | httpx.Client | HTTPDoer interface | #call interface | reqwest::Client |
Quick Start
The fastest way to get started is with a strait.json config file and the STRAIT_API_KEY environment variable.
1. Initialize your project:
strait initThis creates a strait.json file in your project root. See Configuration for the full schema reference.
2. Set your API key:
export STRAIT_API_KEY="sk_live_..."3. Create a client:
import { createClientFromConfigFile } from "@strait/ts/node";
const client = await createClientFromConfigFile();
const jobs = await client.jobs.list({ query: { project_id: "proj_1" } });from strait import Client
client = Client.from_file()
jobs = client.jobs.list()import (
strait "github.com/strait-dev/go-sdk"
"github.com/strait-dev/go-sdk/operations"
)
client, err := strait.NewClientFromFile(nil)
jobs := operations.NewJobsService(client)
result, err := jobs.List(ctx, nil)require "strait"
client = Strait::Client.from_file
jobs = client.jobs.listuse strait_sdk::client::StraitClient;
let client = StraitClient::from_file(None, None)?;
let jobs = client.jobs().list(None).await?;SDK Architecture
Each SDK is organized into the same five layers:
┌─────────────────────────────────────────┐
│ Authoring DSL │ defineJob() / defineWorkflow()
├─────────────────────────────────────────┤
│ Composition Helpers │ retry, wait, paginate, deploy
├─────────────────────────────────────────┤
│ Domain Operations (19 services) │ jobs, runs, workflows, ...
├─────────────────────────────────────────┤
│ HTTP Client + Middleware │ auth, headers, error mapping
├─────────────────────────────────────────┤
│ Configuration │ strait.json / env vars / inline
└─────────────────────────────────────────┘Domain Operations (19 Services)
All 186 API operations are organized into typed service classes:
| Service | Operations |
|---|---|
jobs | list, create, get, update, delete, trigger, bulk_trigger, clone |
runs | list, get, delete, replay, bulk_cancel, get_dlq |
workflows | list, create, get, update, delete, trigger, get_diff, get_policy |
workflow_runs | list, get, pause, resume, approve_step, skip_step |
deployments | list, create, finalize, promote, rollback |
environments | list, create, get, update, delete |
secrets | list, create, delete |
api_keys | list, create, delete, rotate |
webhooks | list_subscriptions, create_subscription, delete_subscription, list_deliveries, get_delivery, retry_delivery |
event_triggers | list_events, get_event, delete_event, send_event, send_prefix, purge_event, get_stat |
event_sources | list, get, create, update, delete |
batch_operations | list, get |
stats | list |
analytics | get_performance |
log_drains | list, create, get, update, delete |
sdk_runs | annotate, checkpoint, complete, continue, fail, heartbeat, log, output, progress, spawn, tool_call, usage, wait_for_event |
rbac | list_audit_events, list_members, create_member, delete_member, bulk_member, list_roles, create_role, get_role, update_role, delete_role, list_resource_policies, create_resource_policy, delete_resource_policy, list_tag_policies, create_tag_policy, delete_tag_policy, seed_roles |
job_groups | list, create, get, update, delete, list_jobs, pause_all, resume_all, get_stats |
health | list, get_ready, list_metrics |
What's Next?
Configuration
strait.json schema reference, environment variable overrides, and config file discovery.
TypeScript SDK
Effect-first SDK with generated operations, authoring DSL, and XState FSMs.
Python SDK
Sync and async clients with httpx, authoring DSL, and composition helpers.
Go SDK
Functional options pattern, typed error handling, and full API coverage.
Ruby SDK
Idiomatic Ruby DSL, typed errors, and full API coverage.
Rust SDK
Async/await, builder pattern, type-safe errors, and full API coverage.