Ironflow is pre-1.0: APIs can change between releases. Pin a version. What is ready →
- Releases
- Ironflow v0.47.0
Ironflow v0.47.0
Ironflow v0.47.0 adds deployments, capacity, debounce, definition history and executeSQL to the Go, Node and browser SDKs, and fixes a batch of SDK decoding bugs found by proving every readiness row end to end. It also closes a tenant-isolation hole: only the bootstrap organization’s admin can now list and provision tenants.
Breaking Changes
Section titled “Breaking Changes”- Tenants:
GET /api/v1/tenantsandPOST /api/v1/tenants/provisionreturn 403 to an admin of any organization other thanorg_default. They need the instance-scopedplatform:tenants:read/platform:tenants:manage. The bootstrap admin key andironflow tenant provisionkeep working (#2945) - Python SDK:
debounce_delete_entriesnow base64url-encodes the key. Pass the raw key; if you encoded it yourself, stop, or it is encoded twice (#2948) - Node SDK:
getAuditTrailreturnsAuditTrailResult,getStepOutputAtreturnsTimeTravelStepOutputSnapshot,getRunStateAtreturnsTimeTravelRunStateSnapshot. The old types stay exported but are deprecated (#2942) - Go SDK:
Output,ErrorandOriginalOutputon time-travel step snapshots, andInputon the run-state snapshot, are nowjson.RawMessageinstead of a base64string(#2942) @ironflow/core:ConfigWatchEvent.datais nowRecord<string, unknown> | null, because config deletes sendnull(#2949)
Features
Section titled “Features”- Go and Node SDKs: register, get and list a function’s deployments, and read its execution routing (#2948)
- Go and Node SDKs: capacity views (lanes, queue, leases, buckets, sessions, credits, stats) and debounce list/cancel. Capacity needs an
ifplatform_key (#2948) - Go, Node and browser SDKs: list and get archived projection and event schema definitions by revision (#2948, #409)
- Browser SDK:
executeSQL(query, options?)runs a read-only query against projection tables (#2948) - REST reference documents
POST /cluster/rotate-token, the OpenAPI spec’s scope, and the KV and config watch streams (#2947, #2949)
- Tenancy: every user can change their own password;
PATCH /api/v1/users/{id}/passwordnow costsusers:password(admin, developer and viewer hold it). A custom role needs it granted (#2945) - Go, Node and browser SDKs:
CreateOrganization/orgs.createcallsPOST /api/v1/platform/orgswith a platform credential instead of the route that always returned 403 (#2945) - Node
users.*andtenants.list, and browsertenants.list, fill every field (#2945) - Time travel finds a step by the name the code used (
charge, not{runId}:charge:0); the full key still works (#2942) - Go and browser SDKs:
GetAuditTrailfills every event field and paging works. NodegetAuditTrailno longer always returns[](#2942) - Browser SDK: time-travel output with non-ASCII text decodes correctly (#2942)
- Go, Node and browser SDKs: consumer group
updateworks against a real server, andTestUpcastreturns the version chain (#2943) - Go SDK: an idle KV or config watch no longer panics after one quiet second (#2949)
- Node and browser SDKs: a KV watch reports the server’s error; Node config watch authenticates like KV watch (#2949)
- Go and Python SDKs: a KV watch delete has no value (
nil/None) (#2949) - Config
updatedAtis UTC, and the browser config watch sees deletes (#2949) - A
dashboard_jwt_secretrotation reaches platform login and survives a restart (#2947) - A circuit-breaker reset lets held runs start at once instead of waiting for the 30-second sweep (#2946)
- Dashboard and CLI: the Webhook Deliveries page and
ironflow webhook deliveries --statusdrop the always-empty “deduplicated” filter (#2933) - Node SDK: a streaming projection keeps the stream’s own error when the final save also fails
@ironflow/langgraph: pending writes come back in LangGraph’s replay order@ironflow/agent: an installed agent no longer falls back to the project’s own.agents/skills- Browser SDK: the offline queue logs why a drain failed
Improvements
Section titled “Improvements”ironflow versionsays which skills are stale and against what version
- Docker binary builds use
-trimpath(#2953) - Circuit breaker guide corrected against the code (#2961)