primo
# Primo [](https://opensource.org/licenses/MIT) [](https://svelte.dev)  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:** [](https://railway.com/deploy/palacms?referralCode=RCPU7k)  ## The shape of it 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. ## The workflow ```bash 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. ## What's in the box - **Visual editor** — non-technical editors work within the guardrails you define. No more "I broke the site" texts. - **Block library** — reusable Svelte components, shared across all your sites. - **Static output** — clean, fast, SEO-friendly HTML. Deploy to any static host, or let Primo serve it. - **Multi-site** — one server, many sites, one dashboard. Connect a domain per site. - **Local-file workflow** *(beta)* — pull/edit/push with the CLI, AI-agent compatible. ## Quickstart The easiest way to get started is Railway: [](https://railway.com/deploy/palacms?referralCode=RCPU7k) Or run it anywhere Docker runs: ```bash docker run -d -p 8080:8080 -v primo-data:/app/pb_data ghcr.io/primocms/primo:latest ``` Then open your server's URL to create your first site. **Next steps:** 1. **[Quickstart](https://docs.primo.build/getting-started/quickstart)** — key concepts 2. **[Build your first site](https://docs.primo.build/building-sites/your-first-site)** 3. **[Write your first block](https://docs.primo.build/building-sites/writing-components)** ## Who it's for Freelancers, small agencies, and small teams who code their clients' sites and need the clients to manage content afterward — without breaking anything. ## How Primo compares - **vs. WordPress** — same mental model (CMS + blocks + multi-site) but built on modern tooling: Svelte instead of PHP, static output instead of server rendering, one binary instead of themes + plugins + hosting. - **vs. Webflow / Framer** — your clients get a similar visual editor, but you write real code instead of using a proprietary builder. Self-hostable, no vendor lock-in. - **vs. Astro / Eleventy** — Primo is a static site generator too, but bundles the CMS, block library, and multi-site hosting with it. You get the SSG workflow *and* the client handoff. - **vs. Sanity / Storyblok** — structured content and component blocks, but monolithic: no separate frontend to wire up, no API tokens, no deployment glue. [Full comparison →](https://docs.primo.build/comparison) ## Project status - **Stable:** visual CMS, block library, static output, multi-site, self-hosted deployment. - **Beta:** CLI + local-file workflow (`primo pull` / `primo push`), AI-agent compatibility. ## Documentation - **[Installation](https://docs.primo.build/getting-started/installation)** — self-host or run locally - **[Quickstart](https://docs.primo.build/getting-started/quickstart)** — key concepts - **[Writing Blocks](https://docs.primo.build/building-sites/writing-components)** — Svelte components - **[Field Types](https://docs.primo.build/reference/field-types)** — content field reference - **[Managing Sites](https://docs.primo.build/dashboard/managing-sites)** — site groups - **[Page Types](https://docs.primo.build/building-sites/defining-page-types)** — custom page structures - **[Collaboration](https://docs.primo.build/collaboration/inviting-collaborators)** — working with editors - **[Keyboard Shortcuts](https://docs.primo.build/reference/keyboard-shortcuts)** ## Community - **[GitHub Issues](https://github.com/primocms/primo/issues)** — bugs and feature requests - **[GitHub Discussions](https://github.com/primocms/primo/discussions)** — questions - **[CONTRIBUTING.md](./CONTRIBUTING.md)** — if you want to hack on Primo itself ## License [MIT](./LICENSE)