orgo

orgo

Org is the source language, not an inconvenient input to be normalised into markdown.

orgo turns a directory of .org files into a static website. It treats org as the source language: the org element tree — headings, drawers, blocks, links with their org-specific semantics — is the document model, and that tree is rendered straight to HTML. There is no markdown-shaped intermediate representation, because the point is to preserve what markdown cannot express.

cargo run -- init my-site
cargo run -- serve my-site -o _site

Open 127.0.0.1:3000, edit any .org file, and the browser reloads itself.

Start here

What you get with no configuration at all

Point it at a directory of org files and you get a complete site: pages, navigation, syntax-highlighted code, and the stylesheet that colours it. Nothing about your files has to change, and no orgo.toml is required.

orgo build ~/notes -o _site

Configuration changes what you get. It is never what makes it work.

What it does that is unusual

Incremental builds are the architecture

Every page has a render key composed from its content, its resolved links, the site config and the templates. Editing one post re-renders that post, its section index, its tag pages, and the tag index whose counts changed — four pages, whatever the size of the site. A full build and an incremental build produce byte-identical output, and a test proves it.

It is measured against Emacs

cargo test --test oracle exports each test fixture with org's own HTML exporter through emacs --batch and records the disagreement. Heading structure, list nesting and source-block text match exactly. Everything that still differs is a deliberate choice, listed in Org support.

It tells you what your corpus actually uses

orgo audit ~/notes

The audit reports which org constructs appear in a corpus, how often, and whether each is supported — so you can find out before you trust a tool with your writing. It reports names, counts and file:line locations only, never document text, so auditing private notes stays safe to paste into an issue.

Feature summary

AreaWhat is there
Org syntaxheadings with TODO/priority/tags, lists (nested, description, checkboxes), tables, source blocks, quote/center/example/export blocks, footnotes, timestamps, links, images with captions
Outputsyntax highlighting via syntect, table of contents, section numbers, heading anchors
Structure#+SLUG: URLs, drafts, generated listing pages, tag pages and tag indexes, pagination, RSS feeds
Templatesminijinja layouts with inheritance, rich page metadata, custom filters
Workflowincremental rebuilds, watch on filesystem events, serve with live reload
Confidence152 tests, an emacs --batch differential oracle, a corpus audit tool

Status

This documentation site is itself an orgo site — the sources are in docs/ and it is built with the command in Quick start. If a feature is described here, it is being used to render the page describing it.