Skip to content

A CMS built for humansand AI equally.

Birkly is a flexible content management system for modern web projects and apps, based on plain HTML, CSS, PHP and JavaScript. It runs on zero dependencies: no frameworks, libraries or packages to install, maintain or pay for, and no build step to compile them. That means less complexity and fewer security and supply chain risks.

from 'birkly' get 'the point'

Four things we don't just promise. We built them in.

(01)

Made for humans and AI equally

Connect any AI you want — no extra subscription. Birkly's structure and APIs are built for agentic, structured access, with humans in the loop.

(02)

No dependencies, no headache

Zero npm or composer runtime dependencies. Fewer supply-chain risks, fewer breaking upgrades, nothing to babysit at 2 a.m.

(03)

Open source, transparent, fair

Free and fully open source at release. A transparent, community-friendly alternative to profit-first SaaS CMSs.

(04)

The simplest solution, for real

Content and admin in one place. No complex setup — a working site up and running fast, on your own server.

for each entry in 'audience' ordered by need

Built for the people who run the business, and the AI they use to do it.

Business owners

No surprise bills. No vendor holding your content hostage.

Your content and data stay yours — run Birkly on your own server or any host you choose, and leave whenever you like.

Developers

API-first, Git sync, Developer mode.

Self-hosted and extensible. Project Git sync, Developer mode, and a readable PHP/JS core — if you can read the code, you can extend Birkly.

Marketers

Ship the campaign yourself. No ticket needed.

Update landing pages, campaigns and blog posts when it matters — with approval workflows if you want them.

AI agents

Agent Guide & WebMCP — built for agents.

Full WebMCP and Agent Guide (Settings → AI: Guide · Tools · Publish) give agents structured content control. Humans stay in the loop; agents get reliable tools, not guesswork.

Every one of them opens the same instance. See what each one actually gets →

from 'birkly' get 'the model' limit 3

Collections, entries, templates. That's it.

If you understand collections, entries and fetching, you understand Birkly. So does your AI.

01

Define the shape.

A collection is a schema — fields, types, relationships. Set it once in the admin, and every entry inherits it.

Defining a collection schema in the Birkly admin

Creating a collection in the schema editor.

02

Fill it in.

An entry is just data in that shape — write it by hand in the admin, or push it in from anywhere with the API.

Filling in a new entry in the Birkly admin

Creating an entry in the admin.

03

Pull it into a page.

A template pulls entries straight into HTML with a few lines of markup — no build step, no regeneration, no waiting.

Fetching entries from the Birkly API into a page

Pulling entries into a page via the API.

for each entry in 'shapes' ordered by ambition

A blog on Monday. A shop by Friday. Same content model.

Collections, entries and fields are the only primitives. What you build with them is a matter of arrangement — not of picking a different product.

Work, clients, and the media in between.

Projects reference clients, clients reference projects, media lives in one library both can pull from. Multi-language is a field, not a rebuild — the same project entry serves every locale you publish in.

Needs: core only

collections/

4 collections · multi-language ready

Start here. One collection and a template.

One posts collection: an editor field for the body, a tag field for categorization, and a select field for the author. One blog-post.html serves every entry you will ever publish. This is the smallest useful Birkly site, and nothing about it is a starter kit you outgrow — it is the same engine the rest of this list runs on.

Needs: core only

collections/

1 collection · 1 template · no plugins

Nested sections, versioned, agent-readable.

Sections is the only top-level collection you need: articles nest inside each section as a sub-collection, and versions nest one level deeper inside each article. FAQ stays a separate, flat collection, since its questions don't belong under any one section. Agent Guide then exposes the whole tree as grounded context, so an AI answering questions about your product reads your actual docs instead of guessing.

Needs: core only — Agent Guide is built in

collections/

2 collections · nested · MCP-readable

A catalog is a collection. Commerce handles the rest.

One products collection, each entry carrying a Commerce field for pricing, fulfillment and purchase options. Add a variants sub-collection for sizes or colors if you need them. Commerce itself manages the cart, Stripe checkout, subscriptions, orders and customers — there is no separate collection to build for any of that.

Needs: core + Commerce

collections/

1 collection · 1 plugin · checkout included

One events collection. RSVPs and tickets included.

Each event is a single entry with an Event field that bundles the date, location and capacity together. The Events plugin handles free RSVPs and registration on that same entry; add Commerce and it can sell paid tickets through checkout too — no separate collections for venues, tickets or sign-ups.

Needs: core + Events (+ Commerce for paid tickets)

collections/

1 collection · RSVP + tickets built in

from 'birkly' get 'templating' with 'connection'

Templates that read like English. Connections that take one line.

Connect an existing site or build new pages — without being locked into any framework.

A templating language you already speak

Loops, fields and conditions written close to plain English. Your team reads it on day one — and so does any MCP-connected agent, without a schema briefing.

you write
﹛for each entry in 'blog' ordered by newest limit 3﹜
  <article>
    <h2>﹛title﹜</h2>
    <p>﹛'excerpt'﹜</p>
  </article>
﹛endfor﹜
visitors get

Shipping small, shipping often

Our approach to building fast without breaking what already works.

Why we removed the build step

Every dependency is a promise someone else has to keep.

Notes on making things well

Thoughtful posts, shipped often — and never rewritten for a framework.

One template, every entry

Write blog-post.html once. Every entry in the collection renders through it — no page per post, no regeneration, no deploy. Change the template and all of them change.

you write once
// blog-post.html
﹛from 'blog' get entry by slug﹜
  <h1>﹛title﹜</h1>
  <time>﹛created_at format "F j, Y"﹜</time>
  ﹛'body'﹜
﹛endget﹜
serves every post

/blog/shipping-small

/blog/no-build-step

/blog/making-things-well

…and every entry you add tomorrow.

Connect a site you already have

One script tag on any page, anywhere — then whitelist the domain in admin. No migration, no framework, no rebuild. Or drop your files into the project folder and get server-side rendering for free.

you write
<!-- anywhere in your existing site -->
<script src="/birkly-client.js">
</script>
what happens

Domain whitelisted

6 collections available

Templates resolving

for each entry in 'hub' with 'status' = 'available'

Official plugins, packs, and extensions.

The Birkly Hub is the live catalog for Commerce, Automation, Events, Studio, and more. The core stays free — you only reach for the Hub when you need it.

Explore the Hub

Loading Hub catalog…