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.
- snypd
- v0.1.6
- MIT
- Bun, one binary
- Linux · macOS · Windows
- snymrova/snypd
How it works
Any harness that reads .mcp.json can run it. There is no dashboard to log in to.
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.
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.
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.
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
mkdir field-notes && cd field-notesbunx @snypd/cli init # scaffolds the site, git-inits it, writes .mcp.jsonclaude # or Cursor, or Codex
Benchmarks
Every number has a budget, and CI fails a push that goes over it. Measured on 4 vCPUs.
| Case | Result |
|---|---|
| Cold build, 1,000 posts | 2.7 s |
| Cold build, 10,000 posts | 27.7 s |
| One edit, rebuilt | 13 ms |
| Binary start to MCP initialize | 23 ms |
| One page read as its markdown twin | 510 tokens |
| MCP tool list, per turn | 2,230 tokens |
| JavaScript on the page, every theme | 0 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.