primocms
primo
Svelte

Agent-native visual CMS. Build sites with Claude/Codex/whatever, manage them visually.

Last updated Jul 9, 2026
2.3k
Stars
574
Forks
38
Issues
+2
Stars/day
Attention Score
88
Language breakdown
No language data available.
โ–ธ Files click to expand
README

Primo License: MIT Svelte

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:

Deploy on Railway

screenshot

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

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:

Deploy on Railway

Or run it anywhere Docker runs:

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.

Auto-updates on Railway: point your service's image at ghcr.io/primocms/primo:latest so "auto-update to the latest tag" tracks releases. If you deployed before this note and your source image is :main, switch it to :latest โ€” :main is a rolling branch build, not a release, so it won't advance on version releases.

Next steps:

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 โ†’

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

Community

License

MIT

ยฉ 2026 GitRepoTrend ยท primocms/primo ยท Updated daily from GitHub