The open-source, local-first diagramming tool with AI generation built in.
No account. No cloud. No limits. Free forever.
Open the App β Β Β·Β Documentation Β Β·Β Website Β Β·Β Report a Bug
OpenFlowKit is a fully open-source diagramming tool that runs entirely in your browser. It combines a fast, professional canvas with AI generation so you can go from a plain-English description to a structured, editable diagram in seconds.
There's no account to create, no server storing your work, and no feature gated behind a paywall β ever. Your diagrams live in browser local storage and stay there unless you explicitly export or share them.
You: "Draw a microservices architecture with an API gateway, auth service, product service, and Postgres database" OpenFlowKit: *builds it* | OpenFlowKit | Lucidchart / Miro | draw.io | |
|---|---|---|---|
| Open source | β MIT | β | β |
| AI generation | β Built-in | π° Paid tier | β |
| Local-first | β Zero cloud | β Cloud only | |
| No account needed | β | β | β |
| Bring your own API key | β | β | β |
| OpenFlow DSL (code as diagram) | β | β | β |
| Playback & history export | β | β | β |
| Free forever | β | β Freemium | β |
Describe what you want in plain English. OpenFlowKit calls the AI with your own API key and builds a fully editable diagram. No middleman, no usage fees, no data sent to our servers.
Supports Gemini and OpenAI-compatible endpoints. Works with any locally-run model behind a compatible API.
Every diagram is round-trippable code. The OpenFlow DSL is a human-readable, git-friendly format β paste code in, get a diagram; export a diagram, get code. Ideal for version-controlled documentation.
flow: "Payment Processing" direction: LR node checkout [label: "Checkout"] node gateway [label: "Payment Gateway", shape: diamond] node success [label: "Success", shape: capsule] node failure [label: "Retry", shape: capsule] checkout -> gateway gateway -> success [label: "Approved"] gateway -> failure [label: "Declined"] One-click auto-arrange with ELK.js β the same layout engine used by Eclipse and VS Code's diagram extensions. Hierarchical, layered, force-directed, and radial modes for any graph shape.
Every edit is recorded. Scrub through your diagram's full edit history visually. Export the playback as an animated GIF or PNG sequence β useful for walkthroughs, onboarding docs, and architecture reviews.
20 curated starter templates so you're never staring at a blank canvas:
| Category | Templates |
|---|---|
| Workflows | Generic flowchart, operational runbook, decision tree |
| Cloud Architecture | AWS 3-tier, Azure landing zone, CNCF platform, Kubernetes cluster |
| Planning | Mind map, user journey, affinity map, roadmap |
| Wireframes | Mobile screen, browser app, component hierarchy |
- Core shapes β rectangles, rounded rects, capsules, circles, diamonds, hexagons, cylinders, parallelograms, and more
- Specialised nodes β process, decision, start/end, annotation, text block, section, image, browser frame, mobile frame, architecture icon node
- AWS β full SVG icon pack with provider categories
- Azure β Microsoft architecture SVG pack
- CNCF β cloud-native artwork pack
- Lucide β 1,000+ general-purpose icons
SVG Β· PNG Β· JPG Β· Mermaid Β· OpenFlow DSL Β· JSON Β· Figma paste
Browser-based peer-to-peer collaboration via WebRTC room links. No server, no accounts, no persistence β just share a link and work together live.
| Layer | Technology | Why |
|---|---|---|
| UI framework | React 19 + TypeScript 5 | React Compiler for automatic memoisation |
| Canvas | React Flow / XYFlow 12 | Best-in-class graph canvas |
| Layout engine | ELK.js | Professional-grade auto-layout |
| State | Zustand 5 | Lightweight, per-slice architecture |
| Styling | Tailwind CSS 4 | Utility-first, zero runtime CSS |
| Animation | Framer Motion | Canvas transitions and playback |
| Build | Vite 6 | Fast HMR, optimised chunking |
| Tests | Vitest 4 + Testing Library | 637 tests, fast parallelised runs |
| Docs | Astro + Starlight | Static, multilingual (EN + TR) |
| Hosting | Cloudflare Pages | Free tier, global CDN, 3 separate projects |
- Node.js 18+
- npm 9+
git clone https://github.com/Vrun-design/openflowkit.git cd openflowkit npm install npm run dev # β http://localhost:5173To use AI generation, open Settings β AI in the app and add your Gemini or OpenAI API key. It's stored locally in your browser β never sent to us.
npm run build # compile + bundle npm run bundle:check # verify bundle size budgetsnpm run dev --workspace=docs-site # β http://localhost:4321npm run dev --workspace=web # β http://localhost:4320npm test -- --run # full suiteFocused suites for faster iteration:
npm run test:s0 # store, history, canvas core types npm run test:s10-state # state management and persistence npm run test:s10-canvas # canvas interaction logic npm run test:s4-handle-safety # edge handle safety rulesTypeScript and lint:
npx tsc --noEmit # type check npx eslint src # lintsrc/ components/ command-bar/ Command palette β Assets, Templates, Design, Code, AI views flow-canvas/ Canvas orchestration, node/edge renderers, overlays home/ Dashboard, settings, welcome surfaces properties/ Node, edge, and canvas side panels top-nav/ Nav bar β export, share, history, collaboration config/ Rollout flags (feature gating) hooks/ Editor hooks β clipboard, history, playback, interaction lib/ Shared types, OpenFlow DSL parser, utilities services/ collaboration/ WebRTC room links and sync transport shapeLibrary/ Provider icon catalog, lazy SVG loading templateLibrary/ Starter template registry playback/ Playback model, step generation, GIF export store/ Zustand store β slices, defaults, persistence docs-site/ Astro + Starlight documentation (EN + TR) web/ Astro marketing landing page assets/ third-party-icons/ AWS, Azure, CNCF SVG packs + source metadata scripts/ shape-pack/ Icon pack intake and validation tooling See ARCHITECTURE.md for deep-dives on:
- Store slice design and per-slice hook pattern
- History V2 (per-tab
past/futurearrays, no global snapshot) - ELK singleton and layout pipeline
- Export pipeline and bundle chunking strategy
- Rollout flag system for safe feature gating
See CONTRIBUTING.md for full setup instructions and code guidelines.
The two rules that matter most:
- Never rename storage keys.
openflowkit-storage,flowmind-clipboard,flowmind_snapshotsβ changing these silently wipes existing user data. - New features go behind a rollout flag. Add an entry to
src/config/rolloutFlags.tsand gate the code path. Flip the default totruein a separate PR once validated.
Before opening a PR: tsc --noEmit and eslint must be clean, and all 637 tests must pass.
Three independent Cloudflare Pages projects, one repo:
| Project | URL | Build command | Output |
|---|---|---|---|
| App | app.openflowkit.com | npm run build | dist/ |
| Docs | docs.openflowkit.com | npm run build --workspace=docs-site | docs-site/dist/ |
| Landing | openflowkit.com | npm run build --workspace=web | web/dist/ |
Full setup guide: docs/cloudflare-pages-setup.md
OpenFlowKit ships with third-party SVG icon packs under their own licenses. Check SOURCE.md before redistributing.
| Pack | License info |
|---|---|
| AWS | assets/third-party-icons/aws/SOURCE.md |
| Azure | assets/third-party-icons/azure/SOURCE.md |
| CNCF | assets/third-party-icons/cncf/SOURCE.md |
| GCP | Redistribution not yet cleared β intake gated |
OpenFlowKit's own source code is MIT licensed.
openflowkit.com Β· app.openflowkit.com Β· docs.openflowkit.com
Made with β Β· MIT License
If OpenFlowKit is useful to you, a β on GitHub goes a long way.