Route · self-hosted

You run the two pieces. The whole stack is free.

Self-hosting Kiln means you run the only two moving parts: a small Cloudflare Worker for sign-in, and your own GitHub App so Kiln can commit to your repo. Everything else, the repo, the host, the editor, stays yours. The npx wizard stands it all up. This is the only route the wizard fully automates today.

Free forever open source, GNU AGPL-3.0. The two pieces sit on free tiers.

Who runs what.

Two infrastructure pieces are yours to run. The rest you'd own on any plan. There is no fourth thing.

Yours to run
Auth workerYou deploy it
GitHub AppYours, wizard makes it
Yours regardless
Site repoYou
HostYou
Editor JSIn your repo
Optional
Page annotationsYou or your AI
Google sign-inYour own client

Three ways to wire it up.

The route is settled: you run the worker and your own app. How the wiring gets done is a separate choice. Pick one, not all three.

Recommended

The npx wizard

Run npx github:kilncms/kiln in your site's folder. It does every scriptable step and waits while you click the three buttons only a human can. The full self-host install in about ten minutes.

The ordered steps are below ↓
By hand

Manual

Do the same steps yourself: deploy the worker, register the app, copy the engine files, paste two script tags, annotate. Read the numbered steps below to see every moving part.

Same steps, run by hand
Point an AI

Hand it to Claude

Point Claude, Cursor, or any agent at your repo plus KILN_PROMPT.md. It can run the self-host steps with your credentials and always does the annotation for you.

Works with your own creds

The self-host install, step by step

The fast way is the one command. Run this in your site's folder and the wizard does every scriptable step, opening the right page and waiting whenever a platform needs a human click:
npx github:kilncms/kiln
Already set up? Health-check everything with npx github:kilncms/kiln doctor. The numbered steps below are exactly what that wizard does for you, written out by hand. Read them to understand the moving parts, but pick the command or the manual steps, not both.

1Host your code on GitHub, your site anywhere

One caveat: Vercel's free Hobby tier prohibits commercial use, so for business sites prefer Cloudflare Pages or GitHub Pages. The sign-in worker in the next step runs on Cloudflare either way.

2Deploy your sign-in worker

This is the worker you own. It runs on Cloudflare Workers, which is free, and it handles sign-in plus the commit proxy. The wizard does this for you; by hand it is four commands:

git clone https://github.com/kilncms/kiln && cd kiln
npm install
cd worker
npx wrangler kv namespace create KILN   # paste the printed id into wrangler.toml
npx wrangler deploy

Note the worker URL it prints, like https://kiln-auth.yourname.workers.dev. Because the worker lives on a plain workers.dev URL, the OAuth callbacks are registered for you at app-creation time in the next step, so self-host never hits callback drift.

3Register your own GitHub App, one click

This is the line that removes most of the confusion: on self-host the GitHub App is yours, freshly registered per site by the wizard. On Kiln Cloud and fully managed it is our shared kiln-cms app, installed on your repo instead.

4Make your HTML editable

Create /assets/kiln-config.js, then copy kiln.js and kiln-editor.js from the Kiln repo's dist/ folder (the wizard copies them for you) into your site's /assets/, and add two script tags at the end of <body>:

<script src="/assets/kiln-config.js"></script>
<script src="/assets/kiln.js" defer></script>

Then annotate what is editable. This is the one step the wizard cannot do for you, though an AI can:

<h1 data-cms="headline">Welcome</h1>
<img data-cms="hero" data-cms-attr="src" src="/img/hero.jpg">
<div class="cards" data-cms-repeat="services"> …repeatable blocks… </div>
<div class="nav-links" data-cms-menu="main"> …site menu… </div>

5Sign in and edit

Push everything. After the deploy, visit yoursite.com/kiln, the sign-in screen. Choose Continue with GitHub, then browse to any page: outlined text is editable. Click it, type, and hit Publish. About a minute later it is live. There is no edit button on the site; /kiln is the only way in.

Optional: editors and members with Google sign-in

Let your client, team, or community in, with no GitHub accounts. Create your own Google OAuth client, set two secrets on the worker, then add people by their Google email in your Kiln menu under People and access as an Editor or Member, with access lasting 1 to 360 days. For editors you can scope which pages they may touch, or leave it blank for the whole site. Full commands are in the README.

That is the whole self-host stack.

A GitHub repo, a free static host, one small worker you run, and your own GitHub App. No database to patch, no monthly bill, no platform that owns your content. Rather not run the worker yourself? Kiln Cloud runs it for you, or fully managed runs everything. Stuck? Open an issue.