⚡ 100% Offline 🐙 GitHub Ready

Static sites,
baked in your browser.

A lightweight CMS that runs entirely locally. Define custom post types, write content offline, and generate clean HTML files to push to GitHub Pages.

bagelCMS

Powers static sites hosted on

GitHub Pages Netlify Cloudflare Vercel S3

No servers.
Just HTML files.

bagelCMS cuts out the database and backend. It's a local tool that turns your content into static files instantly.

Custom Post Types

Don't be restricted by 'Posts' and 'Pages'. Create Docs, Portfolio Items, Recipes, or any custom structure you need with JSON schemas.

Custom post type schema

GitHub Sync

Authenticate via OAuth, commit your generated HTML directly to a repository, and trigger deployments automatically.

Fully Offline

No internet required to write. Your data is saved locally in your browser's IndexedDB. Work from a train, a cabin, or a plane.

Clean HTML Generation

Outputs vanilla, semantic HTML files. No bloated JavaScript frameworks included in the build unless you add them yourself.

Clean HTML output

A CMS that
respects your privacy.

Because bagelCMS runs entirely in the browser, your content never touches our servers. In fact, we don't even have servers to collect your data.

  • Zero telemetry or tracking
  • Data stored in local browser storage
  • Export as ZIP or push to GitHub
Learn about our architecture →
Local storage architecture
🔒
Status
100% Local

From browser to deployment.

A simple 3-step recipe for static sites.

Define Types

Create your custom post types (e.g., 'Blog', 'Projects') and add fields like text, images, or markdown.

Write Offline

Add your content using the built-in editor. Everything saves instantly to your browser's local storage.

Generate & Push

Hit 'Bake'. bagelCMS compiles your content into clean HTML files and pushes them directly to your GitHub repo.

Frequently Asked Questions

How does a browser-based CMS actually work? We get that a lot.

Your data is saved in your browser's IndexedDB storage. It stays on your specific device (laptop, desktop). It never sends data to a remote database. We highly recommend using the "Export ZIP" or "GitHub Sync" features to back up your content regularly.

Yes! Once you have loaded the bagelCMS web app once, your browser caches the application files (Service Workers). You can disconnect from the internet, open the app, write content, generate HTML files, and export them as a ZIP file—all without a connection.

You define a Post Type by creating a simple JSON schema. For example, you can create a "Documentation" type with fields like Title, Slug, Body (Markdown), and Category. When you generate your site, bagelCMS creates the exact folder structure and HTML files based on those types.

Yes. You connect your GitHub account via secure OAuth. When you click "Bake & Push", bagelCMS uses the GitHub API to commit your generated HTML files directly to the `main` or `gh-pages` branch of your chosen repository, instantly updating your static site.

Clearing your browser cache or local site data will delete your content from that browser. This is why we built the GitHub sync feature—as soon as you push to GitHub, your content is safely stored in the cloud. You can always re-import it.

Fresh from the blog

Notes, guides, and updates from the bakery.

Engineering 7/12/2026

Why We Built a Headless CMS for Bagels

The modern web needs a content layer as flexible as it is delicious. Here is why we ditched the monolith.

🥯
1
Read →
Tutorials 7/12/2026

Connecting bagelCMS to GitHub Pages in 5 Minutes

A step-by-step guide to baking your content and pushing it straight to GitHub Pages.

🥯
1
Read →
Product 7/12/2026

Introducing Custom Post Types

Do not be restricted by Posts and Pages. Model Docs, Recipes, or anything with a JSON schema.

🥯
1
Read →