The CMS behind fasterthanli.me is now public
After five years of teasing it in articles, videos and talks, the software that powers fasterthanli.me is finally open source. The project, called home, has gone through several names over the years — futile, told ("text object linker") and snug — before settling on one that is deliberately not very searchable. Documentation lives at https://home.bearcove.eu, and the docs site itself is powered by home.
Supporting repositories
home can't be open-sourced in isolation; it depends on several other components that are now published as well. The first is bearcove/home-tree-sitter, a collection of tree-sitter grammars accumulated over the years. Only a couple of these grammars are original — most were gathered from public sources, and running tree-sitter generate on them may itself run afoul of licensing terms, something the author acknowledges as a possible oversight that is now out in the open.
Next is bearcove/home-drawio, which packages drawio code as a CLI tool converting .drawio files to .svg. It performs minification and font handling tuned for home's needs. The tool uses bun under the hood to produce a static executable, so neither node.js nor a browser is required in production.
A homebrew tap covers everything bearcove, currently offering home-drawio and home itself, which lowers the barrier for contributors working on documentation powered by home.
The most immediately reusable piece may be bearcove/timelord, which restores timestamps between CI builds. This trick keeps cargo's verbose output showing "fresh" and avoids unnecessary rebuilds.
Build tooling
bearcove/beardist is a custom wrapper around cargo that goes beyond a typical build command:
- Prints extensive information about the build system and toolchain
- Bundles dynamic library dependencies and rewrites
RUNPATH/RPATHas needed on Linux and macOS - Packages output as
.tar.xzand uploads to GitHub Releases - Updates a homebrew tap based on those releases
It also includes non-CI conveniences like bumping a repository's tag and pushing it, or waiting for a new release before amending Kubernetes manifests.
The main event: bearcove/home
The core repository is admittedly an odd codebase. For a long time cargo run was not possible; build scripts that copy shared libraries around now make it work. Unlike static site generators such as hugo or zola, home is not purely static — it runs a server.
In fact there are two server components: mom, which handles asset derivations and deployments, and cubs, which perform caching and template rendering. The author notes that plenty of excellent documentation site options exist today, but home is purposely tailored to personal taste, covering asset drag-and-drop, JPEG-XL/AVIF/WebP serving, easy video embedding, fast deploys, and integration with Vite to support Svelte 5 components like the site search.
Two internal dependencies are expected to disappear soon. dylo and facet project is meant to make them obsolete. The plan is to put all API types into type crates shared across the project, with implementations as dynamic libraries. There will be no feature flags to conditionally enable serde or other derives; facet derives will always be used, covering CLI argument parsing, serialization and deserialization, and templating-style object access. The transition is still a work in progress, and compile times will be measured along the way.
Why now
Open sourcing the project felt like a bigger step than it turned out to be — "nothing really happens," as the author puts it. Unlike facet, home is not meant to take over the world. What it buys is the ability to use public infrastructure and the possibility, despite the author's advice, that someone will want to run it themselves.
More tooling is planned, including a way to build Docker images efficiently without a Docker daemon. The current approach uses regclient, which the author finds slower than it should be, and there is an open issue tracking that work. There is no shortage of remaining tasks, but the release is shipped and the next step is already on the horizon.



