Strait Docs
SDKs

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/ts
pip install strait-python
go get github.com/strait-dev/go-sdk
gem install strait
cargo add strait

Feature Parity

All five SDKs implement the same capabilities:

FeatureTypeScriptPythonGoRubyRust
API operations (186 endpoints)client.jobs.list()client.jobs.list()jobs.List(ctx)jobs.listjobs.list().await
Config from strait.jsoncreateClientFromConfigFile()Client.from_file()NewClientFromFile()Client.from_fileClient::from_file()
Config from env varscreateClientFromEnv()Client.from_env()NewClientFromEnv()Client.from_envClient::from_env()
Authoring DSLdefineJob() / defineWorkflow()define_job() / define_workflow()DefineJob() / DefineWorkflow()define_job / define_workflowdefine_job() / define_workflow()
Composition helperswithRetry(), waitForRun(), paginate()with_retry(), wait_for_run(), paginate()WithRetry(), WaitForRun(), Paginate()with_retry, wait_for_run, paginatewith_retry(), wait_for_run(), paginate()
FSM state machinesXState v5 actorstransition_run()CanTransitionRun()can_transition_run?can_transition_run()
DAG validationKahn's algorithmKahn's algorithmKahn's algorithmKahn's algorithmKahn's algorithm
Middleware hooksonRequest / onResponse / onErroron_request / on_response / on_errorOnRequest / OnResponse / OnErroron_request / on_response / on_erroron_request / on_response / on_error
Typed errors10 error classes10 exception types10 error types10 error classes10 error variants
Custom HTTP clientCustom fetchhttpx.ClientHTTPDoer interface#call interfacereqwest::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 init

This 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.list
use 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:

ServiceOperations
jobslist, create, get, update, delete, trigger, bulk_trigger, clone
runslist, get, delete, replay, bulk_cancel, get_dlq
workflowslist, create, get, update, delete, trigger, get_diff, get_policy
workflow_runslist, get, pause, resume, approve_step, skip_step
deploymentslist, create, finalize, promote, rollback
environmentslist, create, get, update, delete
secretslist, create, delete
api_keyslist, create, delete, rotate
webhookslist_subscriptions, create_subscription, delete_subscription, list_deliveries, get_delivery, retry_delivery
event_triggerslist_events, get_event, delete_event, send_event, send_prefix, purge_event, get_stat
event_sourceslist, get, create, update, delete
batch_operationslist, get
statslist
analyticsget_performance
log_drainslist, create, get, update, delete
sdk_runsannotate, checkpoint, complete, continue, fail, heartbeat, log, output, progress, spawn, tool_call, usage, wait_for_event
rbaclist_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_groupslist, create, get, update, delete, list_jobs, pause_all, resume_all, get_stats
healthlist, get_ready, list_metrics

What's Next?

Was this page helpful?

On this page