Notes

Kolofon · 7 August 2026

Why a separate engine

Kolofon did not start as a product. It started because one literary site grew large enough that its code stopped being the code of that one site. It contained things with no connection to any particular prose: division into series, publishing ahead of time, offline reading, notifications, share cards, reader ratings. Scaffolding, not a building.

Separating the two took a few days and came down to a single question asked at every file: does this code know the name of the site it was written for. If it did, it had to be taught to stop. The engine has no business knowing a series name, an author's pen name or a background colour. It receives all of that as data, across a narrow and countable boundary.

The result is that a new instance means swapping a content directory and one configuration file. The page you are reading came about exactly that way — and it is the first test of whether the separation was real or merely declared. Had the old brand been hard-coded anywhere, you would be looking at it here.

One limitation follows, and we would rather say it up front: this is not a self-service tool yet. There is no dashboard where you click “new entry”. Entries are files, and an instance comes about through a conversation. You may call that a flaw and you would be right — but early deployments are meant to teach us something, and a signup form teaches nothing.

A second, less obvious point: the engine is deliberately small. There is no WYSIWYG editor, no plugin system, no theme store. Each of those is a promise to maintain something for years. We would rather make fewer promises and keep a feature set that can be explained in one paragraph.

What comes next we will see from the first instances that are not ours. Until then, everything written here is a hypothesis.