figureflow worked. I shut it down anyway.

2026-06-30

Two questions answered — wrapping React Flow in Python (yes), and LLM-authored interactive diagrams (static mermaid wins), leading to a clean sunset

The thing that ended figureflow was finishing it. I’d just shipped the v3 surface — a published JSON Schema, a single validate() funnel that collects every problem into one repair-friendly error, from_mermaid(), an MCP server so an agent and a human could edit the same canvas — the whole machinery for letting an LLM author a diagram coordinate-free. It was the most satisfying engineering in the project. And somewhere in the middle of writing the docs for it, I asked myself the question I’d been postponing: would I actually reach for this in any of my own projects? The answer was no, and once I’d said it plainly I couldn’t un-say it.

figureflow started as a curiosity with a narrow question attached: can React Flow be wrapped in Python easily, so you build interactive flow diagrams from a notebook without touching JavaScript? anywidget turned out to make that far more tractable than I expected. The result genuinely worked — every node and edge styled per-element from Python, shape and fill and border and font set as keyword arguments, the way you’d format a single shape in PowerPoint. That was the “this is very cool” moment that kept me going. The front-end bundled into the wheel so it installed with one pip install and ran offline, no CDN, no toolchain for the end user. By v2 the same renderer shipped through three doors — display() in a notebook, to_html() for an offline interactive snapshot, serve() for a live browser tab over a dependency-free stdlib server. Decoupling the renderer from how it’s delivered was the cleanest design decision in the whole thing, and it paid for itself every time I added a new target.

So the first question was answered with a working library. The second question is the one I’d quietly been treating as the real point: could this be the thing an LLM agent uses to create interactive diagrams? That’s what v3 was for. And building it out is exactly what answered it — in the wrong direction.

Here’s what I kept running into. When an agent emits a diagram, the diagram is almost always going into something — a doc, a notebook cell, a chat reply, a README. Those places want a static picture. A mermaid flowchart drops into all of them, renders everywhere, and survives being copied around because it’s just text. The interactive layer — drag the nodes, sync positions back, edit live in a browser tab — is the entire reason figureflow exists over just printing mermaid, and it’s precisely the part an agent workflow has no use for. I’d built a beautiful funnel for getting an LLM to author an interactive artifact, and the honest truth was that for almost every agent and document workflow I could think of, static was simpler, more portable, and good enough. The interactive layer added real cost with no clear payoff for that audience.

That left me with two answered questions and no third one worth the maintenance. Curiosity satisfied: yes, you can wrap xyflow in Python, and it’s a pleasant way to draw. Usefulness in my own work: not really — I don’t have a workflow that needs human-and-agent co-editing of a live diagram, and pretending I did to justify the upkeep would have been a slow way to resent the project. Jupyter, anywidget, and React Flow will all keep moving, and something would eventually break; the choice was to chase those breaks indefinitely for a tool I wasn’t using, or stop.

I stopped. What made stopping easy was that there was nothing half-built to feel bad about. The whole project ran on plan-driven iterations — a SKELETON plus numbered iteration docs, with honestly-gated stubs — so every version was a complete, coherent surface rather than a pile of in-progress branches. v3 was a finished release, tests at full coverage, the README and changelog current. Archiving it meant freezing a clean thing, not abandoning a mess. The same discipline that kept it shippable at every stage is what made it safe to walk away from.

The code stays public and installable, frozen where it is, with a warning on the README that it’s unmaintained and a sunset.md that records the reasoning. If you want what figureflow did, the honest pointers are the two libraries underneath it: mermaid for the static diagram you almost certainly actually want, and React Flow directly if you genuinely need an editable canvas. figureflow was a Python wrapper around the second to answer a question about the first. Both questions are closed now, and that’s a good place to leave it.

View as Markdown — raw source for agents and LLMs