An open-source CMS

Finally, a CMS that gets out of your way.

Modern PHP. Flat-file flexibility. Ready for the AI era. No plugin headache.

Pushword block editor
Powering documentation, marketing pages, and content-driven apps for teams who value clean code.

What you get

Six things Pushword does well.

01
AI-native editing
Flat-file mode lets Cursor, Claude, and Copilot edit your Markdown directly — and a REST API takes it further, letting agents drive a live site.
02
Cutting-edge stack
PHP 8.4, Symfony 8, Doctrine 3, Tailwind 4. Modern features, strict typing, PHPStan enforced.
03
SEO-first design
Built by an SEO consultant. Meta, schema, dead-link detection, internal linking, OpenGraph: all built in.
04
Multi-site and i18n native
No WPML. No plugins. Multiple sites and languages live in the core.
05
Deploy anywhere
Static generation is built in. GitHub Pages, Netlify, Vercel, or any PHP host.
06
Page versioning
Track changes, compare versions side by side, restore with confidence. Full history.

Two workflows

Pick the one that fits your team.

For developers

Flat-file mode

  • Git-native version control
  • AI tools work directly on files
  • Use VSCode, Cursor, Vim, Obsidian
  • Markdown with YAML frontmatter
---

title: 'My Article'
publishedAt: '2025-01-15'
---
Your content here...

For content editors

Admin dashboard

  • Notion-style block editor
  • Drag and drop media (auto WebP)
  • Page versioning with diff view
  • Multi-site management
Pushword admin page list

Beyond flat-file

Flat files were only the start.

Flat files let an AI edit Markdown on your laptop. But your content lives on a live, multi-site instance — so we built a REST API that mirrors the whole admin (pages, media, redirections, even dead-link scans) and is designed, field by field, for agents to drive. Point Claude Code at it and editors run advanced content operations in plain language, straight to production — safely.

Self-describing
GET /api/docs returns a live OpenAPI 3.1 spec built from the controllers themselves. An agent discovers every route and field before it authenticates — no docs to ship, never out of date.
Token-efficient edits
PATCH takes anchored find/replace, so an agent sends only the slice it changed — not the whole page. Each anchor must match exactly once, or the write is refused: a loud error beats a silent wrong edit.
Safe concurrency
Every page carries a revision; writes send If-Match. An agent and a human can't clobber each other — a stale write returns 409 with the fresh page to rebase on.
Nothing ships by accident
Edits stage as drafts while the live site keeps serving. ROLE_EDITOR gates every token, and the Version extension diffs each revision before you publish.

One anchored edit — not the whole page

PATCH /api/page/example.com/pricing
If-Match: 66a3f1b2…

{ "edits": [
    { "find": "From 90€", "replace": "From 120€" }
] }

In production today

Real brand sites are edited entirely through this API. Marketing teams open Claude Code, type what they want in plain French or English, and every save syncs to production with optimistic locking — always staged as a draft until a human publishes.

Read the API reference

Compare

How does Pushword stack up?

Against WordPress, Statamic, and Sulu, across features, performance, and DX.

Read the comparison

Built with Pushword

Real sites, real performance.

Pricing

Free. Forever. MIT-licensed.

All features, unlimited sites, no user caps, commercial use allowed. If Pushword helps you ship, star the repo or share it. If you need custom development, PiedWeb offers paid support.

Ready to build something good?

composer create-project pushword/new my-project