v1.3 · Open Source

Your repo
is the database.

SpliceCMS is a self-hosted, GitHub-backed headless CMS. Every save is a commit. No database to manage, no vendor lock-in, no surprises — just files.

Azure Functions Vite + Vanilla JS CodeMirror 6 GitHub OAuth Node.js 22 Mobile-friendly
index.html
1<!DOCTYPE html>
2<html lang="en">
3  <body>
4    <h1 data-splice-editable="region-1">editable
5      Welcome to our site
6    </h1>
7    /* Click any highlighted element
8       to start editing */
9    <section data-splice-editable="region-2">editable
10      <p>Content goes here</p>
11    </section>

Edit. Commit. Deploy.

Three steps, zero magic. SpliceCMS sits between your editors and your GitHub repo — no proprietary database, no data migration, no lock-in.

01

Sign in with GitHub

OAuth authentication means no separate accounts to manage. Permissions are inherited directly from your GitHub repo access and the roles defined in your config.

02

Edit in the visual preview

Click any tagged region in the live preview to edit it with a rich contenteditable editor. Or switch to the Code tab for full-source CodeMirror editing. Changes are tracked locally until you commit.

03

Save → Git commit → Deploy

Hitting Save writes the file directly to GitHub via the Contents API. Your existing CI/CD pipeline — GitHub Actions, Netlify, Vercel — picks it up from there. SpliceCMS doesn't touch your deploy.

Everything you need.
Nothing you don't.

Visual HTML Editor

Live preview with click-to-edit contenteditable regions. Tag any block element as editable without touching code.

CodeMirror 6 Source Editor

Full-file code editing for HTML, CSS, JavaScript, Markdown, and YAML. Syntax highlighting and smart completions included.

🖼

Media Manager

Browse folders, drag-and-drop uploads, copy URLs, create folders, and delete files — all backed by the GitHub Contents API.

Branch & PR Workflow

Edit on feature branches and open pull requests for review without leaving the CMS. Full branch switching built in.

Git-native

AI Content Rewrite

Opt-in AI rewriting via Anthropic, OpenAI, Azure OpenAI, or Azure AI Foundry. Attach context files to guide the model.

Opt-in
🔒

Role-Based Access

Per-repo editor and admin roles. allowedPaths restricts which folders each user can touch — enforced server-side, not just in the UI.

📱

Mobile-Friendly

Responsive layout with a slide-out file tree. Full editing capability on phones and tablets — even touch-device image pickers.

Zero Database

No Postgres, no MongoDB, no Redis. GitHub is the content store, the version history, and the access control layer.

🏗

Private Repo Support

An authenticated asset proxy rewrites image URLs so private-repo assets render correctly inside the CMS preview without leaking tokens to the browser.

One JSON file
to rule them all.

Drop a splicecms.config.json in the repo root. Define your repos, access rules, branding, and AI settings. No admin UI to learn.

Per-repo allowedPaths enforced server-side on every request
Role overrides let admins have higher AI quotas than editors
Multiple AI provider profiles — switch with a single env var
Custom branding: primaryColor, logo, and favicon per deployment
splicecms.config.json JSON
{
  "id": "acme-site",
  "name": "Acme CMS",
  "branding": {
    "primaryColor": "#539D27"
  },
  "repos": [{
    "owner": "acme",
    "repo": "website",
    "allowedPaths": ["/pages", "/blog"],
    "roles": {
      "alice": "admin",
      "bob": "editor"
    }
  }],
  "ai": {
    "provider": "anthropic",
    "model": "claude-sonnet-4-5",
    "features": {
      "contentRewrite": true
    },
    "limits": {
      "requestsPerUserPerDay": 50
    }
  }
}

Plain English.
Real edits.

AI is entirely opt-in. When enabled, editors can rewrite regions, full pages, or raw source with a single instruction — and attach context files like stylesheets so the model understands your brand.

Anthropic Claude
OpenAI GPT
Azure OpenAI
Azure AI Foundry
contentRewrite
Rewrite any region or full file with a plain-English instruction. Select text to scope the rewrite.
htmlGenerate
Generate new HTML blocks from a description. Scaffold layouts in seconds.
cssThemeGenerate
Describe a visual direction and get a matching CSS theme back instantly.
altText
Auto-generate accessible alt text for images with a single click.
Per-user daily & monthly quotas · Role-based limit overrides · Context file attachment via 📎

One deployment. Three modes.

SpliceCMS scales from a personal site to a fully white-labelled client platform without changing the codebase.

Personal

Your own repos, your own deployment. Full access with no user management required.

  • No allowedGitHubUsers list needed
  • One OAuth App, your account
  • Full repo access or scoped paths

White-label

Isolated deployment on the client's own domain, with their GitHub OAuth App and custom branding.

  • Custom primaryColor, logo, favicon
  • Client's GitHub OAuth App
  • Fully isolated — no shared infra

Ready to splice?

Clone the repo, point it at your GitHub, and you're editing in under ten minutes.

git clone https://github.com/your-org/splicecms