Skip to content
Ironflow is pre-1.0: APIs can change between releases. Pin a version. What is ready →

Ironflow v0.41.0

Adds a file storage API with buckets, signed URLs and file events. Streaming workers get graceful drain and job refusal, and the Go, Node and Python SDKs close more Tier-1 parity gaps.

  • File storage API: buckets, files, signed URLs and file events (#2508)
  • File storage hardening: createOnly signed uploads, upload idle deadline, concurrency cap (#2523), orphan reclaimer and event sweeper (#2526), review follow-ups (#2522)
  • Package an app with Ironflow into one container (#2511)
  • JobNack in the worker stream protocol: a refused job uses no run attempt (#2485)
  • Streaming workers: drain deadline, signals and at-capacity reject in Go and Node (#2460); DrainTimeout option (#2483); cancelled Run context starts a drain in Go (#2482)
  • Node: SubscriptionClient.subscribeEntityStream (#2465)
  • Node: serve() verifies the engine push signature (#2449); client retries failed requests with backoff (#2453)
  • Python agent SDK validates tool input against input_schema (#2488)
  • Pull jobs carry the event idempotency key on REST poll and stream (#2490)
  • Tier-1 SDK parity: smaller Go and Node gaps closed (#2455)
  • Engine: step handlers reject steps of another run (#2494)
  • Engine: release the capacity lease after the terminal write (#2502)
  • Pub/sub: a deduplicated publish returns the stored event_id (#2497); Publish validates the idempotency key (#2496)
  • Webhook deliveries sort in time order on SQLite (#2461) and use UUIDv7 IDs for stable tie-breaks (#2487); webhook_sources.created_at stored at fixed width (#2484)
  • SDKs: agent memory, MCP registration and push-mode Publish send the run environment (#2495); Node step.publish sends the worker environment (#2489)
  • Go streaming worker waits for queue space on ack, nack and terminal reports (#2503, #2501)
  • Node streaming worker stops its jobs when the stream drops (#2499)
  • Go: a non-retryable push-handler error is not retried (#2452); FunctionConfig.Validate checks the event payload before the handler (#2506); 403 errors name the environment (#2492)
  • Node: a plain thrown error is retryable, as in Go and Python (#2450, #2451)
  • Go and Node agent SDKs reject an empty memory projection at definition time (#2504)
  • Python streaming worker logs a job it ignores (#2481)
  • Examples: close runnable setup gaps (#2524)
  • Toolchain bump to Go 1.27 and golangci-lint 2.14 (#2441)
  • Docs: Archify diagrams for the file storage API (#2521)