This document shows which capabilities are supported by each Ironflow SDK. Use this to understand SDK capabilities when deciding which SDK to use for your project.
- ✅ Supported — SDK provides full support for this capability
- ❌ Not supported — SDK does not support this capability
- N/A Not applicable — Intentionally excluded (e.g., browser SDKs don’t handle secrets for security)
- Server-only Capability requires server-side execution (Go SDK and Node SDK only)
- Go SDK (
github.com/sahina/ironflow/sdk/go/ironflow) — Native Go client for servers and workers
- Node SDK (
@ironflow/node) — TypeScript/JavaScript for Node.js servers, workers, and handlers
- Browser SDK (
@ironflow/browser) — TypeScript/JavaScript for browser and real-time client interactions
- Python SDK (
ironflow) — Python client API (client methods only, no worker runtime yet)
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Emit events | ✅ | ✅ | ✅ | ✅ |
| Trigger workflows | ✅ | ✅ | ✅ | ✅ |
| TriggerSync (blocking) | ✅ | ✅ | ✅ | ❌ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Define functions | ✅ | ✅ | N/A | ❌ |
| Register functions | ✅ | ✅ | ❌ | ❌ |
| List functions | ✅ | ✅ | ✅ | ✅ |
| Invoke function directly | ❌ | ❌ | ❌ | ✅ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Get run details | ✅ | ✅ | ✅ | ✅ |
| List runs | ✅ | ✅ | ✅ | ✅ |
| Cancel run | ✅ | ✅ | ✅ | ✅ |
| Retry run | ✅ | ✅ | ✅ | ❌ |
| Resume run | ✅ | ✅ | ✅ | ✅ |
| Get audit trail (run events) | ✅ | ✅ | ✅ | ✅ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Pause run | ✅ | ✅ | ✅ | ❌ |
| Get paused state | ✅ | ✅ | ✅ | ❌ |
| Inject step output | ✅ | ✅ | ✅ | ❌ |
| Patch step (modify outputs) | ✅ | ✅ | ✅ | ✅ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Get run state at timestamp | ✅ | ✅ | ✅ | ❌ |
| Get run timeline | ✅ | ✅ | ✅ | ❌ |
| Get step output at timestamp | ✅ | ✅ | ✅ | ❌ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Append event to stream | ✅ | ✅ | ✅ | ✅ |
| Read stream events | ✅ | ✅ | ✅ | ✅ |
| Get stream info | ✅ | ✅ | ✅ | ✅ |
| Create snapshot | ✅ | ✅ | ✅ | ✅ |
| Get snapshot | ✅ | ✅ | ✅ | ✅ |
| List all streams | ✅ | ✅ | ❌ | ✅ |
| Get entity event history | ✅ | ✅ | ❌ | ✅ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| List projections | ✅ | ✅ | ✅ | ✅ |
| Get projection | ✅ | ✅ | ✅ | ✅ |
| Get projection status | ✅ | ✅ | ✅ | ✅ |
| Create projection | ✅ | ✅ | N/A | ❌ |
| Rebuild projection | ✅ | ✅ | ✅ | ✅ |
| Get rebuild job status | ✅ | ✅ | ❌ | ✅ |
| Query SQL projection | ❌ | ✅ | ✅ | ❌ |
| Execute raw SQL | ✅ | ❌ | ❌ | ✅ |
| Pause projection | ✅ | ✅ | ❌ | ✅ |
| Resume projection | ✅ | ✅ | ❌ | ✅ |
| Cancel rebuild | ✅ | ✅ | ❌ | ✅ |
| Delete projection | ✅ | ✅ | ❌ | ✅ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Publish to topic | ✅ | ✅ | ❌ | ✅ |
| List topics | ✅ | ✅ | ❌ | ❌ |
| Get topic statistics | ✅ | ✅ | ❌ | ❌ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Create bucket | ✅ | ✅ | ✅ | ✅ |
| List buckets | ✅ | ✅ | ✅ | ✅ |
| Get bucket | ✅ | ✅ | ✅ | ✅ |
| Delete bucket | ✅ | ✅ | ✅ | ✅ |
| Get key | ✅ | ✅ | ✅ | ✅ |
| Put key | ✅ | ✅ | ✅ | ✅ |
| Delete key | ✅ | ✅ | ✅ | ✅ |
| List keys | ✅ | ✅ | ✅ | ✅ |
| Watch keys | ✅ | ❌ | ✅ | ❌ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Get config (read) | ✅ | ✅ | ✅ | ✅ |
| List configs | ✅ | ✅ | ✅ | ✅ |
| Set config (full replacement) | ✅ | ✅ | N/A | ✅ |
| Patch config (shallow merge) | ✅ | ✅ | N/A | ✅ |
| Delete config | ✅ | ✅ | N/A | ✅ |
| Watch config (real-time) | ✅ | ✅ | ✅ | ❌ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Get secret | ✅ | ✅ | N/A | ✅ |
| Set secret | ✅ | ✅ | N/A | ✅ |
| Update secret | ✅ | ✅ | N/A | ✅ |
| Delete secret | ✅ | ✅ | N/A | ✅ |
| List secrets | ✅ | ✅ | N/A | ✅ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Register schema | ✅ | ✅ | ✅ | ✅ |
| List schemas | ✅ | ✅ | ✅ | ✅ |
| Get schema (latest) | ✅ | ✅ | ✅ | ✅ |
| Get schema version | ✅ | ✅ | ✅ | ✅ |
| Delete schema version | ✅ | ✅ | ✅ | ✅ |
| Test upcast | ✅ | ✅ | ✅ | ✅ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Create webhook source | ✅ | ✅ | ✅ | ❌ |
| List webhook sources | ✅ | ✅ | ✅ | ❌ |
| Delete webhook source | ✅ | ✅ | ✅ | ❌ |
| List webhook deliveries | ✅ | ✅ | ✅ | ❌ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Create API key | ✅ | ✅ | ✅ | ✅ |
| List API keys | ✅ | ✅ | ✅ | ✅ |
| Get API key | ✅ | ✅ | ✅ | ✅ |
| Delete API key | ✅ | ✅ | ✅ | ✅ |
| Rotate API key | ✅ | ✅ | ✅ | ✅ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Create org | ✅ | ✅ | ✅ | ✅ |
| List orgs | ✅ | ✅ | ✅ | ✅ |
| Get org | ✅ | ✅ | ✅ | ✅ |
| Update org | ✅ | ✅ | ✅ | ✅ |
| Delete org | ✅ | ✅ | ✅ | ✅ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Create role | ✅ | ✅ | ✅ | ✅ |
| List roles | ✅ | ✅ | ✅ | ✅ |
| Get role | ✅ | ✅ | ✅ | ✅ |
| Update role | ✅ | ✅ | ✅ | ✅ |
| Delete role | ✅ | ✅ | ✅ | ✅ |
| Assign policy to role | ✅ | ✅ | ✅ | ✅ |
| Remove policy from role | ✅ | ✅ | ✅ | ✅ |
| Create policy | ✅ | ✅ | ✅ | ✅ |
| List policies | ✅ | ✅ | ✅ | ✅ |
| Get policy | ✅ | ✅ | ✅ | ✅ |
| Update policy | ✅ | ✅ | ✅ | ✅ |
| Delete policy | ✅ | ✅ | ✅ | ✅ |
| Capability | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Manage projects | ✅ | ✅ | N/A | ✅ |
| Manage environments | ✅ | ✅ | N/A | ✅ |
| Manage users | ✅ | ✅ | ✅ | ✅ |
| List workers | ✅ | ✅ | ✅ | ✅ |
| List tenants | ✅ | ✅ | ✅ | ✅ |
| Feature | Go SDK | Node SDK | Browser SDK | Python SDK |
|---|
| Push mode (serverless functions) | ✅ | ✅ | N/A | ❌ |
| Pull mode (long-running workers) | ✅ | ✅ | N/A | ❌ |
| Subscriptions (real-time events) | ✅ | ✅ | ✅ | ❌ |
| WebSocket support | ✅ | ✅ | ✅ | ❌ |
| ConnectRPC support | ✅ | ✅ | ✅ | ❌ |
| HTTP/REST support | ✅ | ✅ | ✅ | ✅ |
- Building high-performance backend services
- Implementing complex state machines or sagas
- Integrating with existing Go applications
- Need maximum feature parity across all domains
- Building serverless functions (AWS Lambda, Vercel)
- Using JavaScript/TypeScript throughout your stack
- Need full control over step execution and error handling
- Prefer working in TypeScript for type safety
- Building real-time frontends with live event subscriptions
- Implementing interactive dashboards or monitoring tools
- Need lightweight client-side integrations
- Want to display projection data and KV store values in UI
- Building data pipelines or scripts that interact with Ironflow
- Integrating Ironflow with Python-based AI/ML workflows
- Need a lightweight client for admin operations or event emission
- Want to manage Ironflow resources from Jupyter notebooks or CLI tools
Note: The Python SDK provides client API methods only (no worker runtime). For durable step execution, use the Go or Node SDK.
This comparison is maintained alongside the sdk-parity.yaml manifest at the repository root and the SDK generation pipeline (make sdk-health). Features are implemented incrementally, and this table reflects the current state.
The Python SDK is auto-generated from the server’s route manifest using cmd/sdk-gen. See the SDK Generation Guide for details.
To track parity progress or request missing features, refer to the project roadmap and GitHub issues.