CoreBunch/InstaticPublic

The open-source alternative to Webflow, Framer and WordPress. Agentic self-hosted visual CMS outputting clean static pages. Users, roles, plugins, content, database, it's all there.

AI summary: A performant, self-hosted visual CMS designed specifically for rapidly building and managing static websites.

Stars
8.8K
+23 today
Forks
838
Watchers
62
Open issues
95
Open PRs
91
Contributors
~27
Commits
1.2K
Branches
90

TypeScriptMITCreated Apr 30, 2026Last push 20d agoLatest release v0.0.20+65 stars this week+444 this month

Quick answers

What is Instatic?
A performant, self-hosted visual CMS designed specifically for rapidly building and managing static websites.
What does Instatic do?
Instatic is a comprehensive, open-source Content Management System heavily optimized for the incredibly fast Bun runtime environment. It distinctly provides a highly intuitive visual editor that seamlessly generates clean static websites without imposing massive frontend frameworks. The system actively utilizes an SQLite database via Prisma to efficiently manage site content, distinct user roles, and plugin configurations. By uniquely combining the sheer speed of static generation with the immediate convenience of a drag-and-drop visual interface, it offers a highly performant alternative to traditional, bloated CMS platforms.
Who is Instatic for?
Instatic is built explicitly for web developers, design agencies, and organizations wanting a highly performant, self-hosted alternative to proprietary visual builders. It requires basic server administration skills and the Bun runtime.
How do I get started with Instatic?
bun create instatic@latest my-project
How popular is Instatic on GitHub?
CoreBunch/Instatic has 8,849 stars and 838 forks on GitHub, and gained 65 stars in the last 7 days.
What license does Instatic use?
CoreBunch/Instatic is released under the MIT license.

Star history

since Jul 28, 2026
02.5K5K7.5KJul 2026Aug 2026Sep 2026Oct 2026
8.8K stars as of Oct 3, 2026. Measured daily since Jul 28, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 1 commit2026-05-01: 31 commits2026-05-02: 23 commits2026-05-03: 13 commits2026-05-04: 17 commits2026-05-05: 22 commits2026-05-06: 8 commits2026-05-07: 14 commits2026-05-08: 8 commits2026-05-09: 12 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 13 commits2026-05-15: 9 commits2026-05-16: 1 commit2026-05-17: 4 commits2026-05-18: 34 commits2026-05-19: 21 commits2026-05-20: 9 commits2026-05-21: 7 commits2026-05-22: 2 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 1 commit2026-05-26: 14 commits2026-05-27: 11 commits2026-05-28: 12 commits2026-05-29: 17 commits2026-05-30: 37 commits2026-05-31: 42 commits2026-06-01: 62 commits2026-06-02: 33 commits2026-06-03: 100 commits2026-06-04: 100 commits2026-06-05: 39 commits2026-06-06: 68 commits2026-06-07: 38 commits2026-06-08: 47 commits2026-06-09: 23 commits2026-06-10: 21 commits2026-06-11: 14 commits2026-06-12: 10 commits2026-06-13: 14 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 2 commits2026-06-17: 13 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 3 commits2026-06-25: 1 commit2026-06-26: 9 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 5 commits2026-06-30: 1 commit2026-07-01: 25 commits2026-07-02: 8 commits2026-07-03: 10 commits2026-07-04: 1 commit2026-07-05: 0 commits2026-07-06: 3 commits2026-07-07: 4 commits2026-07-08: 2 commits2026-07-09: 0 commits2026-07-10: 1 commit2026-07-11: 11 commits2026-07-12: 1 commit2026-07-13: 1 commit2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 2 commits2026-07-23: 2 commits2026-07-24: 10 commits2026-07-25: 3 commits2026-07-26: 0 commits2026-07-27: 2 commits2026-07-28: 3 commits2026-07-29: 1 commit2026-07-30: 4 commits2026-07-31: 7 commits2026-08-01: 3 commits2026-08-02: 0 commits2026-08-03: 3 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 2 commits2026-08-08: 1 commit2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 6 commits2026-08-12: 2 commits2026-08-13: 1 commit2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 8 commits2026-08-19: 0 commits2026-08-20: 1 commit2026-08-21: 1 commit2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 19 commits2026-08-31: 13 commits2026-09-01: 6 commits2026-09-02: 10 commits2026-09-03: 1 commit2026-09-04: 0 commits2026-09-05: 2 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 0 commits2026-09-09: 0 commits2026-09-10: 3 commits2026-09-11: 17 commits2026-09-12: 0 commits2026-09-13: 3 commits2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 0 commits2026-09-19: 0 commits2026-09-20: 0 commits2026-09-21: 0 commits2026-09-22: 0 commits2026-09-23: 0 commits2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits2026-09-27: 0 commits2026-09-28: 0 commits2026-09-29: 0 commits2026-09-30: 0 commits2026-10-01: 0 commits2026-10-02: 0 commits2026-10-03: 0 commits
1,189 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Well documented

    High community health score

  • Permissive license

    MIT

