Collections

New collection

Blog posts

blog-posts · Long-form articles and notes

Projects

projects · Case studies and portfolio work

Team members

team-members · People on the roster

Diagrams

blog-diagrams · ScribbleSVG figures

App shell
Collapsible sidebar chrome with CMS Admin mark, nav groups, and sticky header.

Collections

New collection

Blog posts

blog-posts · Long-form articles and notes

Projects

projects · Case studies and portfolio work

Team members

team-members · People on the roster

Diagrams

blog-diagrams · ScribbleSVG figures for posts

Collections
Home collections list — title, mono slug, muted description rows.

Blog posts

ItemsNew item

Getting started with collections

Updated Mar 12, 2026

Title

Getting started with collections

Body

Collections, fields, assets.

Diagrams in the same item

Draft

Updated Mar 8, 2026

Title

Diagrams in the same item

Body

Inline diagram field.

Items browse
Reading-layout items view with draft badges and sticky mini-nav.

Blog posts · Edit item

BackSave

Draft

Unpublished items are hidden from API consumers by default.

Title *

Getting started with collections

Body

Keep the schema consistent.

Collections, fields, and assets stay predictable for editors.

Item editor
Draft checkbox, field stack, TipTap toolbar chrome, and diagram canvas.

AI tasks

Task

What fields does posts have?

Tool calls

list_collections

Done

list_fields

Done

Result

The blog collection (slug blog) has the following fields:

  1. Title (key: title, type: text, required: true)
  2. Blog Content (key: blog-content, type: long-text, required: true)
  3. Figure (key: figure, type: diagrams)
  4. Cover (key: cover, type: asset)
AI tasks
Agent run with tool-call attachments and a structured result card.

Blog posts

Add field

4 fields

Title

title · Text · required · title

Body

body · Rich text · required

Figure

figure · Diagrams

Cover

cover · Asset

Schema fields
Collection field list with mono keys, types, and optional create form.

Library

Upload file
Public

hero-cafe.jpg

1.2 MB · image/jpeg

Private

diagram-flow.svg

18 KB · image/svg+xml

Public

team-portrait.webp

420 KB · image/webp

Private

press-kit.pdf

2.4 MB · application/pdf

Asset library
File card grid with Public/Private pills and upload header action.

WaferCMS

Self-hostable CMS for complex content

What

A self-hostable, MIT-licensed CMS where complex content is first-class — rich text and hand-drawn ScribbleSVG diagrams ship as native field types. AI features are opt-in, including an agent that can manipulate the CMS with the help of tool calls.

Technicals

Schema-driven collections with drafts/publish, TipTap rich text + ScribbleSVG diagram fields, Postgres + S3-compatible assets, and an opt-in OpenRouter agent with in-process CMS tools. Docker images on GHCR — self-hosting is a pull and a compose file away.

Why

I wanted richer content building blocks as native field types, and content that's easier for agents to reach and reshape. Built for this portfolio (blogs coming soon, powered by this CMS itself), then matured into a standalone product.

Where

Upcoming

  • Remote MCP server so agents can connect directly to your CMS
  • Agent loops for diagram iterations