UML that compiles.

puml is a fast, deterministic diagram engine written in Rust. It speaks PicoUML, PlantUML, and Mermaid through one shared pipeline and emits byte-stable SVG — no Java, no Graphviz, no surprises.

·
Rendered examples
·
Diagram families
3
Frontend dialects
SVG
Canonical output

Why puml?

A compiler-grade diagram tool. Source-of-truth `.puml`, deterministic SVG, multi-language frontend, batteries included.

Deterministic SVG

Byte-stable output across runs and platforms. The same `.puml` always produces the same SVG — perfect for snapshot tests and version control.

One engine, three dialects

PicoUML, PlantUML, and Mermaid frontends share one Rust parser, normalizer, layout, and renderer.

Docs-as-tests

Every example in this gallery is also a fixture in the test suite. The corpus grows automatically with the engine.

Scriptable CLI

Stream stdin, dump AST/model/scene as JSON, lint markdown, batch-render — first-class CI primitives.

Compiler diagnostics

Line/column spans, caret snippets, stable error codes, JSON diagnostics. Real validation, not "looks fine".

No JVM, no Graphviz

A single static Rust binary. Runs on CI in milliseconds. The editor on this site runs entirely in your browser.

Frontend dialects

All three frontends route into the shared semantic model and the same deterministic render path.

PicoUML First-class

The canonical language surface. Block markers @startpicouml / @endpicouml are normalized to PlantUML internally.

PlantUML Compat target

Full 1:1 parity is the roadmap goal. Many core families are implemented; advanced rows are tracked as partial in the parity audit.

Mermaid Selected families

First-class for sequenceDiagram, flowchart, classDiagram, stateDiagram, and erDiagram.

Featured diagrams

A sampler from the live gallery. See all examples →

Get started

Three flavors. Pick yours.

In the browser

Open the studio editor and start typing. Code highlighting, the full example corpus, and instant preview — no install needed.

On the CLI

cargo install --git https://github.com/alliecatowo/puml
puml my-diagram.puml

In your editor

The VS Code extension lives under extensions/vscode/. The LSP server ships as the puml-lsp binary.