What Instatic does

Instatic is a comprehensive, open-source Content Management System heavily optimized for the incredibly fast Bun runtime environment. It distinctly provides a highly intuitive visual editor that seamlessly generates clean static websites without imposing massive frontend frameworks. The system actively utilizes an SQLite database via Prisma to efficiently manage site content, distinct user roles, and plugin configurations. By uniquely combining the sheer speed of static generation with the immediate convenience of a drag-and-drop visual interface, it offers a highly performant alternative to traditional, bloated CMS platforms.

Instatic is built explicitly for web developers, design agencies, and organizations wanting a highly performant, self-hosted alternative to proprietary visual builders. It requires basic server administration skills and the Bun runtime.

  • Visual page builder: Includes a sophisticated drag-and-drop interface for intuitively designing pages without writing manual code.
  • Static site generation: Reliably outputs clean, highly optimized static HTML to ensure maximum load speed and security.
  • Bun optimization: Specifically built on the Bun runtime to deliver incredibly fast development and production build times.
  • Extensible plugin system: Supports deep functionality extensions through a robust, dedicated plugin architecture.
  • Role-based access control: Actively manages multiple user roles and specific permissions for secure, collaborative content editing.

Where teams use it

Rapid website prototyping

Web designers can quickly utilize the intuitive visual builder to thoroughly prototype and instantly launch landing pages.

Self-hosted CMS deployment

Development agencies can easily deploy Instatic on their own infrastructure to fully avoid expensive SaaS lock-in.

Custom plugin development

Software engineers can heavily leverage the plugin system to build highly tailored content management solutions for specific client needs.

Collaborative content creation

Content marketing teams can securely utilize the user roles and visual editor to safely manage site updates without developer intervention.

Getting started: bun create instatic@latest my-project

README

main branch

Instatic

Own your site. Love building it.

A self-hosted CMS where the visual editor, content engine, and publisher all live in one Bun server — and the pages it ships are clean enough to read in view-source.

CoreBunch/Instatic | Trendshift

Release GitHub stars License: MIT Runtime: Bun TypeScript

One-Click Deploy · Quick Start · Docs · Plugins · Roadmap


Watch the Instatic interface demo on YouTube

Watch the introductory video about Instatic on YouTube.


A modern website usually means assembling a stack: a headless CMS, a framework, a host, a form service, an analytics vendor, an image CDN — each with its own bill, dashboard, and 2 a.m. outage. Instatic is the opposite bet. One Bun server holds the whole thing — the canvas editor, the content engine, media, auth, forms, plugins, and the publisher — and you run it wherever you like, backed by SQLite or Postgres.

What comes out the other end is the part most builders quietly compromise on: plain semantic HTML and compact CSS, with none of the editor's machinery left behind in the page. No framework runtime, no builder attributes, no div soup. The site loads like a static file because, most of the time, it is one.

MIT. Self-hosted. Yours.


Deploy in one click

Railway is the fastest way to get Instatic live. Pick a template, hit the button, wait about two minutes. That's it. It generates the secret keys, attaches the storage volume, and sets up the health checks on its own. You never open a terminal.

Deploying Instatic to Railway — from template to a live CMS in under a minute

One minute to live. Unedited.


