primo
Primo is a self-hosted CMS designed for developers building client sites. It combines a visual editor for non-technical users with a dual file/database representation that allows developers and AI agents to edit code directly while clients manage content in the browser.
Key facts
Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.
| Field | Value |
|---|---|
| Repository | primocms/primo |
| Owner | primocms |
| Primary language | Svelte |
| License | MIT — OSI-approved |
| Stars | 2.3k |
| Forks | 574 |
| Open issues | 41 |
| Latest release | v3.2.3 (2026-07-02) |
| Last updated | 2026-07-07 |
| Source | https://github.com/primocms/primo |
What primo is
Primo is a monolithic Svelte 5-based CMS with PocketBase (SQLite) as its backing store, serving both the visual editor and published sites from a single Go binary. Sites exist simultaneously as relational database records and structured file folders, enabling bidirectional sync between visual and code-driven workflows.
Get the primo source
Clone the repository and explore it locally.
git clone https://github.com/primocms/primo.gitcd primo# follow the project's README for install & configurationNeed it deployed, integrated, or customized instead? DEV.co ships production installs.
Best use cases
Implementation considerations
- Single Go binary reduces operational overhead, but self-hosting requires basic Docker/container knowledge and infrastructure planning (data persistence, backups, SSL).
- Block authoring requires Svelte familiarity; non-Svelte developers face learning curve. Blocks define guardrails for editors, so design them carefully upfront.
- Local-file workflow (pull/push) is labeled beta; vet AI-agent compatibility and sync reliability in staging before production use.
- SQLite bundled by default; plan for migration path if site scales beyond single-instance concurrency limits (consider external PocketBase configuration).
- Static output workflow is clean but requires understanding of deployment targets (Netlify, Vercel, custom CDN) separate from Primo itself.
When to avoid it — and what to weigh
- High-Volume E-Commerce — SQLite is not suitable for high-concurrency workloads. For systems needing heavy transactional throughput or real-time inventory sync, consider PostgreSQL-backed alternatives.
- Headless CMS as Primary API — Primo is a monolithic CMS, not designed as a headless content API for multiple frontends. If you need a decoupled content service, platforms like Sanity or Storyblok are better fits.
- Enterprise-Scale Collaboration — Project status lists collaboration as in-scope but not mature. For large teams requiring granular permissions, audit trails, and SLA guarantees, evaluate WordPress multisite or commercial platforms.
- Highly Complex Business Logic — Primo's strength is in content presentation. If your site requires deep custom workflows, payment processing, or complex automation, a headless approach or custom backend may be more appropriate.
License & commercial use
MIT License. Permissive OSI-approved license allowing modification, distribution, and commercial use with minimal restrictions. Requires attribution and inclusion of license in derivative works.
MIT License explicitly permits commercial use, including selling sites built with Primo or offering Primo-based services. No royalties, license fees, or vendor lock-in. However, always review your own legal terms when offering services; this license assessment covers the software only, not client agreements or hosting liability.
DEV.co evaluation signals
Editorial assessment — not user reviews. Directional, with an explicit confidence level.
| Signal | Assessment |
|---|---|
| Maintenance | Active |
| Documentation | Adequate |
| License clarity | Clear |
| Deployment complexity | Moderate |
| DEV.co fit | Good |
| Assessment confidence | High |
Self-hosted single binary reduces third-party exposure but places all responsibility on operator. SQLite data at rest; encryption at rest not mentioned in README. Network security, SSL/TLS setup, user authentication (admin/editor roles), and backup integrity are operator responsibilities. No public security audit or penetration test data provided. Evaluate threat model for your use case before production deployment.
Alternatives to consider
WordPress
Mature ecosystem, broader plugin/theme market, higher hosting ubiquity. Heavier footprint, higher maintenance overhead, less code-centric developer experience.
Webflow / Framer
Proprietary visual builders with SaaS hosting and professional design tools. Vendor lock-in, higher cost, no local file/AI-agent workflow.
Sanity / Storyblok
Headless CMS with API-first design, multi-frontend support, SaaS hosting. Decoupled architecture requires frontend wiring; more expensive; no monolithic self-hosted option.
Build on primo with DEV.co software developers
Assess whether Primo's developer-centric, self-hosted model fits your team and client workflow. Consider deployment complexity, block library maintenance, and scaling strategy before committing.
Talk to DEV.coRelated open-source tools
Surfaced by semantic similarity across the DEV.co open-source index.
Related on DEV.co
Explore the category and the services that help you build with it.
primo FAQ
Can I use Primo with existing headless frontends (Next.js, Astro)?
What is the database migration path if SQLite becomes a bottleneck?
Is there a managed / SaaS version of Primo?
How mature is the AI-agent integration (primo pull/push)?
Software developers & web developers for hire
Adopting primo is usually one piece of a larger software development effort. As a software development agency, DEV.co provides software development services and web development expertise — pairing senior software developers and web developers with your team to design, build, and operate open-source cms software in production.
Ready to evaluate Primo for your project?
Assess whether Primo's developer-centric, self-hosted model fits your team and client workflow. Consider deployment complexity, block library maintenance, and scaling strategy before committing.