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.
A compiler-grade diagram tool. Source-of-truth `.puml`, deterministic SVG, multi-language frontend, batteries included.
Byte-stable output across runs and platforms. The same `.puml` always produces the same SVG — perfect for snapshot tests and version control.
PicoUML, PlantUML, and Mermaid frontends share one Rust parser, normalizer, layout, and renderer.
Every example in this gallery is also a fixture in the test suite. The corpus grows automatically with the engine.
Stream stdin, dump AST/model/scene as JSON, lint markdown, batch-render — first-class CI primitives.
Line/column spans, caret snippets, stable error codes, JSON diagnostics. Real validation, not "looks fine".
A single static Rust binary. Runs on CI in milliseconds. The editor on this site runs entirely in your browser.
All three frontends route into the shared semantic model and the same deterministic render path.
The canonical language surface. Block markers @startpicouml / @endpicouml are normalized to PlantUML internally.
Full 1:1 parity is the roadmap goal. Many core families are implemented; advanced rows are tracked as partial in the parity audit.
First-class for sequenceDiagram, flowchart, classDiagram, stateDiagram, and erDiagram.
Three flavors. Pick yours.
Open the studio editor and start typing. Code highlighting, the full example corpus, and instant preview — no install needed.
cargo install --git https://github.com/alliecatowo/puml
puml my-diagram.puml
The VS Code extension lives under extensions/vscode/. The LSP server ships as the puml-lsp binary.