Provider Database Best for Deploy
Railway · Recommended SQLite A single site — blog, portfolio, small business Deploy →
Railway Postgres Multiple authors, managed backups, room to grow Deploy →
Render SQLite or Postgres Teams that prefer Render services, disks, and managed Postgres Guide →
Docker / VPS SQLite or Postgres Bring-your-own server, Caddy TLS, custom backup policy Guide →

SQLite is the right default for most sites. Reach for Postgres when you've got a team of authors or want managed database backups.

Updating is just a redeploy

When a new Instatic version is available, update by redeploying the latest image. Your database and uploads stay on the attached storage, so the app container can be replaced without rebuilding the site from scratch.

Prefer your own hardware? Instatic is a single Docker image:

INSTATIC_IMAGE=ghcr.io/corebunch/instatic:latest docker compose -f compose.prod.yml -f compose.sqlite.yml up -d

Full guides for VPS, Postgres, HTTPS with Caddy, Render, and backups are in docs/deployment.


One tool, the whole life of a site

Most tools do one job and hand you off for the rest. You design in one place, build in another, keep content somewhere else, then bolt analytics on from a fourth. Instatic does all of it. Here's what's actually in the box.

🎨 Design

Core Framework scales inside Instatic — a fluid spacing scale with mathematical ratios, edited live next to the canvas

The editor is a real canvas, not a form with a preview pane stapled to it. You put several breakpoint frames side by side and edit them together. Change the desktop and the mobile frame reacts in the same view. When you'd rather work on the real thing, flip to live mode and edit a single full-size page in place.

The part nobody else has: Core Framework is built in. It's the design-token engine thousands of WordPress pros already use every day, and here it's a core system, not a plugin you install and pray over.

  • Color tokens that generate their own shade scale. Define one brand color, get the full set of tuned tints and shades automatically.
  • Type scales that are fluid and mathematical. One ramp that scales with the viewport, instead of forty hand-picked font sizes you have to keep in sync.
  • Spacing scales so every page and every breakpoint keeps the same rhythm.
  • A utility-class generator that emits locked, generated classes into one small framework.css. No bloat, no duplicate rules, nothing you didn't ask for.

Your whole design system lives as data. Change one token and every page that uses it updates.

🧱 Build

Editing a Visual Component — a typed text param with a default value, bound to a node in the component's own tree

  • Modules are the building blocks: containers, text, images, buttons, video, lists, links, SVG, forms. Drag them onto the canvas and nest them however you want.
  • Visual Components are reusable pieces with typed parameters and named slots. A parameter can be a string, number, boolean, color, image, URL, rich text, an enum, or a whole slot of content. Edit the component once and every instance on the site updates. Components that would reference themselves are blocked before they happen, so nothing eats its own tail.
  • Templates handle the shared chrome. One layout for the whole site, separate layouts per post type, and a real 404 page you design yourself. Content flows into an outlet, so a header and footer get written once and wrap everything.
  • Loops repeat a layout over a collection: your posts, your pages, your media, or anything a plugin exposes as a source. Give a loop a couple of variants and it alternates between them as it goes. Good for post lists, product grids, galleries.
  • Forms that belong to your CMS. Build a form out of semantic fields and the submissions land in your own data tables. Instatic can read the fields you placed and create the matching table for you. No third-party form service, no embed, no monthly fee for a contact form.
  • An AI agent that actually edits the page. Describe what you want and it builds it on the canvas as real, editable nodes, not a screenshot or a wall of code. It writes semantic HTML for structure and CSS for style, through the same import pipeline you use when you paste markup. A 35-tool Site scope builds pages; a 15-tool Content scope edits entries. Bring your own model: Claude, OpenAI, OpenRouter, or local Ollama. Your key, your model, your bill.
  • Imports that hold up. Paste raw HTML and get editable nodes. Or drop a whole static site — HTML, CSS, images, fonts — and Super Import turns it into pages, style rules, design tokens, and media. Every conflict is shown to you before anything is written, and the entire import is a single undo.

🗂 Manage

