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-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.