Architecture

How it works — the local-first architecture, honestly

BPMN Studio is a static bundle of HTML, JavaScript, and CSS. Once it loads, there is nothing left to talk to: no backend, no database, no accounts, no analytics, no third-party scripts. This page explains how each feature works under that constraint — and what the trade-offs are.

Your files

In Chromium browsers (Chrome, Edge, Brave, Arc) the editor uses the File System Access API: when you open a .bpmn file it keeps a handle to it, and Ctrl+S writes straight back to that file, like a desktop app. The handle lives in your browser only; the permission is one you grant and can revoke. In Firefox and Safari, which don't ship that API, opening uses a standard file picker and saving downloads a new copy — the editor says so explicitly rather than pretending it overwrote the original.

Autosave and recents

While you edit, the diagram is written to IndexedDB — the browser's local database — about two seconds after each change. If the tab crashes or you close it accidentally, the next visit offers to restore that copy. Recents (name, preview, timestamp) live in the same database. All of it is inspectable in your browser's developer tools, and a single Clear local data action in the Tools menu removes everything. In private browsing, where IndexedDB may be unavailable, the editor tells you autosave is off and continues working.

Share links with no server

The share feature compresses the entire diagram XML (deflate), encodes it as URL-safe base64, and puts it after the # in the link. Browsers never send the fragment to any server — it exists only in the address bar and in whatever chat message you paste it into. The recipient's browser decompresses it locally and shows a read-only view with an explicit "edit a copy" action. The honest limitation: URLs have practical length limits, so a diagram that compresses beyond ~30,000 characters can't be shared this way — the editor blocks it and says to send the file instead.

Validation

The rules engine parses the BPMN XML in a Web Worker — off the main thread, so a large diagram doesn't freeze the canvas — and runs structural checks: connectivity, gateway conditions, parallel split/join matching, pool boundary discipline, reachability from start events, loops with no exit, duplicate ids, lane assignment, and naming. The findings are written in plain language, with the consequence stated, because "gateway G_17 violates §10.5.3" helps nobody.

Offline

A service worker caches the application shell after your first visit. From then on the editor loads and works with no network at all — on a plane, behind an airgap, wherever. Combined with local files, this means the entire toolchain functions without connectivity.

What this architecture costs

Honesty requires the other column. There is no cross-device sync — your files are where you put them. There is no real-time collaboration: share links are snapshots, not live sessions. Autosave lives in one browser profile on one machine. If those trade-offs are wrong for your team, a hosted tool is the right answer; if what you want is a serious modeler where the data provably never leaves your control, this is that.

Verifying the claims

You don't have to take any of this on trust. Open your browser's network inspector, load the editor, then open and edit a diagram: after the static assets, there are no requests. The BPMN rendering is bpmn-js, the battle-tested open-source engine behind Camunda Modeler, under Apache 2.0.

Ready? Open the editor — or start with a worked example.