No algorithm, no ads, no platform standing between you and your readers. One process. Two SQLite files. No cloud account anywhere in the path.
The demo is the real thing, running the latest build. No sign-up, nothing to fill in, and one button in it hands you a blog of your own to write in.
A front page, posts, categories, a search box, comments, and a newsletter that emails your subscribers when you publish. What it does not have: an algorithm deciding who sees your writing, ads cutting across it, or a company that can change the rules one day.
Colour, type, size, the shape of the front page, the menu. All of it lives in the admin, behind your own sign-in, and works from a phone. Not one size or colour is written into the reader's stylesheet, and the build fails if someone puts one there.
The blog lives as long as the server you rent, and a button downloads the entire thing: posts, images, subscribers, settings. Moving to another machine is copying a directory. There is nothing to export from, because you were never locked in.
Opening a post costs about 100 KB. A photo from your phone is a few dozen times heavier. These are measurements off the network on a first visit, taken on a real blog rather than on the demo above, which carries a navigation bar of its own that is not part of the product. They stay this way because every bundle has a size limit the build enforces: a feature cannot quietly start costing every reader a little more forever.
Six palettes, each drawn separately for light and dark. Four reading fonts cut per script, or bring your own font file. Footnotes, callouts, mathematics as real MathML, and a pen that highlights, underlines and rings the lines worth keeping, every stroke drawn a little differently the way a hand draws. And search that folds diacritics, so lap trinh finds Lập trình.






Everything above is the engine. The reading page by itself is also a WordPress theme, generated from the same stylesheet: the six palettes, the contents rail, book mode, six self-hosted typefaces, and no third-party request on the page. Install it on the site you already run and the words you already have are set the way this one sets them, this afternoon, with no migration in front of you.
Nothing of yours moves. The theme adds no custom post type, no taxonomy, no database table and no shortcode. Switch away and every post is still a post. It is free under GPL v2 or later, the licence WordPress asks of a theme.
What the theme is, what it costs a reader, and what does not carry over →
Quire Ink ships a working MCP server. Connect Claude, or another assistant, and say:
"Write a 600-word post about today's trip, tag it travel, publish it."
you, to your assistant, from anywhere
It drafts and publishes through exactly the rules you use: the same slug checks, the same revisions, the same soft delete. Its access is a token you created in the admin, and you can take it away at any moment. Every post is also served as raw Markdown to any agent that asks, because that is the source it was written in.
Point a domain at one command and you have a blog:
bun src/index.tsthis is the whole deploy
One Bun process, two SQLite files, a directory of uploads. A backup is a copy. The whole design is written up honestly, including the bugs that shipped and the measurements behind each decision.
An install is 308 MB on disk and almost none of it was written here. Debian and the Bun runtime account for 184 of that, the same 184 any Bun program carries. Libraries take another 116, and they earn it: resizing your photographs, colouring the code in your posts, drawing the picture that appears when somebody shares you.
What is left is Quire Ink. Every number here is measured inside the published image, not estimated.
A blog with 45 posts in it is already twice the size of the program that serves it. That is the right way round.
A domain and a rented server; the cheapest tier is enough. With Docker the setup is about fifteen minutes, and the install guide walks it step by step, including a NAS and your own laptop. After that, the daily work is all in the admin, from any device.
No. Two SQLite files, opened by the process itself. No database server, no cache tier, nothing else to keep alive at three in the morning.
A personal blog costs nothing. Running unmodified releases commercially is allowed too, including selling hosting. Only a modified version used commercially needs to ask first.
One button downloads everything: posts, images, subscribers, settings. Posts are Markdown, the format that survives platforms. A blog is a directory, so leaving is a copy.
Import the WordPress export file and your posts, pages and images come across, with old inbound links redirected so nothing breaks. And if you are not ready to move, the WordPress theme puts this reading page on the site you already run.
A newsroom with roles, approvals and an editorial queue. Quire Ink has one owner on purpose, and everything is simpler because of it.
A personal blog costs nothing. Running it inside a business, or selling hosting where every customer gets their own blog, is allowed too, as long as what you run is the version published here. Only a modified version used commercially needs to ask first.
In return, you keep your own house. Nobody backs it up for you: there is a button that downloads the entire blog, and pressing it is your job. The blog lives as long as the server you rent, which is the whole point.