Publishing & Git
Every publish is a git commit to a repository you own. RIFT renders your content to static HTML, pushes it, and your host deploys it — the CMS is never in the serving path.
The publishing model
Each site has one git repository with two branches: staging (full-site preview, including staging-state content) and main (production, public content only). A publish renders the affected pages against the active design system, writes the HTML plus assets and the design system's stylesheet, commits with a descriptive message recording who published what, and pushes. Your hosting provider watches the repo and deploys.
RIFT only creates a commit when rendered output actually changed. If you publish and nothing differs from the branch tip, the run reports "no changes — branch already up to date" rather than pretending it pushed something new.
Connecting a repository
- Create an empty repository on GitHub for the site's published output.
- In site settings, enter the repository URL and branch names (defaults:
stagingandmain). - Click Generate deploy key. RIFT creates an Ed25519 keypair; the private key is encrypted at rest and never shown.
- Add the public key to the GitHub repo under Settings → Deploy keys, with write access.
- Click Test connection to verify before your first publish.
RIFT connects over SSH on port 443, so it works from cloud environments where port 22 is blocked.
Publish scopes
| Scope | What it does |
|---|---|
| Single item | Renders and pushes one page (and its assets) to the branch matching its state. |
| Staging preview | Renders the entire site — staging and public content — to the staging branch, for a full preview at your staging domain. |
| Production | Pushes all public content to main. Full-site publishes rebuild the branch from scratch, so deleted and renamed pages are removed rather than accumulating. |
Individual items can also be scheduled to publish at a future time.
Hosting targets
Any static host that deploys from a git branch works. RIFT has first-class targets for Vercel, Netlify, Cloudflare Pages, and plain nginx — and emits host-appropriate configuration (for example, clean-URL settings) with the published files. Connect the same repo's staging and main branches as two environments on your host and both domains deploy automatically.
Site chrome and head scripts
Site-wide header and footer HTML can be set in site settings and are injected verbatim on every published page — as is a head scripts field for analytics tags and site-verification metas, placed immediately after the opening head tag. Like everything else in RIFT, these are unsanitized and admin-controlled.
Redirects
Redirects are managed per site and published as a _redirects file alongside your pages, in the format Netlify and Cloudflare Pages consume natively.