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.

2.2.10 beta is out for testing. The Markdown is the blog's own now. Four libraries used to answer the same question here, one for the reader's page, one for the editor, one for saving it back and a run of regular expressions for the excerpt, and four answers to one question drift: a stroke of the pen came out as the literal word "green" in the excerpt of every post that used a colour. One engine does all of it from a single parse now, measured against the specifications rather than against itself: CommonMark 0.31.2 at 648 of 652 examples and GFM at 24 of 24, on every run. The old renderer and the new one were compared on 92 real posts three different ways before the switch, which is how a javascript: destination that published as a working link turned up. Saving a long piece went from 144ms to 7ms, and the engine carries no dependencies at all. The writing surface also learned find and replace on its own chord. Docker tag 2.2.10-beta.4; latest stays 2.2.9. What changed, and what it does not do yet.

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.

Your name on it, not ours

No “powered by” line, no badge, no wordmark you cannot switch off. The footer is your own line or nothing; the admin’s wordmark and its version line each have a switch. The only place the software still names itself is a meta tag a reader never sees.

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 measured off the network on a first visit, on a real blog rather than on the demo above. The demo carries a navigation bar of its own, and that bar 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
6.3 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.

Four looks for the published page. 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; on a phone it scrolls, on the same paper. This is a screenshot of the demo, not a mock-up.

Four looks, and the last question setup asks is which one. A look decides shape, type and marks; it carries no colour of its own, so all four come out in the palette you chose and in whatever your reader picks over it.

The plain look: the post with a contents rail on the left and its facts on the right, and nothing else on the page
Plain paper · nothing on the page but the type
The source code look: the strapline behind a double slash, the header controls written as bracketed words, and the contents rail numbered down its edge
Source code · labels take a //, figures are bracketed, the shelf is numbered
The newspaper look: the site name as a masthead over a heavy rule, the section printed above the headline, and the date and byline under it
Newspaper · a masthead, the section over the headline, numbered sections
The notebook look: the post on a white sheet lying on a grey desk, with faint rules running behind every line of text
Notebook · a sheet on a desk, ruled at your own leading
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
for readers

Your readers get a pen of their own.

Select a sentence on any post and a small bar offers five inks, a pencil underline, a ballpoint ring, a note and the quote. The mark is drawn with the site's own hand and anchored to the words, not to a position, so it survives the author fixing a typo three paragraphs up. It lives in the reader's browser and is sent nowhere. Keep on every device carries it across by a twenty-character code, or by the Google sign-in commenters already have; the server keeps a hash, never an address, and the owner sees none of it. Send to my notebook hands the passage to the reader's own Quire Ink, or to any site that speaks Micropub. New in the 2.2.10 beta, on from the first install, and one switch turns it off.

five inks, a pencil, a ring, a note
A post with a reader's yellow highlight and a pencil underline, and the pen bar open over a selected sentence
A reader's own marks on a post, and the bar that makes them. The owner never sees them; the marks are the reader's, kept in their browser or under a code they hold.
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.

It is in the WordPress theme directory. Appearance, then Themes, then Add New, then search for Quire Ink. Nothing to download and no file to upload, and updates arrive with everything else on the site. wordpress.org/themes/quire-ink

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 10 MB.

An install is 264 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 70, and they earn it: resizing your photographs, colouring the code in your posts, drawing the picture that shows up when somebody shares one of your posts.

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
70 MB, pictures and code
quire ink itself
10 MB, 778 files
a new blog
476 KB of data
45 posts, 21 pictures
17 MB of data

A blog with 45 posts in it already outweighs 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.

Does it say “powered by Quire Ink” anywhere?

No. The footer is yours, the admin’s wordmark and version line each have a switch, and the licence asks only that the software’s name stay in a meta tag no reader sees. Your blog looks like your blog.

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.