[idea:26w35-rheo]rheo2026-08-30

Rheo

I explained some of the motivation for 0.6.0 last week, so I won’t go into the details here, but my Monday was consumed by releasing this and quality controlling its impact on all the existing Rheo sites I maintain. I also rewrote significant sections of Rheo’s documentation, in part because 0.6.0 adds some new concepts, and in part because some of it was messily synthesized by LLMs. I’m aiming not to have any of the documentation written by an LLM, but they’re inarguably useful for highlighting misalignments between code versions and the documentation in new releases. As a result of somewhat lazily saying “fine, template me the section” on a couple of occasions, some of the prose was giving that dumbly omniscient smell that results from giving LLMs too much control over a writing project.

Now that Rheo’s API is starting to stabilize, at least in my personal use of it, it’s perhaps useful to recall why I built it in the first place. The basic motivation for Rheo as a whole was to provide a wrapping around Typst that would be both durable and extensible for the ways in which I am personally interested in using the language. These ways include producing beautiful and usable EPUBs (a research project), and being the basis for a better local-first writing, note-taking, and task management workspace. I currently achieve a hacky version of the latter using Org-mode and Dropbox, but Typst promises to make the draft-to-publication workflow much smoother, whether ‘publication’ means export as a PDF, as HTML to include in a website, as an EPUB, or all three simultaneously.

When I started developing Rheo in late 2025, I fielded some questions from Shriram Krishnamurthi about why Rheo was necessary or useful in addition to Typst. There are a number of simple answers that I included in Rheo’s FAQ, such as that Rheo gives you EPUB export and arguably simpler project organization. I’d now also add that Rheo enhances the capabilities of the package ecosystem, and provides mechanisms to mix and match bundle export with Typst’s foundational export to PDF and experimental export to HTML. But Rheo shouldn’t really be considered a replacement for Typst so much as an experimental harness that wraps it and extends its capabilities without forking or rewriting it.

The slides package was the first real demonstration of this, as it allows you to export a PDF script and an HTML RevealJS slideshow from the same Typst source without any finicky wrapping around Typst compilation calls and appropriately linking in JS/CSS. But rookery is a project that showcases Rheo’s ambitions as an extensible Typst platform much more vividly, which is one of the reasons I’ve been so charged this week developing it out.