I could describe a system faster than I could draw it. That frustration became Codelit: start with the intent, produce a draft, then give people the controls to question and improve it.
The drawing was only the beginning. The real product was the editing loop.
is a Thread-first workspace that brings product planning, architecture, and agent workflows around a conversation, with dedicated apps for inspecting and developing the work.
What did the first prototype teach me?
The first version of Codelit was a text input, a button, and GPT-3.5 on the backend. You'd type "design a URL shortener" and it would spit out Mermaid syntax. I'd render that Mermaid into an SVG and call it a day.
The output was brittle: invalid syntax, unresolved references, and diagrams that looked plausible while describing the wrong thing. Repairing the model's output became a larger job than rendering it.
But people got it immediately. I showed three engineer friends and all of them said some version of "wait, can it do [thing I'm working on]?" That was enough interest to justify another iteration, not proof of product-market fit.
Why did Mermaid turn out to be the wrong engine?
Codelit needed an editor, not only a diagram renderer. Mermaid can attach interactions to SVG output, but dragging nodes and editing their properties called for a different model. React Flow let the graph participate in the same component system as the rest of the app.
| Option | What you get free | What it costs | Verdict |
|---|---|---|---|
| Raw HTML5 Canvas | Total control over rendering | Zoom, pan, selection, hit testing, keyboard shortcuts, and accessibility, all hand-built | A multi-month project for one person. Pass. |
| D3.js | Flexible visualization and layout primitives | More editor behavior and React integration to own | Useful primitives, more assembly than I wanted |
| React Flow (@xyflow/react) | Pan, zoom, selection, good TypeScript types, custom nodes as plain React components | You inherit its node and edge data model | The obvious choice |
I actually tried the raw canvas route for a weekend before writing it off. Drawing boxes is easy. Everything after drawing boxes is the entire product.
The real pivot was parsing AI output into React Flow's node and edge format instead of Mermaid syntax. I wrote a parser that takes the AI's structured JSON response and converts it into { id, type, position, data } nodes and { source, target, animated } edges. That was harder than it sounds, because the model has no idea about pixel positions, which is how I ended up building a layout engine on top of the interactive canvas.
What stack do you pick when you're the only developer?
Codelit runs on Next.js with the App Router, Zustand, React Flow, and Firebase. Every one of those choices was made under the same constraint: I'm a solo developer, so anything that costs me a week of setup has to earn that week back almost immediately.
Next.js (App Router). Server-rendered marketing and content pages keep meaningful HTML available without waiting for the editor. Client components handle the interactive workspace, while route handlers cover server-side work. One framework keeps those boundaries close without pretending they are the same execution environment.
Zustand over Redux. Codelit runs on a handful of stores: canvas state, AI generation state, user preferences, template data, undo/redo history, and UI panels. Redux would mean a slice each with actions, reducers, selectors, and a wall of boilerplate. Zustand is create((set) => ({...})) and you're done. For a solo dev, the reduced cognitive overhead is massive.
React Flow (@xyflow/react). It removed the editor plumbing I did not want to own. Layout, validation, and a useful interaction model were still my responsibility.
Firebase. Auth and database in one SDK. I didn't want to run a Postgres instance, set up migrations, manage connection pools, or deal with auth middleware. Firebase Auth handles Google and GitHub sign-in. Firestore stores diagrams as documents. It's not the cheapest at scale, but for a product finding market fit, speed of iteration beats cost optimization.
Why did I leave coding education behind?
Codelit didn't start as an architecture tool. The original idea was a coding education platform: interactive coding exercises with AI hints. I built about 30% of that before realizing the architecture diagram feature I'd hacked together as a "bonus feature" was getting more usage than the actual coding exercises.
I killed the education platform and went all-in on architecture generation. This was scary because I'd spent two months on the education features. But the data was obvious: people were sharing the diagrams, not the coding exercises.
Which problems changed the product most?
Three problems kept pulling me back into the product: plausible but wrong AI output, a layout engine that took six rewrites, and pricing copied from a tool with a different usage pattern. Each needed a product decision, not just another prompt.
| What broke | Where it started | Where it landed |
|---|---|---|
| AI output, bad for the first 3 months | Prompts alone, producing suggestions like a load balancer behind the database | Months of prompt engineering, output validation, and a feedback loop over hundreds of manually reviewed diagrams |
| Node layout | Early grids and force-directed experiments | A separate graph-depth layout path with manual editing |
| A $19/month price copied from Lucidchart | $12/month | $5/month with a 7-day trial, which is when conversions jumped |
The AI output wasn't "needs minor tweaking" bad. It was "suggests putting a load balancer behind the database" bad. Fixing it meant sitting down with hundreds of generated diagrams, tagging what was wrong, and tuning the system prompts against that. The generation pipeline that came out of it is a post of its own.
The layout work taught me to separate topology from geometry. The current architecture canvas uses graph depth and type-based fallback rows; the user can then adjust the result. The important boundary is that a model does not need to invent pixel coordinates.
Pricing was the one that stung, because it was the one I could have reasoned my way out of. I launched at $19/month because I looked at what Lucidchart charges. But Codelit isn't Lucidchart. It's a tool engineers reach for on specific tasks, not all day every day. $19 felt expensive for something you use a few times a month. I dropped to $12, then eventually settled at $5/month with a 7-day trial, and conversions jumped. The dated growth retrospective, is separate.
How did architecture diagrams lead to agent workflows?
Agent workflows made the same editing problem more consequential. A diagram can be wrong without changing a system; a tool call can write to one. I wanted the plan, permissions, and evidence to remain visible when the workflow moved from design toward execution.
A workflow needs more than a list of agents. It needs a defined input, tool boundaries, model choices, approval points, and an explicit account of what happens when a step fails. Provider routing is one part of that, not a substitute for the rest.
What does a dry run actually prove?
A dry run helps you inspect a workflow's intended sequence without treating the simulation as a completed job. It can expose missing inputs and awkward approval points. It cannot prove that a provider is connected, that an action is permitted, or that a real result reached its destination.
That distinction shapes the product:
| State | What it tells you | What remains to verify |
|---|---|---|
| Generated plan | The proposed sequence and assumptions | Whether it solves the user's actual task |
| Installed workspace app | The tool is present in the workspace | Required account connections and service availability |
| Dry run | How the simulated flow is intended to progress | Real model and provider behavior |
| Live run result | What the runtime reports happened | Provider receipts and any external delivery |
| Exported starter | A reviewable implementation scaffold | Configuration, tests, and production readiness |
Approval gates and budgets matter, but no label should imply that an agent cannot fail or incur unexpected costs. The useful result is a bounded run with evidence you can inspect.
What is Codelit today?
Codelit now starts with a Thread and the question, "What should we make real?" Product Plan, Architecture, Agent Teams, and Browser are workspace apps around that conversation. The design goal is to keep the task in one place while making each tool's role explicit.
The architecture work is still there: editable diagrams, the template library, failure simulations, and rough cost estimates. A simulation is not a production incident test, and an estimate is not a cloud quote.
As of September 2026, the plans are Free, $5/month Pro, and $15/month Team. Hosted model and browser usage have their own allowances and availability requirements. The pricing page is the place to check current limits.
The through-line is unchanged: turn intent into something you can inspect, make the next decision visible, and keep the difference between a plan and a completed action honest.
What would I build earlier next time?
Three things: start with the canvas instead of Mermaid, charge from day one instead of running a free beta, and start writing content in month one rather than month three. The common lesson is to put the core editing and feedback loops in front of people sooner.
Start with the canvas, not Mermaid. The Mermaid detour cost me three weeks. I should've gone straight to React Flow.
Write content earlier. Useful architecture walkthroughs can demonstrate the product while teaching something on their own. I would begin that work alongside the prototype, then measure whether readers actually activate.
Open Codelit with one real task in mind. Inspect the plan, change a decision, and see whether the next step gets clearer. That is the test I want the product to pass.
If you are building something similar, I am happy to compare notes. The most useful conversations are usually about the part that still does not work.
Questions people actually ask
- What is Codelit?
- Codelit is a Thread-first workspace for planning products, exploring architecture, and building agent workflows. Apps such as Product Plan, Architecture, Agent Teams, and Browser sit around the conversation. Installing an app is separate from connecting an account or executing a task; a generated plan is not proof that the work happened.
- Why use React Flow instead of Mermaid for architecture diagrams?
- Mermaid is useful for diagrams stored as text and can support links and callbacks. React Flow fits a different requirement: a node-based editor whose nodes are React components. Codelit needed dragging, selection, and editable properties, so a shared graph model and editor were a better fit than extending an SVG renderer.
- Why did Codelit pivot away from being a coding education platform?
- Because usage said so. Codelit started as a coding education platform with interactive exercises and AI hints, and about 30 percent of it was built when the architecture diagram feature, added as a bonus, began getting more usage than the exercises themselves. People were sharing the diagrams and nobody was sharing the exercises. Two months of work on the education features got killed, which was uncomfortable, but the data was not ambiguous.
- How much does Codelit cost?
- As of September 2026, Codelit lists a Free plan, Pro at 5 dollars a month, and Team at 15 dollars a month. Model usage, hosted browser time, and subscription features have separate limits. Check the current pricing page and checkout for allowances rather than treating a subscription as unlimited execution.
- How do you test an AI agent workflow before running it on real systems?
- Use a dry run to inspect the intended sequence, then test a narrowly scoped live run with the necessary account permissions and approval gates. A simulation cannot establish that OAuth works, a provider action succeeded, or an external message arrived. Check the actual run evidence at each boundary before trusting a broader workflow.