plym ← Index

Introducing plym

A markdown-first CMS for the AI-native web. Static-page performance, config-file flexibility, and content that agents can read without parsing your HTML.

Today we're releasing plym as open source. It's a CMS built from the ground up for two audiences that used to be one: people reading your site in a browser, and the growing number of agents reading it on their behalf.

Why another CMS?

There are hundreds of them, from WordPress to Hugo, so this is a fair question to open with.

Existing tools fall into two camps.

  • Dynamic CMSes (WordPress, Ghost, Strapi) give editors and configuration flexibility, but they render pages per request and keep a database and a runtime on the hot path.
  • Static site generators (Hugo, Jekyll, Astro) give you fast pages, but you own the build pipeline and the editing story is a text file in a git repo.

plym takes the output model of a static generator and the editing and configuration model of a dynamic CMS, and it adds the one thing neither camp was designed for: serving your content to machines that don't want HTML.

Speed

The mechanism is straightforward. plym pre-renders each page to disk ahead of the request, including both its HTML and its Markdown representation. Your reverse proxy (nginx, Caddy, or anything else) serves those files directly. Requests for published pages never reach the plym process.

The result is sub-2ms TTFB from the origin on a warm page served from local disk.

Because the application is off the request path, the same design scales sideways. Point your proxy at object storage or a CDN instead of local disk and nothing about the model changes.

SEO

The argument that SEO is dying assumes people will ask a model instead of searching. But a model only knows what was written and published. If most sites stop producing and updating content, the systems that depend on that content go stale. Content, and its reach, matters more now, not less, because more things are reading it.

plym is built for reach on both ends, for search engines and for people, without a plugin marketplace:

  • Meta tags generated from your content
  • Sitemap and llms.txt produced automatically
  • Layout and rendering designed around Core Web Vitals (LCP, CLS, and the rest) rather than retrofitted after the fact

Content for agents

This is the part existing CMSes don't do.

When an agent fetches one of your pages with Accept: text/markdown, plym serves the Markdown source instead of the rendered HTML. Same URL, negotiated by the request. No separate API, no scraping, no HTML-to-text heuristics on the agent's side.

$ curl -H "Accept: text/markdown" https://yoursite.com/blog/some-post
# Some Post

The clean source, exactly as it was written.
...

Markdown is far cheaper to read than the equivalent rendered page. Stripping navigation, wrappers, and markup cuts token usage by up to 70% for the same content, which matters both for cost and for context budget when agents read your site at scale.

Every page also exposes its Markdown at a stable URL, and llms.txt gives agents a map of what's available.

Everything included, nothing required

plym ships with an editor, templates, and defaults. None of it is load-bearing.

  • Bring your own templates and design. The defaults are a starting point, not a lock-in. Check the templating guide for creating your own templates in your brand language.
  • Run it behind any proxy.
  • Deploy at a subdomain, a subdirectory, or the site root.
  • Move page storage to S3 or a CDN when you outgrow local disk.

Every part of that is set through plain config files, so the whole system is inspectable and version-controllable.

Reliability and plym Cloud

Because published pages are static artifacts sitting behind a CDN, your site keeps serving even when the origin does not. If plym goes down, everything already published stays up.

That property is the foundation of plym Cloud, the managed version, which runs this architecture for you.

Getting started

The source is on GitHub: github.com/plym-io/plym.

If you run a blog, docs site, or any content site and you care about how it performs for both browsers and agents, clone it and point your proxy at it. Alternatively, you can checkout the cloud version and skip servers and config.

Frequently asked

How is plym different from Wordpress?
In one word, plym is extremely lightweight and modern, and focuses on content management; Wordpress is a complete website builder but comes at a cost of speed and dealing with bloatware.
How is plym different from static site generators like Astro?
plym, at the core of it generates static webpages. However the focus remains SEO, speed, and reliability, and static pages are just one part of it.
Can I import my existing blogs to plym?
Yes, and in mostly cases in one-click. plym supports blog import from your existing CMS.
Adarsh

Written by

Adarsh