Fast by default
Pages are rendered once and served from memory until something changes. Search runs inside PostgreSQL. There is no PHP pool, no Node process and no extra cache to set up.
Open source · CPAL‑1.0 · Written in Go
sap13ns is a WordPress-style CMS written in Go. One executable and PostgreSQL behind nginx give you a fast, secure site with themes, plugins and two languages from day one.
Why sap13ns
Pages are rendered once and served from memory until something changes. Search runs inside PostgreSQL. There is no PHP pool, no Node process and no extra cache to set up.
A strict Content Security Policy, Argon2id passwords, two-factor sign-in and plugins that cannot touch files, the network or the database unless you allow it.
One binary, one PostgreSQL database and nginx in front. Migrations run on start and an update is a file swap and a restart.
Features
The parts you would otherwise assemble from a dozen plugins ship in the box, tested together and covered by the same security rules.
PostgreSQL ranks titles, excerpts and bodies. No external search service.
Public pages are served from memory and invalidated on every edit.
Apple, Neumorphism, Glassmorphism, Bento Grid and Dashboard, each light and dark.
Sandboxed modules with per-permission approval pinned to the file hash.
Translations linked per post, language prefixes and hreflang alternates.
RSS, Atom and JSON Feed for the site, every category, tag and author.
Write visually or in Markdown, with a preview, revisions and scheduled posts.
Uploads are checked, stripped of metadata and resized into variants.
Threaded replies, moderation, a honeypot and signed form timestamps.
Admin, editor, author, contributor and subscriber, with clear capabilities.
TOTP with recovery codes, or a passkey. Passkeys also sign you in without a password.
Who changed what and when, for settings, users, plugins and content.
Bring posts, pages, terms and media over from a WordPress export.
Claude, OpenAI-compatible, local models or Gemini. It suggests; it never publishes.
llms.txt and llms-full.txt give language models a clean map of your site.
Posts without an image get a share card drawn from their title. No design tool needed.
Keep old links alive when you change a slug or move from another CMS.
Aggregate visit counts without cookies, banners or personal data.
Database and uploads in one verified archive, optionally encrypted.
One account for many sites, each with its own domain, themes and plugins.
Deploy
Templates, stylesheets, icons and translations are compiled into the executable. Copy it to a server, point it at PostgreSQL and let nginx talk to it over a Unix socket.
# 1. Install the binary
$ sudo install -m 0755 sap13ns /usr/local/bin/
# 2. Create the database
$ sudo -u postgres createuser sap13ns
$ sudo -u postgres createdb -O sap13ns sap13ns
# 3. Generate a secret key for the env file
$ sap13ns keygen
9f2c…e41a
# 4. Migrate and start
$ sudo -u sap13ns sap13ns migrate -env /etc/sap13ns/sap13ns.env
$ sudo systemctl enable --now sap13ns
msg="sap13ns listening" addr=unix:/run/sap13ns/sap13ns.sock
$
Themes
Every theme follows the visitor's system preference, remembers a manual choice and passes the same strict CSP. Pick one, set an accent and publish.
Security
Most CMS breaches start with an add-on or an upload. sap13ns treats both as untrusted and makes the safe setting the only one.
content-security-policy: default-src 'self'; script-src 'self'; style-src 'self'; frame-ancestors 'none'; …
x-frame-options: DENY
x-content-type-options: nosniff
cross-origin-opener-policy: same-origin
referrer-policy: strict-origin-when-cross-origin
No inline scripts, styles or event handlers anywhere, admin included.
Slow, memory-hard password hashes and no silly composition rules.
Synchronizer tokens plus Go's Cross-Origin Protection on every form.
Sign-in, password resets and comments are throttled per address.
Markdown and plugin output pass through bluemonday allow-lists.
Type from content, matching extension and a sandbox CSP when served.
WebAssembly with memory caps, deadlines and no ambient access.
In multisite, every site lives in its own PostgreSQL schema.
Multisite
Run a personal blog, a project site and a client's shop notes from the same sign-in. Each site keeps its own domain, theme, plugins and data.
Hosting
Personal sites are free once we have validated them. Commercial sites pay monthly through Stripe. Same software, same security, no lock-in.
Free
Personal, non-commercial sites
9 €/ month
99 €/ year1 month free
or 99 € a year1 month free
VAT included
Commercial use allowed
30 €/ month
330 €/ year1 month free
or 330 € a year1 month free
+ VAT
Commercial use allowed
Open source
sap13ns is released under the CPAL‑1.0 licence. Use it for anything, commercial work included, as long as the visible “Powered by sap13ns” link stays and modified versions offered over a network publish their source.
Blog
Releases
A content management system in the spirit of WordPress, written in Go, shipped as one binary and built on the assumption that the internet is hostile.
Product
How sap13ns runs many sites from one installation, each with its own domain, themes, plugins and database schema, while you sign in only once.
Security
Why sap13ns plugins start with no access to anything, how permissions are approved, and why the approval is tied to the exact file you reviewed.
Install it on your own server in minutes, or let us host it for you.