In ProgressPlatform

AI CMS

Git-backed headless CMS with pluggable AI provider support

SvelteKitTypeScriptDrizzle ORMPostgreSQLAnthropic SDKOpenAI SDKArctic

Listen

0:00 / --:--

The Problem

Every traditional CMS adds a non-trivial technical cost: wiring up components, validation, and guardrails in the CMS to mirror what already exists in the codebase. Hosted solutions charge ongoing fees. Self-hosted adds maintenance overhead. As a site grows with dynamic sections, highly styled custom components, and per-page layouts, the CMS integration grows in complexity right alongside it. Two systems, two validation layers, two sources of truth. The deeper problem is that content managers and developers are forced into completely different workflows for what is fundamentally the same task: changing a site. An AI CMS with git as the source of truth collapses that gap. The content manager gets an interface they can understand. The developer's existing guardrails bubble up and are enforced automatically, no duplication to manage. Page structure becomes configurable by the project owner, so a content manager can add or remove sections without a developer in the loop. This is what CMS tooling should look like.

A CMS where AI generates and edits content through a guardrails layer before anything touches disk or git. Works with any OpenAI-compatible endpoint: Anthropic, OpenAI, or a self-hosted Ollama instance. The core insight is that git should stay the source of truth, so AI edits go through the same review path as human edits: diff preview, branch, merge. The database only caches operational state (sessions, locks, review status).

What's interesting

Provider-agnostic AI layer

A factory pattern routes requests to Anthropic, OpenAI, or any OpenAI-compatible endpoint (Ollama, vLLM, OpenWebUI). Provider and model are configured per-project in the database, swappable from the UI without touching code. The rest of the system doesn't care which model is running.

Git as source of truth

Content, schemas, and media references live in git. The database holds users, sessions, soft locks, and audit state. Things that need to be fast and queryable, not things that define what the site says. A developer can make a direct IDE edit and the CMS reconciles on the next push.

Guardrails as a trust boundary

All AI-proposed edits pass through a type-aware validator before touching disk. JSON guardrails freeze structure and only allow string value changes. Markdown guardrails block script/style injection and frontmatter key additions. The boundary is explicit: the AI can change content, not shape.

Schema-driven prompting

Projects define field schemas in .ai-cms/schemas/*.yml. The system prompt injects the full schema so the model knows required fields, types, and constraints and asks specifically for what's missing rather than guessing. Adding a team member becomes a structured conversation, not a free-form edit.