Primo is a CMS for developers who build sites for clients who need to manage them afterward. Your entire site stays in sync as both a database and a folder of files, so Claude Code, Cursor, and any AI agent can edit it directly. Your clients manage content visually in the browser.
In active development since 2019. Self-hosted by freelancers, agencies, and small teams.
One-click deploy:
One Go binary. PocketBase (SQLite) for storage. Svelte 5 for the editor UI and for the blocks you write. The same server hosts the CMS and serves your published sites — no external services, no separate frontend to wire up.
Every site lives in two synchronized representations: a relational database (powering the visual editor and multi-site serving) and a folder of structured files (powering code editors, version control, and AI agents). Edit either side, both stay in sync.
primo pull yourserver.com # pull your site down as local files
claude # edit with Claude Code, Cursor, or any agent
primo push # push changes back — CMS updates live
Your clients keep editing content in the browser the whole time. Code and content stay in sync.
The easiest way to get started is Railway:
Or run it anywhere Docker runs:
docker run -d -p 8080:8080 -v primo-data:/app/pb_data ghcr.io/palacms/palacms:latest
Then open your server's URL to create your first site.
Next steps:
Freelancers, small agencies, and small teams who code their clients' sites and need the clients to manage content afterward — without breaking anything.
primo pull / primo push), AI-agent compatibility.