Forma

The portable PHP CMS that doesn’t suck

Dark admin. Pages, blog, podcasts. Real SEO. An Agent API for Cursor. One SQLite file you can back up, move, and ship anywhere.

Portability, not theater

One file. Full CMS. Zero MySQL drama.

The old pitch was “no database.” The honest one is better: Forma keeps everything in a single SQLite file. Fast enough to feel local. Small enough to copy. Serious enough to run a real site.

Site package

formax-site-*.zip
  • manifest.jsonversions
  • data.jsonportable content
  • database/forma.dbthe whole CMS
  • uploads/your media

Speed

No connection pool, no Redis ritual. PHP + SQLite on cheap hosting still feels snappy.

Simplicity

Drop the folder on Apache or Nginx. Log in. Change the damn password. Build.

Portability

Move hosts with a zip: database, uploads, and a versioned manifest future Forma can migrate.

Security surface

One admin. CSRF. Rate-limited login. File validation. Fewer moving parts, fewer ways to get wrecked.

Why Forma kicks ass

Everything you need. Nothing WordPress-shaped.

Same spirit as the original Forma site — updated for the FormaX / FormaLITE line: SQLite core, htmx admin, agent-ready.

Admin that respects your eyes

Dark, fast, htmx-driven. Built for long editing sessions, not dashboard cosplay.

Pages

Markdown, HTML, or Twig. Own the markup. Ship the layout you actually want.

Blog

Markdown-first posts, clean RSS/JSON feeds, publish dates that mean something.

Podcasts

Episodes, show notes, iTunes-compatible feed. You host the audio; Forma handles the XML.

Snippets

Reusable blocks with shortcodes. Write once, drop everywhere — copy-paste is for suckers.

Files

Upload, preview, link. Images and audio without a plugin bazaar.

SEO that shows up

robots.txt, sitemap (with images), Open Graph, JSON-LD, redirects, health checks — automatic when you let it.

Agent API

Scoped Bearer tokens. Cursor MCP. Update pages and posts over HTTPS without SSH theater.

Locked down

Modern auth, CSRF, upload validation, .htaccess helper. Tough as nails, not theater security.

See it in the product

Built for people who will touch the code.

No theme store. No page-builder prison. Forma assumes you’re willing to hack a little — and rewards you for it.

Try the admin Opens in a new tab · guided walkthrough

Dark admin that doesn’t fight you

Sections load fast. Editors use real code tools. Settings for SEO, hosting, cache, agents, and versioned backups live where you’d look for them.

Write in Markdown or HTML

Distraction-light editing, meta fields that matter, SERP / OG previews so you see what Google and social will see before you publish.

Agents welcome

Create a token, point Cursor at the MCP server, and let an agent edit content with scopes — content, media, settings, backup — not a shell on your box.

Get started in minutes

Deploy. Log in. Change the password. Build.

No MySQL wizard. No Composer rabbit hole. PHP 8.1+, SQLite, and a web root.

1

Drop Forma on the server

Upload the FormaX tree (or clone when the public repo is current). Keep database/ and uploads/ writable.

chmod -R 775 database uploads feeds
2

Point the vhost at the folder

Apache with mod_rewrite, or Nginx try_files. Local hack:

php -S localhost:8787 router.php
3

Log in and lock it down

Open /admin. Default credentials ship for first boot — change them immediately in Settings → Account.

4

Publish something real

Edit the home page, wire SEO, upload a favicon, hit Backup for a site package before you get brave.

From the blog

Ideas worth shipping.

CMS craft, agents, SEO, and portability — written like we build. Subscribe via RSS or JSON Feed.

Ready to shape your content game?

Self-hosted PHP + SQLite. Dark admin. Agent API. One file you can move anywhere — this is the live product.