Skip to content

Releases: oxur/dendryform

dendryform v0.1.0 Release Notes

25 Feb 01:57

Choose a tag to compare

Released: 2026-02-20

Overview

dendryform v0.1.0 is the first public release of a declarative software architecture diagram tool written in Rust. It takes a simple YAML file as input and renders beautiful, dark-themed architecture diagrams as HTML, SVG, PNG, or ASCII art.

What Is dendryform?

dendryform is a diagram-as-code tool for software architects. You describe your system in a human-readable YAML schema — tiers, nodes, connectors, edges, containers, and a legend — and dendryform renders it into a polished visual diagram. The design is opinionated: dark theme by default, structured grid layouts, and a consistent visual language across all output formats.

Crate Structure

The workspace ships as 10 crates on crates.io:

Crate Role
dendryform-core Schema types, theme system, error handling
dendryform-parse YAML and JSON parser with custom serde deserializers
dendryform-layout Grid positioning, container nesting, coordinate engine
dendryform-html Self-contained HTML renderer with embedded CSS
dendryform-svg SVG renderer with absolute pixel coordinates
dendryform-png PNG renderer via resvg rasterization
dendryform-ascii ASCII art renderer
dendryform-export Lossy exporters: Structurizr DSL, Mermaid, JSON
dendryform-cli dendryform binary — render, validate, init, themes
dendryform Re-export crate for library consumers

Feature Highlights

YAML Schema

Diagrams are declared as an ordered sequence of layers. Each layer is one of:

  • tier — a horizontal band of nodes, optionally with grid layout and container nesting
  • connector — a visual divider between tiers (line or dots style, optional label)
  • flow_labels — a row of directional flow labels between tiers

Nodes support kind (person, system, component, infrastructure), color, icon (unicode), title, description, and tech stack tags.

Edges declare semantic relationships between nodes (uses, reads, writes, contains) and are used for export to Structurizr DSL and Mermaid.

A legend section provides a color-keyed reference.

Renderers

  • HTML: Fully self-contained output with embedded CSS. Dark theme. No external assets required.
  • SVG: Pixel-precise coordinates computed by the layout engine. Includes <tspan>-based text wrapping for long descriptions.
  • PNG: Rasterized from SVG via resvg. Fonts bundled by default (JetBrains Mono). High-fidelity output matching the SVG.
  • ASCII: Lightweight text rendering for terminals and plain-text environments.

CLI

dendryform render -i diagram.yaml -o diagram.html
dendryform render -i diagram.yaml -o diagram.svg
dendryform render -i diagram.yaml -o diagram.png
dendryform render -i diagram.yaml -o diagram.txt
dendryform validate -i diagram.yaml
dendryform init
dendryform themes

Output format is inferred automatically from the -o file extension. The init command scaffolds a starter diagram.yaml. The themes command lists available themes.

Container Nesting

Tiers can contain named containers with solid or dashed borders and colored labels. Containers can nest sub-tiers, enabling complex diagrams like the bundled Taproot example (a 4-tier MCP server diagram with nested knowledge engine container).

Export

dendryform-export provides lossy export to:

  • Structurizr DSL — for use with the Structurizr toolchain
  • Mermaid — for embedding in Markdown documents and GitHub wikis
  • JSON — machine-readable representation of the diagram model

Exports are described as "lossy" because visual positioning and connector styling are not representable in these target formats.

Examples

Three worked examples ship with the repository:

  • examples/taproot/ — Full production architecture diagram for a BigQuery analytics MCP server. 5 tiers, container nesting, 20 MCP tool nodes, 18 semantic edges.
  • examples/ai-kasu/ — AI-powered document processing pipeline.
  • examples/oxur-lisp/ — Architecture for a Lisp implementation project.

Quality

  • Test coverage: 95.23% regions / 95.41% lines / 98.30% functions (llvm-cov)
  • Linting: zero clippy warnings
  • docs.rs: All crates are docs.rs-ready with keywords, categories, and feature metadata

Known Limitations

  • Export formats (Structurizr, Mermaid) are lossy — visual layout information is not preserved.
  • The ASCII renderer is functional but does not yet support container nesting rendering.
  • Theme support is implemented but only the built-in dark theme ships in v0.1.0.