Programmatic document generation at Rust speed

One spec. An editable DOCX. A native PDF.

RusDox is a pure Rust engine for creating Word and PDF files programmatically. It turns YAML into large reports, dashboards, proposals, invoices, and internal document packs without Microsoft Word, LibreOffice, or slow office conversions.

Signed template registry

Start from a real Word design—with its receipts attached.

Browse curated invoices, proposals, reports, and compliance packs. Every entry includes its author, license, inputs, accessibility notes, output hashes, and inspectable DOCX/PDF parity evidence.

Template of the month

Board and Compliance Report

A landscape board packet with repeated scorecard rows, conditional risk narrative, a visible footer, and verified parity evidence.

Browse verified templates

Install after verification

rusdox template add board-report
  • Manifest Ed25519 signature
  • Assets SHA-256 verified
  • Install Local and atomic
  • Core crate No template payload

Install in 10 seconds

From shell to first document without an office runtime.

curl -fsSL https://raw.githubusercontent.com/OthmaneBlial/rusdox/main/scripts/install.sh | sh

Why teams use it

Built for document generation work that usually becomes slow, brittle, or painful.

RusDox is useful when documents are too important to build manually and too large or too frequent for slow office-based pipelines.

Executive reporting

Board packs, dashboards, and recurring operating reviews.

Generate leadership documents quickly enough to keep them in regular automation flows instead of turning them into manual formatting work.

Client document automation

Proposals, invoices, launch briefs, and polished outward-facing files.

Keep formatting consistent across customer deliverables while generating both Word and PDF from the same structured source.

High-volume internal generation

Large exports and template-driven jobs without office runtime overhead.

Use Rust speed where document size and generation frequency make slower stacks painful in CI, backend jobs, and internal tooling.

Documentation and API

Learn the system, then automate it.

Read the authoring model, configuration, CLI surface, examples, and Rust API in one place.

Documentation workspace

Open the full docs and work from the real project material.

Browse getting started, YAML blocks, configuration, CLI usage, examples, Rust API guidance, and the community pages in one focused reading surface.

Go to docs

Key reading

How it stays usable

Keep content, style, and generation separate.

01

Write blocks in order

Titles, paragraphs, bullets, metrics, and tables are declared top to bottom in YAML so the source reads like the document.

blocks:
  - type: title
    text: Weekly Brief
  - type: body
    text: Pipeline grew 14% week over week.
02

Move design into config

Typography, spacing, colors, output folders, and PDF behavior stay in config instead of being repeated in every file.

  • `[typography]`
  • `[spacing]`
  • `[colors]`
  • `[output]`
03

Render with CLI or Rust

Start with the CLI. Move to `DocumentSpec`, `Studio`, or the low-level document model only when the content becomes dynamic or highly custom.

CLI DocumentSpec Studio Document

Examples

Real specs, real outputs, no mockups.

The cards below link directly to the YAML specs, DOCX files, and PDF previews.

Contributor field guide

One fixture. Three acceptance checks. A contribution you can finish.

Ten maintained starter tasks remove the archaeology from a first pull request. Each issue points to a checked-in fixture, an isolated preparation command, and the evidence needed for review.

Start small

Choose a bounded, fixture-backed task.

Protocol, registry, documentation, and Windows integration tasks are ready to claim.

Open starter issues

Know the path

Trace authoring to both real outputs.

The architecture map shows where validation, OOXML, native PDF, parity, and adapters meet.

Read the architecture

Earn visible credit

Git-backed recognition, never invented names.

Meaningful merged work is credited in the contributor ledger, site, and relevant release notes.

Meet contributors

Benchmark

1000 pages. DOCX plus PDF. Still under one second in release mode.

RusDox 1000 page stress benchmark chart
Release total
679.86 ms
DOCX render
234.32 ms
PDF preview
284.91 ms
Parse stage
132.78 ms

Reproduce it with `scripts/generate_stress_yaml.sh` and `scripts/run_stress_yaml.sh --release`.

Open performance budgets