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

Ironflow v0.44.0

Ironflow v0.44.0 replaces CEL with embedded Rego policy sets for tenant authorization, and gives SDK projection runners an exclusive, fenced lease in Go, Node and Python. It also ships @ironflow/agent, an ACP coding agent for Zed and JetBrains, and adds a built-in Analytics page to the dashboard.

  • Embedded Rego policy sets replace CEL for tenant authorization (Layer 2). CEL policies are no longer evaluated; CEL stays for pub/sub filters only (#2819)
  • IRONFLOW_URL is removed. Set IRONFLOW_SERVER_URL instead; browser variables are now NEXT_PUBLIC_IRONFLOW_SERVER_URL and VITE_IRONFLOW_SERVER_URL (#2784)
  • @ironflow/agent: an ACP coding agent for Zed and JetBrains, published to npm with its bundled skills (#2760, #2853)
  • Agent: read-only bash with exact-command grants, globs and 2>/dev/null; packaged skills in the prompt; bridge to ironflow mcp so the Ironflow MCP tools work under serve --dev (#2847, #2852, #2856)
  • Exclusive lease for SDK projection runners: lease RPCs, and fenced Poll, Stream, Save and Ack (#2818, #2825, #2808, #2814)
  • Projection runner lease clients for Go, Node and Python (#2826, #2828, #2827)
  • Built-in Analytics page in the dashboard: runs, events, and P50/P95 over time (#2844)
  • Grafana on the single-node Compose stack, with failures and resilience panels (#2843)
  • Go and Node getEntityHistory follow next_cursor and take a time window (#2829)
  • Dashboard: back/forward history arrows, and an Overview flow strip in place of the function Config tab (#2746, #2745)
  • The engine now drives SQL projections, so they advance and a rebuild completes (#2786)
  • SQL projection rebuild refuses to start while a rebuild is in progress; a non-SQL rebuild start fences the owner; claim rejects an empty token (#2837, #2813)
  • Drain slots are released while a drain waits, and a stuck rebuild fails (#2804)
  • Go projection runner keeps its lease until a late handler returns; projection register stops retrying on InvalidArgument (#2834, #2835)
  • Projection runner parity across Go, Node and Python: {} state means initial state, one stream error rule, Go stream with poll fallback, partitioned state resumes, streams close before worker reconnect (#2820, #2809, #2807, #2781, #2777, #2775)
  • Projection poll events carry seq as a number (#2836)
  • Recover early events for waitForEvent and approvals (#2782)
  • Recover unfinished CQRS command claims (#2785)
  • Keep EventFilterKinds on a custom Postgres plan (#2833)
  • SDKs: add getJSON for KV entries; JS SDK recognizes errors across module instances (#2779, #2778)
  • Go SDK external consumers and published examples point at ironflow-go (#2783)
  • Dashboard flow map legend icons match canvas nodes (#2743)
  • Docs: Command K search stays available after navigation (#2764)
  • Partial outbox index for HasPendingEventOutbox (#2830)
  • ADR 0120 (exclusive lease for SDK projection runners) and ADR 0121 (Rego policy sets)
  • Docs, skills and architecture diagrams synced with source; every example audited (#2732, #2759, #2765)
  • New docs: /releases/ landing with a product filter, scoped remote MCP walkthrough, verified order-rewind post (#2810, #2728, #2811)
  • Landing page: pick-your-stack hero, animated intro video, Triggers and Reactions diagram, Turnstile-verified waitlist with double opt-in (#2749, #2757, #2824, #2734)

Ironflow Desktop ships on its own cadence; see the Desktop v0.27.0 changelog.