The Media workspace — an OS-style file manager for every asset on the site

  • One content model under everything. Pages, posts, components, custom collections, and any structured table you invent all live in the same store: data_tables and data_rows. There's no special-cased "pages" table hiding in a corner. Schemas, raw rows, imports, exports, and form submissions all sit in one consistent place.
  • A Data workspace where you design your own collections. At /admin/data you create custom post types and custom data tables with their own fields, then work the rows in a spreadsheet-style grid: search, sort, filter, bulk publish, bulk export. Custom post types come with a real editorial workflow — draft, scheduled, published — and version history on the published copy. Plain data tables are simple grids you can point at anything: the submissions from a form, a product catalog, a lightweight CRM, a list of testimonials. And every table you build is a content source a loop can render. Define a "Team" table once, loop it onto your about page, done.
  • A content workspace for writing. A focused surface for posts and collections, plus live mode so authors edit inside the real design of the site instead of a gray textarea.
  • A media workspace that works like a file manager. Folders and smart folders, bulk operations, usage tracking so you know where a file is actually used, replacement workflows, and pluggable storage adapters when you outgrow local disk.
  • Access control that's real, not decorative. Roles built from 38 capabilities, token-based sessions, TOTP two-factor with secrets encrypted at rest, account lockout with backoff after repeated failures, and step-up prompts before the dangerous stuff like deleting a user or signing out every device.
  • ⌘K for everything. A fuzzy command palette over the whole admin. Jump anywhere, do anything, without touching the mouse.
  • Drafts stay drafts. Unpublished edits never leak to a visitor. What you didn't publish, they don't see.

📊 Analyze

The Instatic dashboard — site stats, activity feed, and status widgets on a customizable grid

  • A dashboard you arrange yourself. A 12-column grid of tile widgets you can drag, resize, and rearrange. Add the ones you care about in customize mode, and the layout saves per user. Plugins can ship their own widgets into the same grid.
  • An audit log that doesn't forget. Every meaningful admin action writes a row: logins, content changes, role edits, plugin lifecycle. It's append-only, so it's a real record of who did what and when, not something anyone can quietly rewrite.
  • Form data that's yours. Submissions sit in your own tables. Query them, export them, build on them. No vendor in the middle.

The analytics surface today is intentionally operational: dashboard status, audit history, and owned form data instead of third-party visitor tracking.

🔌 Extend

Every CMS has plugins. The difference here is where backend plugin code runs.

An Instatic plugin is a zip package with a manifest. Its server entrypoint runs in a per-plugin worker that hosts a QuickJS-WASM sandbox: no filesystem, no environment variables, no network at all unless the site owner grants it, one host at a time. Editor extensions and app-kind admin pages are different: they run in the admin window and require the explicit editor.code permission before install.

Through the SDK, a plugin can add:

  • HTTP routes and its own admin pages
  • Storage and scheduled background jobs
  • Loop data sources, so your content loops can pull from anywhere
  • Canvas modules — new blocks that show up in the editor
  • Media storage adapters and frontend assets
  • Lifecycle hooks across install, activation, and beyond

Start with the plugin system docs and the template plugin.


Fast because there's almost nothing to load

A published Instatic page is mostly just a file sitting on disk. No framework to boot, no hydration step, no database round-trip on the common path. The browser pulls down semantic HTML and compact CSS bundles, and it's done. There's barely anything between the visitor and the content, so the pages feel instant.

That speed isn't a setting you tune. It falls out of how publishing works, in three layers you never have to think about:

  • Static pages are baked straight to disk when you publish and swapped in atomically. Visitors are served a file, not a render.
  • Routes that genuinely change hit a versioned in-memory cache. Publishing bumps the version, so old entries miss lazily and nobody sees a stale page.
  • The few truly per-visitor parts are detected automatically and lazy-loaded by a runtime that weighs about 1.1 kB. Smaller than this paragraph.

What comes out the other end is plain HTML and compact CSS, all the way down. Nothing from the editor rides along: no React on your public pages, no editor runtime, no framework in the markup. And because it's just HTML and CSS, nothing holds your site hostage — you can read it, host it anywhere, or take it and leave. Full design: the publisher.


Quick start

