Choose your starting point
Build locally
Install the Primo CLI, create a workspace, and open the local CMS. No hosting account or domain is needed.
Run a shared CMS
Deploy Primo to Railway, Fly.io, or a VPS with persistent storage. Collaborators use the hosted browser editor.
Build locally
You need a supported Node.js LTS release, version 22.13 or later. Check withnode --version, then install the CLI and create a workspace:
primo new command starts the local CMS and prints your editor URL. Open that URL to verify the site loaded. From a script, start the CMS separately with primo dev.
The default author mode uses files as the source of truth, so the CMS editor is read-only. To edit in the browser, stop the running server with Ctrl+C, then run
primo dev --author cms. See Author modes before switching between files and browser editing.Watch: Start Primo locally
The walkthrough starts after Node.js and the Primo CLI are installed. It uses--no-mcp and --skip-dev to show each setup step separately.
Download video · Download captions
Read the walkthrough
Read the walkthrough
- With Node.js and the CLI installed, create a workspace. This demo skips MCP setup.
- Inside the workspace, create a site.
--skip-devleaves starting the server to you. - Validate the site files before starting Primo.
- Run
primo dev --author files. Open its editor URL: Browse mode keeps local files authoritative. - Stop with Ctrl+C, then run
primo dev --author cmsto edit in the browser.
Run a shared CMS
Primo runs as one application with a SQLite database. Your host must preserve/app/pb_data across restarts and redeployments.
Use the Deployment guide for provider setup, account creation, HTTPS, and backups. After deployment, create a site in the dashboard and connect its domain. You can edit the site before connecting a public hostname.
The browser workflow does not require the CLI. Install it later if you want to pull the site into files.
Usage analytics
In the v3.3.1 source, self-hosted instances default to usage analytics off, while hosted mode defaults to on. To disable analytics explicitly, setPRIMO_ENABLE_USAGE_STATS=false, then restart or redeploy. Verify the effective setting through telemetry_enabled at /api/primo/info.
Other setup paths
- Contributing to Primo itself: Run the CMS from source. This develops the application rather than a website.
- Managed Primo hosting: Check Primo’s website for availability. Railway, Fly.io, and VPS installations are instances you manage yourself.