InnolopeINNOLOPE CMS

The CMS built
for AI agents.

Innolope CMS is a markdown-native headless CMS with a built-in MCP server. Claude, Cursor, and AI agents create content directly — no format conversion, no middleware.

Self-hosted
TypeScript
PostgreSQL
claude_desktop_config.json
{
  "mcpServers": {
    "innolope": {
      "command": "npx",
      "args": ["@innolope/mcp-server"],
      "env": {
        "INNOLOPE_CMS_API_URL": "https://cms.example.com",
        "INNOLOPE_CMS_API_KEY": "ink_..."
      }
    }
  }
}

BUILT ON

FastifyDrizzleReact 19TipTapCloudflarePostgreSQL

What your database actually stores.

The same heading and paragraph — stored in a typical CMS vs Innolope CMS. One is a JSON tree. The other is just text.

Typical CMS (Lexical JSON AST)
{
  "root": {
    "children": [
      {
        "type": "heading",
        "tag": "h1",
        "children": [
          {
            "type": "text",
            "text": "Hello World"
          }
        ]
      },
      {
        "type": "paragraph",
        "children": [
          {
            "type": "text",
            "text": "Welcome."
          }
        ]
      }
    ],
    "type": "root",
    "version": 1
  }
}
Innolope CMS (markdown)
# Hello World

Welcome.
Readable in any text editor, terminal, or git diff
AI agents output this format natively — no conversion needed
Migrate in or out by copying text — no export tools required

Two ways in. One clean output.

Write content yourself in a visual editor, or let AI agents generate it via MCP. Both paths produce the same portable markdown.

For humans

01

Open the visual editor — TipTap WYSIWYG with toolbar, image embeds, and code blocks

02

Write and format content visually. Manage media in the drag-and-drop library

03

Review versions, switch locales, hit publish. Content is stored as clean markdown

For AI agents

01

Generate an API key and add three lines to your Claude or Cursor config

02

Agent writes markdown directly via MCP — create, update, search, publish

03

Human reviews in the admin UI, edits if needed, approves. Same markdown, same workflow

Both paths produce the same portable markdown stored in PostgreSQL

Everything you need.
Nothing you don't.

Markdown-Native Storage

Innolope CMS stores content as plain markdown in PostgreSQL. No Lexical JSON, no Portable Text, no proprietary AST. What you write is what gets stored. Import, export, edit anywhere.

MCP Server

Built-in Model Context Protocol server. Claude, Cursor, and any MCP-compatible agent connect in seconds.

Cloudflare Media

Images, video (Stream), and files (R2) out of the box. Zero egress fees. Swap to S3 or local storage anytime.

Multi-Project

Manage multiple websites from one instance. Per-project roles, API keys, and content isolation.

Visual Editor

TipTap WYSIWYG that exports clean markdown. Humans edit visually, agents write markdown — same result.

Ship in minutes, not weeks.

Install the SDK, fetch your content. Three lines to go from CMS to rendered page.

SDK usage
import { InnolopeCMS } from '@innolope/sdk'

const cms = new InnolopeCMS({
  baseUrl: 'https://cms.example.com',
  apiKey: 'ink_...',
})

// Get published articles
const { data } = await cms.getPublished()

// Get by slug
const article = await cms.getContentBySlug(
  'hello-world'
)
REST API
# Create content via API
curl -X POST /api/v1/content \
  -H "Authorization: Bearer ink_..." \
  -H "X-Project-Id: your-project" \
  -d '{
    "slug": "hello-world",
    "collectionId": "...",
    "markdown": "# Hello\n\nWorld.",
    "metadata": {
      "title": "Hello World"
    }
  }'

Decoupled by design.

Connect any number of frontends: web, mobile, CLI tools, AI pipelines. Switch frameworks without touching the CMS. Innolope CMS is a standalone service, not embedded in your frontend app. The API, admin UI, and your frontend deploy and scale independently.

Fastify API

REST endpoints, auth, rate limiting, security headers. Runs anywhere Node.js runs.

Admin UI

React 19 + Vite SPA. Visual editor, media library, project management. Deploy as static files.

Your Frontend

Next.js, Astro, Nuxt, Remix — anything. Consume via SDK, REST API, or MCP.

AI agents connect via MCP — no frontend framework required
Multiple frontends share one instance — web, mobile, and agents simultaneously
Switch your frontend framework any time. The CMS stays put
PostgreSQL+Cloudflare R2+Cloudflare Images+Cloudflare Stream

Honest comparison.

How Innolope CMS compares to popular headless CMS platforms.

InnolopePayloadStrapiSanityGhost
Markdown storageNativeLexical JSONRich text JSONPortable TextMobiledoc
MCP serverBuilt-inNoNoPartialNo
Framework requirementNoneNext.jsNoneNoneNone
Multi-projectFreeFreePaidPer-projectNo
Self-hostedYesYesYesCloud onlyYes
Media pipelineCF includedPluginsPluginsBuilt-inBasic
Open sourceMITMITMITNoMIT

Your content.
Your infrastructure.
Your rules.

Innolope CMS is MIT licensed. No vendor lock-in. No per-seat pricing. No usage limits. Deploy on your own servers, inspect every line of code, contribute back.

View Source on GitHub
MIT

License

7

Packages

0

Vendor lock-in

100%

TypeScript

Simple and fair.

Self-host for free. Use our cloud when you want managed infrastructure.

Self-Hosted

$0forever
  • Unlimited projects
  • Unlimited users
  • All features included
  • MCP server + SDK
  • Community support
Clone & Deploy

Start building with
Innolope CMS today.

Install in five minutes. Connect Claude in three lines. Start publishing.

# Clone and start Innolope CMS
git clone https://github.com/innolope/innolope-cms
cd innolope-cms && pnpm install && pnpm dev