voxx

Publishing is a side effect of writing.

Voxx is a zero‑friction CMS for you and your agents. A folder of markdown becomes your blog, docs, or changelog — written like prose, shipped like code.

Read the docs →
content/posts/2026-06-12-hello-world.md
yoursite.com/blog/hello-world
metashipping

Hello, world

June 12, 2026·1 min read

We moved our blog into the repo today.

Why

No dashboards. No tokens. Just files. Write a post, open a PR, merge. Deployed.

  • git log is the audit trail
  • git blame is the byline

Prose wants to be prose, not rows in a database.

Try editing this file. The page keeps up.

This demo is live — edit the file on the left.

Why files

Prose wants to be prose not rows in a database.

grep -r "pricing" content/

Search your writing like you search your code.

git diff

Every edit is a readable, reviewable change.

git checkout -b rewrite

Draft a whole new direction on a branch.

gh pr review

Content ships through the same gate as code.

A folder of files will outlive every CMS.

One engine, three surfaces

File names are the API.

Dates sort the blog. Folders order the sidebar. Versions cut the releases. No config required — the convention does the work.

  • content/posts/
  • 2026-06-11-hello.md
  • 2026-05-28-v1-launch.md
  • 2026-05-02-why-files.md

The date prefix becomes the publish date. Newest first, automatically.

/blog

Jun 11Hello
May 28v1 launch
May 02Why files

Agent-native

Your agent doesn’t need a CMS API.
It needs a filesystem.

Every page is a plain .md file in your repo. Agents read and write content with the same tools they use for code — no API tokens, no SDK, no custom integration. And every change lands as a diff a human can review.

agent session

$ claude "fix the typo in last week's release notes"

Read content/changelog/1.4.0.md

Edit content/changelog/1.4.0.md

- drafts no longer apeear in the RSS feed

+ drafts no longer appear in the RSS feed

Bash git commit -m "fix: typo in 1.4.0 notes"

Done. Opened PR #412 for review.

Batteries included

Everything a page needs.
Nothing you have to wire up.

og: + json-ld

Open Graph tags and structured data on every page.

canonical

Canonical URLs, handled. No duplicate-content debt.

rss.xml

A real feed, generated from your posts.

sitemap.xml

Always current. Never hand-edited.

robots.txt

Sane defaults, easy overrides.

shiki

Syntax highlighting, light and dark, at build time.

toc

Table of contents from your headings.

~4 min read

Reading time, computed for you.

frontmatter ✓

Validated at build. Typos fail loudly, not silently.

voxx.json

One config file, JSON-schema validated.

Two ways to ship

In your app, or on its own.

Next.js

Scaffolded into your app

npx @prudentbird/voxx init writes real route files into your project. You own them — restyle them, extend them, delete what you don’t need. No black box.

  • app/blog/page.tsx
  • app/blog/[slug]/page.tsx
  • app/blog/_voxx/data.ts

Any stack

Fully static with voxx build

No framework? One command renders the whole site to plain HTML in dist/. Deploy it anywhere a folder can go.

  • dist/blog/index.html
  • dist/blog/hello-world/index.html
  • dist/blog/rss.xml

Bringing your own framework? @prudentbird/voxx-core exposes the parsing, validation and rendering primitives directly.

Your next post is one file away.

Read the docs →