I Built a CMS for the Age of Agents
Why I left Squarespace and built a content management system designed for AI-native workflows
Something had been nagging at me for a while: every time I wanted to update my website, I found myself fighting the tool that was supposed to help me.
I’d been using Squarespace. It’s a fine product for a lot of people. But over the years, the experience had become increasingly cumbersome — layered menus, opaque settings, design constraints that made simple changes feel like negotiations. I was spending more time navigating the CMS than I was on the content itself. And the cost kept creeping up for a tool that was increasingly getting in my way.
So I did what I’ve been doing more and more lately: I built the thing I wanted.
The result is LightCMS — a lightweight, AI-native content management system. It’s open-source, written in Go, backed by MongoDB Atlas, and deployed on Fly.io for a fraction of what I was paying Squarespace.
But the cost savings aren’t the point. The architecture is.
Your CMS Should Be an API for Agents
Here’s the idea that drove the project: if AI agents are becoming the primary way we interact with software , then the systems we use to manage our digital presence need to be designed for agents—not just for humans clicking through admin panels.
LightCMS includes a full MCP (Model Context Protocol) server with 38 tools for website management. That means I can open Claude Code or Cowork and say “create a blog post about machine learning” and it’s live. I can say “change the site’s primary color to navy” and the theme updates. I can manage templates, upload assets, publish and unpublish content, review version history entirely through conversation.
No dashboard. No settings page. No page builder loading screen. The entire website is a conversation.
This is what I had in mind when I spoke at the MIT Media Lab about the three eras of digital identity. The first era was about identity — who we are online. The second was about self-expression — what we create in digital space. The third era — the one we’re entering now — is about empowerment: projecting our will through intelligent agents.
A CMS that can be operated by an AI agent is a small but concrete example of that third era in practice. I’m not navigating an interface. I’m expressing intent, and an agent carries it out.
Composability by Design
When I wrote that composability is the most powerful creative force in the universe, I was talking about what happens when systems are designed so that their components can be aggregated, recombined, and iterated upon.

LightCMS is built with that principle at its core. The entire codebase is roughly 5,000 lines of Go — deliberately small, deliberately clean. Not because I couldn’t make it more complex, but because the constraint is the feature.
The codebase is designed to be fork-friendly: structured so that Claude Code (or any capable AI agent) can read the entire project, understand its architecture, and extend it. Need a new content type? Ask Claude to add one. Want a custom page layout? Describe it and let Claude modify the template system. Want to add an entirely new feature? The codebase is small enough that an agent can hold the whole thing in context and reason about it.
This is composability applied to the tool itself. The CMS isn’t a black box you configure through a settings page. It’s a transparent, modifiable system where AI agents can create new capabilities — not just use existing ones.
In nature, composable systems feature methods for information to aggregate, transmit, and iterate. LightCMS is designed with the same principles: a template system for defining reusable content structures, collections for grouping and displaying content by category, static HTML generation for performance, content versioning with full diff comparison — all of it exposed through the MCP server so that agents can compose new workflows on top of the existing building blocks.
Built in the Vibe Coding Era
I built LightCMS the same way I built the Agent Almanac: through what I’ve been calling English-only programming. I described what I wanted and worked with Claude Code to build it. I made the architectural decisions — Go backend, MongoDB Atlas, deploy on Fly.io — and Claude handled the implementation.
This is the pattern I keep coming back to: the gap between intention and implementation has collapsed. The role of the builder has shifted from writing every line of code to articulating what should exist and sculpting it into being.
And there’s something recursive about this particular project. I used AI to build a CMS that’s designed to be operated by AI. The tool that built it is also the tool that runs it. That feedback loop — where AI creates systems that are themselves optimized for AI interaction — is going to become a defining pattern of this era.
What’s Under the Hood
For those who want the technical details:
LightCMS is a Go web application backed by MongoDB Atlas. It generates static HTML for fast page loads while maintaining a dynamic admin panel at /cm for when you do want a traditional interface. The template system lets you define custom content types with arbitrary fields — text, rich text, dates, images, select dropdowns — and create HTML layouts with placeholder variables.
The MCP server exposes 38 tools covering content management (create, read, update, delete, publish, unpublish, version history), template management, asset handling, and theme customization. It connects via stdio transport, which means any MCP-compatible client — Claude Code, Cowork, or whatever comes next — can operate the entire site.
Content versioning gives you full history with diff comparison and the ability to revert. Soft delete means you can recover anything. Collections let you group content by category for listing pages. The theme system supports custom colors, fonts, and CSS.
The whole thing deploys on Fly.io in minutes. My hosting costs went from hundreds of dollars a year to a few dollars a month.
The Bigger Picture
I’ve been writing for a while now about the shift toward a world where AI agents are embedded in our creative and professional workflows — not as tools we pick up and put down, but as persistent collaborators that carry out our intent.
The Agent Almanac catalogs the emerging ecosystem of agents. The Age of Machine Societies Has Begun explored what happens when agents start cooperating and competing with each other. Digital Identity and the Evolution of Creativity laid out the theoretical arc: from identity to self-expression to projecting our will.
LightCMS is a small, practical piece of that larger picture. It’s one answer to a question that every piece of software will eventually face: are you built for the age of agents?
Most software today is not. Most websites are not designed for agentic consumption (as I discovered when building the Agent Almanac’s web crawler). Most CMS platforms are not designed for agentic operation. They were built for humans navigating GUIs, and they’ll need to be rebuilt or replaced.
I suspect the rebuild will happen faster than people expect. When you can describe a feature and have it implemented in minutes; when the CMS itself is a conversation, the iteration speed is fundamentally different. The question isn’t whether AI-native software will replace the old paradigms. It’s how long the transition takes.
LightCMS is MIT licensed and ready to use. Fork it, extend it, build on it. Or just use it to run your website through conversation. Either way, welcome to the age of agents.
Further Reading
Digital Identity and the Evolution of Creativity: the three eras of digital identity — from identity to self-expression to projecting our will through intelligent agents.
Composability is the Most Powerful Creative Force in the Universe: how modular, recombineable systems unlock exponential creativity — and why LightCMS is designed as one.
I Built an Agent That Discovers Other Agents: the Agent Almanac project and the pattern of English-only programming.
The Age of Machine Societies Has Begun: what happens when AI agents cooperate and compete — and why the tools we build need to be ready.



