Built with Chinaski

A CMS that publishes flat HTML

Self-hosted. Perl. SQLite. Nine production dependencies. No JavaScript on public output. No telemetry. No phone-home. Runs air-gapped.

Install now
15
content block types
9
production dependencies
0
database queries at request time

Built for operators who want control

No JavaScript in production

Chinaski's output is flat HTML and CSS. No React, no client-side router, no hydration step. What ships is what renders — fast, indexable, and dependency-free.

Self-hosted by design

Your content lives on a server you control. No vendor lock-in, no SaaS subscription, no API keys to third-party platforms just to publish a page.

Fifteen content block types

Heroes, columns, accordions, stats, galleries, forms, quotes, tables, video embeds, and more — structured content that builds cleanly into any theme.

Multilingual from day one

Language is a first-class field. Run English, Spanish, and Portuguese from one install with an LLM translation pipeline and a human review queue built into the admin.

Agent-native API

Chinaski ships an MCP server. An AI assistant can create pages, update blocks, run translations, and trigger deploys through a typed tool interface — no web UI required.

Themes you can program

Templates use Template Toolkit — a real templating language, not a stripped-down DSL. Every site structure, nav, and layout is code you can read, version-control, and modify.

How a build works

1. Write content in the admin

Create pages and posts using the block editor. Choose from fifteen block types — hero, columns, accordion, stat, gallery, form, quote, and more. Content is stored in SQLite.

2. Trigger a build

One button click (or one API call) kicks off the builder. It reads every published page and post, renders them through your Template Toolkit theme, and writes static HTML files to the output directory.

3. Sync to any host

The output is a folder of flat HTML, CSS, and assets. Rsync it to a VPS, push it to an S3 bucket, or serve it from nginx on the same box. No runtime required on the production server.

What runs at request time

Nothing. The live site serves static files. There is no application layer, no database query, no process waiting to handle requests. A file server is all you need.

This site is built with Chinaski

The chinaski.net marketing site was built using Chinaski itself. Here's what that process looked like: the good, the broken nav URLs, and what it demonstrates about the tool.

Read the article

One command to install

curl -fsSL https://www.chinaski.net/install.sh | sudo bash -s -- 1

Full install guide →