Zorto
The AI-native static site generator (SSG) with executable code blocks & more.
Features
Slide decks
Build presentation decks from markdown: one file per slide, weight-ordered, template-driven, and easy for humans or agents to edit.
Executable code blocks
Run Python and Bash at build time. Matplotlib, Plotly, Altair, and Seaborn charts rendered inline. Output baked into static HTML.
Fast
Written in Rust. Sites build in milliseconds. Live reload with instant browser refresh during development.
16 themes
Built-in themes with light and dark mode. Switch instantly. Override any template or style locally.
AI-native
Your site is markdown + config. AI agents can read, edit, and build it. AGENTS.md contracts, zorto check for validation, llms.txt for consumption.
Shortcodes & callouts
Tabs, figures, diagrams, callout alerts, code includes, and more. Rich content without HTML in your markdown.
Blog & docs
Sections with date sorting, pagination, taxonomies, and search. Blog, documentation, and landing page templates included.
Python & Rust
Install via uv, pip, or cargo. Use as a CLI, Python library, or Rust crate. MIT-licensed forever.
Built-in search
DuckDB-backed client-side search. The public site data lives in site.ddb and is queried locally in the browser.
Data apps
Ship local DuckDB data with static pages, lazy-load browser runtime only where needed, and build dashboards from HTML, CSS, and JavaScript.
The AI-native static site generator (SSG) with executable code blocks & more.
Install #
curl -LsSf https://dkdc.sh/zorto/install.sh | sh
Verify:
zorto --version
zorto 0.25.0
More install options
The curl | sh installer above wraps uv tool install zorto. On Linux and macOS it pulls a pre-built wheel from PyPI that bundles the Rust engine (no compile step). Windows is not covered by the installer — use cargo from source or run under WSL.
uv (PyPI wheel, no compile):
uv tool install zorto
uvx (run once without installing):
uvx zorto
cargo (build from source, requires Rust 1.85+):
cargo install zorto
Usage #
zorto --help
The AI-native static site generator (SSG) with executable code blocks & more.
Usage: zorto [OPTIONS] [COMMAND]
Commands:
init Initialize a new site
new Create a new site without prompts
demo Start a temporary demo deck
preview Start preview server with live reload
build Build the site
check Check site for errors without building
clean Remove output directory and/or cache
help Print this message or the help of the given subcommand(s)
Options:
-r, --root <ROOT> Site root directory [default: .]
-N, --no-exec Disable execution of code blocks ({python}, {bash}, {sh})
--sandbox <SANDBOX> Sandbox boundary for file operations (include shortcode, etc.). Paths cannot escape this directory. Defaults to --root
-h, --help Print help
-V, --version Print version
Quickstart:
zorto init # set up a new site (interactive)
zorto preview --open # preview with live reload
Docs: https://zorto.dev/docs
Slide decks #
Zorto builds presentation decks from markdown: one file per slide, with frontmatter for layout, background, and template-specific behavior. A deck is just a directory of .md files that a human or agent can draft, reorder, or hand off without touching every slide at once.
- Live intro deck: what a Zorto-built deck looks like.
- Create a presentation: step-by-step guide.
- Presentations concept: the content model behind decks.
Executable code blocks #
Use {bash} or {python} in code blocks to execute them.
echo "hello"
hello
echo "Built on $(uname -s) $(uname -m) at $(date -u '+%Y-%m-%d %H:%M UTC')"
Built on Linux x86_64 at 2026-05-17 04:04 UTC
for i in range(5): print(i)
0
1
2
3
4
Tip
If you’re reading elsewhere, see https://zorto.dev for the rendered results of the code blocks above.