# Quire Ink: one process, two SQLite files, and an AI agent that can run your blog

> Source: <https://dev.to/joihasteven/one-process-two-sqlite-files-a-self-hosted-blog-an-ai-agent-can-run-for-you-2cp9>
> Published: 2026-08-17 09:44:47+00:00

Last month I moved my blog off a platform and onto a rented server, and instead of installing WordPress I finished something I had been building for it: **Quire Ink**, a blog engine that is one process and two SQLite files. No database server, no build pipeline, no cloud account anywhere in the path.

```
bun src/index.ts
```

That line is the whole deployment. Point nginx at the port and you have a blog.

Opening a post costs about **114 KB**, first visit, nothing cached. Of that, 67 KB is fonts I host myself and the JavaScript is **3.6 to 7.8 KB**, written by hand. Third-party requests: **zero**. No CDN, no font host, no tracker.

The numbers hold because the build enforces them. Every bundle has a size cap and the build fails if a feature crosses it, so nothing can quietly start costing every reader a little more forever.

And the reading page is where most of the work went:

`==text==`

and it renders as an SVG stroke with chisel ends that breaks per line, pigments measured off a photograph of a real pen box. Readers can also keep their own highlights. 1.4 KB, and zero if unused.The admin just went through a rebuild (v2.1.0 shipped this week) around one idea: it is a writing desk, not a control panel. The list of everything you have written sits beside the paper you are writing on. Search reads the body of your drafts, not just titles, and it survives Vietnamese diacritics, so typing `gioi thieu`

finds "Giới thiệu".

The editor is a real one over Markdown: tables, footnotes, callouts, video, Spotify embeds, image galleries. Drop an image in and it is resized for every screen. It saves as you type, keeps three revisions, and can hold a post until Tuesday morning. Type `/`

on an empty line for the insert menu, which prints each block's Markdown shortcut beside it, so the menu teaches the gesture that replaces it.

The rest of the desk, briefly:

`robots.txt`

, `llms.txt`

, an Open Graph image drawn per post, and old URLs that keep working on their own when you rename a slug.Quire Ink has an **MCP server built in**. Connect Claude or any MCP client, create a token in the admin, and say:

Write a 600-word post about today's trip, tag it travel, publish it.

The agent drafts, tags, schedules and publishes through exactly the same rules the admin follows, revisions and trash included. Revoke the token and it stops that second. Setting up a fresh server is also something you can hand to an agent whole: there is no OAuth app to register and no service to sign up for, so it can actually finish the job.

It has one owner, on purpose. No roles, no editorial queue, no multi-author anything. A newsroom should look elsewhere; a person who wants to keep their own writing on their own machine is exactly who it is for.

The license is source-available, not open source: PolyForm Noncommercial, plus a grant that lets you run **unmodified releases commercially**, paid hosting included. Modify it and sell it, and you need to ask first.

The demo is the real product, seeded with real posts, admin included, no sign-up: ** demo.quireink.com**. The bar at the bottom jumps between the newspaper front page, an article, book mode, both palettes and the admin.

I write on it daily at [manhhung.me](https://manhhung.me). Questions and bug reports are welcome on GitHub.
