snypd: A CMS you run from your coding agent.

Write, theme and publish a website from Claude Code, Cursor or Codex. Content is markdown in a git repo you own; the output is static HTML with no JavaScript. Open source, MIT.

hero.mp4 · 0:45
One sentence to the agent: a post, a new look, a review step, a publish.

How it works

Any harness that reads .mcp.json can run it. There is no dashboard to log in to.

01

Init the site

bunx @snypd/cli init scaffolds a site, makes it a git repo and writes .mcp.json, so your harness finds snypd when it opens.

02

Ask the agent

Say “Write me a first post.” The agent reads the site over MCP, writes markdown on a drafts branch and lints it.

03

Publish

Publishing lands that one item on main. Cloudflare or Vercel builds it. You can require a person to approve first.

  • Claude Code
  • Cursor
  • Codex

Screenshots

The Desk, and one post in five of the six shipped looks. Pick one to see it; click the picture to enlarge.

The Desk.1/6
snypd dev opens a local page for a person: what to say to the agent next, drafts waiting for review, and the one button, Push.

Thirteen content blocks

Posts are built from a fixed set of typed blocks. Charts, diagrams and flows are drawn as SVG at build time. A stat with no source fails lint.

  • cover
  • tldr
  • callout
  • pullquote
  • stat-row
  • stat
  • chart
  • diagram
  • flow
  • steps
  • faq
  • figure
  • cta

Every build also writes a markdown copy of each page, llms.txt, a feed, a sitemap, a JSON API and JSON-LD.

Start

Three commands, then say “Write me a first post.” npm i -g @snypd/cli installs the binary on macOS, Linux and Windows.

snypd init
scaffold a site and register it with your harness
snypd dev
the Desk and the site with drafts in it
snypd serve
MCP on stdio, what your harness starts
snypd build
content to dist/; --drafts is a noindex preview
snypd bench
run the benchmark suites
snypd new theme|plugin
scaffold a theme or plugin
snypd check theme|plugin
check one against its rules
terminal
mkdir field-notes && cd field-notes
bunx @snypd/cli init # scaffolds the site, git-inits it, writes .mcp.json
claude # or Cursor, or Codex

Benchmarks

Every number has a budget, and CI fails a push that goes over it. Measured on 4 vCPUs.

All benchmarks

CaseResult
Cold build, 1,000 posts2.7 s
Cold build, 10,000 posts27.7 s
One edit, rebuilt13 ms
Binary start to MCP initialize23 ms
One page read as its markdown twin510 tokens
MCP tool list, per turn2,230 tokens
JavaScript on the page, every theme0 KB

What it does not do

Built for developers and small teams who already work in a harness. Not for teams that want a visual editor.

No dashboard

The only interface is MCP. There is no admin panel and there will never be a visual designer.

No JavaScript by default

Every route of every shipped theme sends 0 KB of JavaScript, and the build refuses a page that breaks it.

No hosting

snypd builds static HTML into dist/. Cloudflare or Vercel watches your repo; snypd never talks to the host.

Plugins are not sandboxed

A plugin is code you install and review like any dependency. The plugin contract is experimental through 0.x.

Open source, MIT

We built snypd to run our own sites from the agent. The full source is on GitHub.