You need Bun 1.4.1 or newer (bun upgrade if yours is older; bun run dev refuses an older one because its Vite proxy needs that release to forward the editor's WebSocket). Nothing else. The default dev setup runs on SQLite, so there are no extra services to stand up.

git clone https://github.com/corebunch/instatic.git
cd instatic
bun install
bun run dev

Open http://localhost:5173. The first visit walks you through creating your site and your owner account.

Want to see it the way it actually ships? bun run start builds the admin and serves it from the Bun server at http://localhost:3001/admin.

Backups, in one sentence: back up the database (a Postgres dump or the SQLite file) and the uploads folder, and you've backed up the whole site — details.


Who's behind this

We're the team behind Motion.page and Core Framework — tools that thousands of people use to build websites for a living, mostly in the WordPress world.

We spent years making other platforms more bearable. At some point the obvious question wouldn't go away: what if the thing underneath was just right to begin with? No legacy to work around, no markup we're not allowed to touch, no business model that depends on keeping your site where we can see it.

So we built Instatic. And we brought Core Framework along, wired in as a core system, so the color shades, type scales, spacing, and utility classes our users already rely on are part of the product — not an add-on you install and hope for the best.


Early, on purpose

Here's the honest part: this is version 0.0.x.

Everything above — the canvas, Core Framework, the universal content model, the sandboxed plugins, the AI agent, forms, loops, templates, media, MFA, the audit log, one-click deploy, the clean publisher — is the starting line, not the finish. What's coming:

  • Real analytics. First-party and privacy-respecting, to round out the Analyze pillar.
  • A bigger module and plugin ecosystem. More first-party blocks, more SDK surface, more examples to copy from.
  • A sharper AI agent. More tools, deeper awareness of your actual site.
  • Everything tighter. We're pre-1.0 on purpose. It's the cheapest time to throw out bad ideas and keep the architecture clean.

APIs and workflows can still shift before 1.0. If that makes you nervous, wait for 1.0 — no hard feelings. If you'd rather help shape what site ownership looks like for the next twenty years, now's the good seat.


For developers

One Bun server. A React admin built with Vite. A publisher that emits pages you'd be happy to have written yourself.

Runtime Bun, for both server and tooling
Language TypeScript everywhere
Admin app React 19 (React Compiler on), Vite, Zustand + Mutative, CodeMirror, dnd-kit
Server Bun.serve with a hand-written router
Database SQLite or Postgres — one DbClient interface, picked by DATABASE_URL
Validation TypeBox at every untyped boundary; schemas are the source of truth
Plugins QuickJS-WASM backend sandbox, owner-granted permissions, explicit editor.code for admin-window code
AI Provider-agnostic drivers over raw HTTP/SSE, no vendor SDKs
Output Semantic HTML, compact CSS, baked static files plus auto-detected dynamic holes

The codebase is opinionated, and the opinions are enforced in code. Architectural rules live in src/__tests__/architecture/ as actual tests, so the structure that keeps the output clean can't quietly rot.

bun run build   # tsc -b && vite build
bun test
bun run lint

Dig in: docs index · architecture · editor · server · publisher · plugin system


Thanks

Instatic's interface uses Pixelarticons by Gerrit Halfmann. Thanks to Gerrit for a genuinely distinctive icon set, and for kindly letting us use it in an open-source project.

License

MIT. See LICENSE. No tiers, no open-core asterisks, no "contact sales."

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

20 total
  1. Instatic 0.0.20v0.0.20Sep 13, 202681 downloads

    ## What's Changed * fix(release): boot compiled server artifacts off the build machine by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/524 * fix(import): preserve responsive spacing and widths by @tommy230 in https://github.com/CoreBunch/Instatic/pull/520 * fix(collab): keep the cells a doc does not own when the relay persists a row by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/504 * fix(plugins): treat a same-version upload as a reinstall, not a first install by @mostafasadeghidev in https://github.com/CoreBunch/Instatic/pull/498 * fix(tests): retry EBUSY when removing test DB dirs on Windows by @tahayusab in https://github.com/CoreBunch/Instatic/pull/515 * fix(publisher): order viewport contexts by a total order, not a partial one by @borskyj-symph in https://github.com/CoreBunch/Instatic/pull/482 * fix(release): ship esbuild's binary inside the server artifact by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/525 * fix(tests): tolerate CRLF working-tree line endings in freshness and style gates by @tahayusab in https://github.com/CoreBunch/Instatic/pull/516 * fix(plugins): an upgrade no longer 404s every published page by @mostafasade

  2. Instatic 0.0.19v0.0.19Sep 10, 20267 downloads

    ## What's Changed * fix(security): land the 0.0.18 coordinated security release by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/478 * feat(release): runnable server artifacts and a batch of shared fixes by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/479 * fix(plugin-sdk): carry contentAccess from definePlugin config into the manifest by @mostafasadeghidev in https://github.com/CoreBunch/Instatic/pull/333 * feat(plugins): give the sandbox a CSPRNG by @lovepixel-git in https://github.com/CoreBunch/Instatic/pull/390 * fix(site-import): honour alt text, script order, folders, and re-imports by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/480 * fix(import): keep the content a compound button wraps by @m-altaifi in https://github.com/CoreBunch/Instatic/pull/476 * chore(dev): install dependencies before the dev servers start by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/481 * feat(plugin-sdk): ingest managed media from plugins by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/487 * test(e2e): repair two specs left behind by security fixes by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/492 * fix(med

  3. Instatic 0.0.18v0.0.18Sep 2, 202623 downloads

    ## What's Changed * chore(changelog): open 0.0.18 by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/441 * fix(data): creating a table holds only the mandatory built-ins, matching patch by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/458 * docs(ui): correct ui-primitives reference to match component APIs by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/460 * test(e2e): repair stale locators and isolate suite state by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/461 * fix(site-import): make Cancel abort the static import run by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/459 * fix(import): preserve background and border resets by @tommy230 in https://github.com/CoreBunch/Instatic/pull/389 * fix(media): import, upload, and serve AVIF images by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/467 * fix(plugins): reject mismatched filter results by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/469 * fix(publisher): preserve frontend asset attributes by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/470 * fix(forms): emit content event for public submissions by @DavidBabinec in

  4. Instatic 0.0.17v0.0.17Aug 30, 202611 downloads

    ## What's Changed * feat(editor): add TypeScript script tooling by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/367 * docs(data): describe the built-in value lock that actually exists by @lovepixel-git in https://github.com/CoreBunch/Instatic/pull/360 * fix(data): stop the field dialog crashing outside a secure context by @lovepixel-git in https://github.com/CoreBunch/Instatic/pull/326 * test(harness): reset every app store before each test by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/400 * fix(content): keep the stored title in the sidebar after a create by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/401 * fix(mcp): stream editor bridges through reverse proxies by @huunghiaish in https://github.com/CoreBunch/Instatic/pull/282 * fix(ui): restore Escape dismissal in settings and while tooltips show by @kabarza in https://github.com/CoreBunch/Instatic/pull/272 * fix(admin): expose AI settings navigation by @wandaocheng1997 in https://github.com/CoreBunch/Instatic/pull/346 * fix(framework): parse space-separated hsl() color values by @shuvamk in https://github.com/CoreBunch/Instatic/pull/307 * chore(changelog): open 0.0.17 instead of an

  5. Instatic 0.0.16v0.0.16Aug 11, 202638 downloads

    ## What's Changed * feat(content): reuse schema dialog for collection creation by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/365 * feat(mcp): add media_upload tool for image uploads by @hectorcanaimero in https://github.com/CoreBunch/Instatic/pull/314 * fix(publisher): allow cross-origin media in the published CSP by @mostafasadeghidev in https://github.com/CoreBunch/Instatic/pull/354 * fix(loops): resolve custom media fields to URLs in loops by @shadysamir in https://github.com/CoreBunch/Instatic/pull/300 * chore(release): prepare 0.0.16 by @DavidBabinec in https://github.com/CoreBunch/Instatic/pull/366 ## New Contributors * @hectorcanaimero made their first contribution in https://github.com/CoreBunch/Instatic/pull/314 * @mostafasadeghidev made their first contribution in https://github.com/CoreBunch/Instatic/pull/354 * @shadysamir made their first contribution in https://github.com/CoreBunch/Instatic/pull/300 **Full Changelog**: https://github.com/CoreBunch/Instatic/compare/v0.0.15...v0.0.16

Code frequency

additions and deletions
+193.8K-193.8KWeek of 2026-04-26: +192,372 linesWeek of 2026-04-26: -26,817 linesWeek of 2026-05-03: +193,773 linesWeek of 2026-05-03: -170,037 linesWeek of 2026-05-10: +28,583 linesWeek of 2026-05-10: -8,804 linesWeek of 2026-05-17: +134,167 linesWeek of 2026-05-17: -45,380 linesWeek of 2026-05-24: +89,617 linesWeek of 2026-05-24: -27,986 linesWeek of 2026-05-31: +110,891 linesWeek of 2026-05-31: -61,540 linesWeek of 2026-06-07: +63,788 linesWeek of 2026-06-07: -51,415 linesWeek of 2026-06-14: +7,719 linesWeek of 2026-06-14: -3,680 linesWeek of 2026-06-21: +28,407 linesWeek of 2026-06-21: -8,610 linesWeek of 2026-06-28: +20,582 linesWeek of 2026-06-28: -12,170 linesWeek of 2026-07-05: +18,554 linesWeek of 2026-07-05: -2,815 linesWeek of 2026-07-12: +16 linesWeek of 2026-07-12: -9 linesWeek of 2026-07-19: +7,283 linesWeek of 2026-07-19: -1,795 linesWeek of 2026-07-26: +23,377 linesWeek of 2026-07-26: -6,394 linesWeek of 2026-08-02: +5,410 linesWeek of 2026-08-02: -1,873 linesWeek of 2026-08-09: +2,455 linesWeek of 2026-08-09: -402 linesWeek of 2026-08-16: +2,060 linesWeek of 2026-08-16: -286 linesWeek of 2026-08-23: +0 linesWeek of 2026-08-23: -0 linesWeek of 2026-08-30: +9,061 linesWeek of 2026-08-30: -2,184 linesWeek of 2026-09-06: +19,519 linesWeek of 2026-09-06: -3,110 linesWeek of 2026-09-13: +6,449 linesWeek of 2026-09-13: -1,388 linesWeek of 2026-09-20: +0 linesWeek of 2026-09-20: -0 linesApr 26, 2026Sep 20, 2026
+964.1K lines added, -436.7K removed over the last year.

Commits per week

last 52 weeks
4440Week of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 55 commitsWeek of 2026-05-03: 94 commitsWeek of 2026-05-10: 23 commitsWeek of 2026-05-17: 77 commitsWeek of 2026-05-24: 92 commitsWeek of 2026-05-31: 444 commitsWeek of 2026-06-07: 167 commitsWeek of 2026-06-14: 15 commitsWeek of 2026-06-21: 13 commitsWeek of 2026-06-28: 50 commitsWeek of 2026-07-05: 21 commitsWeek of 2026-07-12: 2 commitsWeek of 2026-07-19: 17 commitsWeek of 2026-07-26: 20 commitsWeek of 2026-08-02: 6 commitsWeek of 2026-08-09: 9 commitsWeek of 2026-08-16: 10 commitsWeek of 2026-08-23: 0 commitsWeek of 2026-08-30: 51 commitsWeek of 2026-09-06: 20 commitsWeek of 2026-09-13: 3 commitsWeek of 2026-09-20: 0 commitsWeek of 2026-09-27: 0 commitsOct 5, 2025Sep 27, 2026
1.2K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 16 commitsSun 1:00 — 2 commitsSun 2:00 — 4 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 1 commitsSun 6:00 — 6 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 1 commitsSun 10:00 — 16 commitsSun 11:00 — 10 commitsSun 12:00 — 9 commitsSun 13:00 — 3 commitsSun 14:00 — 7 commitsSun 15:00 — 5 commitsSun 16:00 — 0 commitsSun 17:00 — 0 commitsSun 18:00 — 0 commitsSun 19:00 — 3 commitsSun 20:00 — 4 commitsSun 21:00 — 2 commitsSun 22:00 — 21 commitsSun 23:00 — 10 commitsMon 0:00 — 9 commitsMon 1:00 — 9 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 3 commitsMon 9:00 — 6 commitsMon 10:00 — 15 commitsMon 11:00 — 8 commitsMon 12:00 — 19 commitsMon 13:00 — 3 commitsMon 14:00 — 11 commitsMon 15:00 — 0 commitsMon 16:00 — 12 commitsMon 17:00 — 17 commitsMon 18:00 — 7 commitsMon 19:00 — 10 commitsMon 20:00 — 14 commitsMon 21:00 — 15 commitsMon 22:00 — 19 commitsMon 23:00 — 11 commitsTue 0:00 — 3 commitsTue 1:00 — 2 commitsTue 2:00 — 2 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 15 commitsTue 10:00 — 13 commitsTue 11:00 — 15 commitsTue 12:00 — 9 commitsTue 13:00 — 8 commitsTue 14:00 — 1 commitsTue 15:00 — 10 commitsTue 16:00 — 5 commitsTue 17:00 — 6 commitsTue 18:00 — 10 commitsTue 19:00 — 10 commitsTue 20:00 — 5 commitsTue 21:00 — 11 commitsTue 22:00 — 13 commitsTue 23:00 — 6 commitsWed 0:00 — 3 commitsWed 1:00 — 4 commitsWed 2:00 — 4 commitsWed 3:00 — 2 commitsWed 4:00 — 0 commitsWed 5:00 — 2 commitsWed 6:00 — 0 commitsWed 7:00 — 1 commitsWed 8:00 — 5 commitsWed 9:00 — 3 commitsWed 10:00 — 5 commitsWed 11:00 — 6 commitsWed 12:00 — 14 commitsWed 13:00 — 20 commitsWed 14:00 — 22 commitsWed 15:00 — 15 commitsWed 16:00 — 9 commitsWed 17:00 — 24 commitsWed 18:00 — 14 commitsWed 19:00 — 13 commitsWed 20:00 — 5 commitsWed 21:00 — 17 commitsWed 22:00 — 6 commitsWed 23:00 — 13 commitsThu 0:00 — 2 commitsThu 1:00 — 0 commitsThu 2:00 — 2 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 1 commitsThu 9:00 — 2 commitsThu 10:00 — 9 commitsThu 11:00 — 13 commitsThu 12:00 — 8 commitsThu 13:00 — 18 commitsThu 14:00 — 2 commitsThu 15:00 — 11 commitsThu 16:00 — 14 commitsThu 17:00 — 5 commitsThu 18:00 — 5 commitsThu 19:00 — 14 commitsThu 20:00 — 19 commitsThu 21:00 — 7 commitsThu 22:00 — 15 commitsThu 23:00 — 35 commitsFri 0:00 — 10 commitsFri 1:00 — 9 commitsFri 2:00 — 3 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 1 commitsFri 8:00 — 3 commitsFri 9:00 — 6 commitsFri 10:00 — 9 commitsFri 11:00 — 10 commitsFri 12:00 — 8 commitsFri 13:00 — 7 commitsFri 14:00 — 26 commitsFri 15:00 — 18 commitsFri 16:00 — 7 commitsFri 17:00 — 8 commitsFri 18:00 — 5 commitsFri 19:00 — 1 commitsFri 20:00 — 6 commitsFri 21:00 — 8 commitsFri 22:00 — 20 commitsFri 23:00 — 8 commitsSat 0:00 — 3 commitsSat 1:00 — 0 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 1 commitsSat 9:00 — 10 commitsSat 10:00 — 8 commitsSat 11:00 — 9 commitsSat 12:00 — 12 commitsSat 13:00 — 25 commitsSat 14:00 — 15 commitsSat 15:00 — 14 commitsSat 16:00 — 7 commitsSat 17:00 — 10 commitsSat 18:00 — 15 commitsSat 19:00 — 3 commitsSat 20:00 — 16 commitsSat 21:00 — 8 commitsSat 22:00 — 1 commitsSat 23:00 — 19 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jul 26, 2026daily#25+3
Jul 25, 2026daily#13+4
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    456.7K stars · TypeScript

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    391.3K stars · TypeScript

  • anomalyco/opencode

    The open source coding agent.

    211.7K stars · TypeScript

  • n8n-io/n8n

    Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

    206.7K stars · TypeScript

  • microsoft/vscode

    Visual Studio Code

    193.5K stars · TypeScript

  • firecrawl/firecrawl

    Supercharge your AI agents with data from the web and beyond. Building the library for superintelligence. 🔥

    188.6K stars · TypeScript