Skip to content

Ironflow v0.25.0

Ironflow v0.25.0 brings two new ways to see what your system is actually doing — a live flow map of triggers and functions, and an entity time-travel scrubber — plus an honest Python SDK, a duplicate-event fix in projections, and a tidier local dev footprint.

  • Local dev state consolidated under .ironflow/: the default SQLite path moved from ironflow.db in the working directory to .ironflow/ironflow.db, and the embedded NATS store and filesystem blobs moved under .ironflow/ too. An existing local dev database will not be picked up — move it into .ironflow/ or pass --db ironflow.db to keep the old location. This affects local dev only; PostgreSQL deployments are unchanged (#1252)
  • Flow map: a live map of your declared triggers and functions, animated by the event firehose as runs fire. Edges are both declared and learned — the dashboard infers causation from what your functions actually emit, so the map shows the system you built, not just the one you described. Wildcard triggers light up alongside exact matches (#1262, #1275, #1293)
  • Entity time-travel scrubber: step an entity stream forward and backward through its event history and inspect the reconstructed state at any version — the fastest way to answer “when did this entity go wrong?” (#1263, #1276)
  • Python SDK: a reworked generator pipeline, a real error model, published reference docs, and a CI gate that fails when generated code drifts from the protobuf source (#1390)
  • ironflow serve --dev --reset: wipe local dev state (SQLite DB, NATS store, blobs, JWT secret, bootstrap key) and boot fresh. Two gates keep it safe — it requires --dev and refuses to run under PostgreSQL (#1252)
  • ironflow serve --nats-port: pin or randomize the embedded NATS port, so several engines can run side by side on one machine (#1257)
  • Desktop session endpoint: mint a short-lived dashboard JWT from an API key, letting a trusted local client embed the dashboard without a login round-trip (#1271)
  • Projections no longer double-publish: user events emitted from a projection were published to PUBSUB twice, so every subscriber saw duplicates. Fixed at the source (#1254)
  • KV Store protects the SYS_ namespace: system buckets are hidden from the KV list API, and creating or deleting a SYS_-prefixed bucket is now rejected. The reserved namespace is enforced at the REST chokepoint instead of relying on every internal caller to respect it — previously SYS_policy_epoch rendered as a deletable row in the dashboard (#1327)
  • Docs and marketing sites: license page 404s, cross-site nav links opening in a new tab instead of navigating in place, and cloud waitlist CTAs not scrolling to the top of the page (#1316, #1335, #1336, #1353)
  • When Ironflow fits: a new explainer on where Ironflow belongs in an agentic system, and what it deliberately does not do (#1402)
  • Documentation accuracy: several full drift audits across the SDK reference, CLI reference, tutorials, how-to guides, and internal docs, correcting env-var names, enterprise-tier claims, and command signatures; product messaging is now aligned between marketing and docs (#1303, #1332, #1333, #1337, #1403)
  • Getting Started: SDK tabs for emit and projection queries, so the walkthrough covers both SDKs instead of assuming one (#1347)
  • Skills: corrected ironflow-start and ironflow-code content, removed dead exemptions and fictional fixtures, and added guards that keep the skill tree from drifting from source again (#1395, #1400)
  • Dependencies: refreshed Go and JavaScript dependencies; upgraded Astro, Starlight, and wrangler across the docs and marketing sites (#1305, #1319, #1353)
  • CI/CD: docs and marketing now auto-deploy on merge to main when related files change (#1306)
  • Code review program: a phased review program covering the whole codebase, with the first phase reporting on internal/ foundations and its findings fixed (#1418, #1420, #1443)
  • ADR 0046 records the subscription-auth vs BYOK decision for the built-in agent (#1387)
  • make docker-publish-latest target and an install-dev embed fix (#1253)

Ironflow Desktop ships on its own cadence — see the Ironflow Desktop changelog for what landed there.