A blog you host yourself, and an AI agent can run it for you.

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.

list mode, in sepia ink
the same page, after dark
and one for your pocket
List mode in the sepia palette: a timeline of posts with a numbered category rail
The same front page in dark mode
A Quire Ink front page: a lead story with a headline in a serif face, a most-read rail beside it, and a featured row below
A post open on a phone
what it is

You write, it publishes, and all of it sits on a server you control.

A blog, in the plain sense

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.

You change it by clicking

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.

You keep your own house

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.

speed

Someone on a weak signal with an old handset still sees the words almost at once.

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.

zero. really.
a full post page
100 KB transferred
javascript
10.2 KB, written by hand
requests
9 total
third parties
0 no CDN, no tracker
coming back
~11 KB, HTML only
reading

Reading comfort is the point of the whole project.

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.

set like a printed spread
readers keep their own highlights
Book mode: the same post set in two justified columns on paper-textured ground, with a drop cap, a highlighter mark, and a captioned facsimile of a Van Gogh letter
Book mode. One tap and the post is set in two columns like a printed page, with the reader's own highlighter marks kept. This is a screenshot of the demo, not a mock-up.
six inks, light and dark, readers can switch
The sepia palette: warm paper ground with brown ink
sepia
The forest palette: green-tinted ground with green links
forest
The amber palette: cream ground with amber links
amber
The ocean palette in dark: deep blue ground with sky-blue links
ocean · dark
The sci-fi palette in dark: near-black ground with cyan links
sci-fi · dark
The mono palette in dark: black ground, white ink
mono · dark
on wordpress

Or try the reading page on the WordPress you have.

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 →

agents

An AI can write and publish for you.

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.

the same blog, in your hand
The same blog on a phone: the front page with its lead story
under the hood

There is no database to install and nothing to deploy.

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.

How it works inside →

how much of it is ours

The part you have to trust is 8 MB.

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.

debian and bun
184 MB, any bun app
libraries
116 MB, pictures and code
quire ink itself
8 MB, 658 files
a new blog
476 KB of data
45 posts, 21 pictures
17 MB of data

A blog with 45 posts in it is already twice the size of the program that serves it. That is the right way round.

questions

The questions everyone asks first.

What do I need to run it?

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.

Do I need to install a database?

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.

Is it free?

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.

Can I leave later?

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.

What about my WordPress blog?

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.

Who is it not for?

A newsroom with roles, approvals and an editorial queue. Quire Ink has one owner on purpose, and everything is simpler because of it.

license

Free, and you may charge for 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.