Getting started
Install
puml ships as a single static Rust binary. The fastest path today is cargo install from source:
That gives you the puml CLI on your $PATH. There is also a separate language-server binary, puml-lsp, used by the VS Code extension.
No JVM, no Graphviz, no runtime services. The browser editor on this site doesn’t need any of them either — everything runs locally.
Your first diagram
Create a file hello.puml:
@startuml
Alice -> Bob: Hello
Bob --> Alice: Hi there
@enduml
Render it:
# wrote hello.svg
Open hello.svg in any browser or image viewer. You can also pipe through stdin and stream the result:
|
Or render PNG (rasterized from the canonical SVG):
Validate without rendering
The --check mode parses and normalizes without emitting SVG. Use it as a CI lint:
Add --diagnostics json for machine-readable output, perfect for editor integrations and bots.
Try it in the browser
You can skip the install entirely and use the studio editor on this site. It loads CodeMirror with .puml syntax highlighting and renders diagrams live in your browser via the puml WASM bundle — see In-browser renderer for how that bridge works.
Wire it into your editor
VS Code
A first-party extension lives in extensions/vscode/ in the repo. It speaks to the puml-lsp binary for diagnostics, hover, and semantic tokens. See the VS Code extension spec for the contract.
Anything with LSP support
Run puml-lsp over stdio and point your editor at it. The LSP spec documents capabilities, message shapes, and semantic-token taxonomy.
Markdown documents
If your docs are full of fenced code blocks, you can render them directly:
See Markdown fences for the full set of supported fence languages.
Next
- Learn the language: Syntax primer.
- Browse what’s possible: Gallery.
- Drill into a family: Sequence diagrams.