Built for indie hackers and build-in-public devs

Your blog should look like
the code you ship.

Monospace everything. Syntax-highlighted code blocks with a copy button. Markdown export with front-matter. An RSS feed. A REST API on Pro for scripted publishing. Publish webhooks. All included, no plugins, no config files.

Everything a hacker blog actually needs

No pretty themes, no bloated builders. Just clean type, real feeds, and a publish button that doesn't lie.

Monospace everything, zero pretty

Body text in JetBrains Mono, headings in the same family at heavier weights, link underlines that actually line up with the x-height. The Terminal theme is a deliberate rejection of variable-width web typography, and it stays light because there is no webfont acrobatics going on behind the scenes.

Syntax highlighting with a copy button, not a carousel

Code blocks ship with syntax highlighting (highlight.js), a copy-to-clipboard button, and a language tag in the corner. No Prism plugin install, no copy button add-on, no dependency on a third-party syntax CDN that breaks when the CDN sunset-emails you.

Markdown out, and an importer for the blog you already have

Your posts export as Markdown files with YAML front-matter (title, slug, date, status, tags), so you can always leave with your archive. To bring an existing blog in, the "Any blog or website" importer in Admin → Import works from your sitemap and RSS feed, and WordPress, Ghost, Substack, and Medium have their own importers. There is no importer for a folder of `.md` files yet. Scripted posting goes through the REST API on Pro.

An RSS feed and API access: the feeds your readers want

RSS 2.0 at `/feed.xml`, plus a versioned REST API at `/api/v1` on Pro for anyone who wants to script their own scraper. There is no JSON Feed or Atom feed yet. Every post page ships `application/ld+json` structured data.

Scripted publishing: push posts from CI

Create posts from your own scripts or CI with the REST API on Pro (`POST /api/v1/posts`), and let outbound webhooks on publish trigger your own automations (Zapier, n8n). There is no inbound GitHub webhook that drafts a post from a commit message, and changelog entries do not pull from git history; you write them. Readers who click through a Show HN link land on a page you control, and you can link it back to the repo.

Standard keyboard behaviour, nothing hijacked

There are no custom j/k shortcuts. Pages use ordinary links and headings, so your browser's built-in keyboard navigation, find-in-page, and reader mode work as they always do, and accessibility is not a compromise on brutalism.

VeloCMS vs Ghost vs Hugo

FeatureVeloCMSGhostHugo
Monospace theme out of the boxYesCustom CSSCustom CSS
Syntax highlighting built inYesPluginYes
Markdown export with front-matterYesNoYes
RSS feedYesYesYes
REST API for scripted publishingYesYesNo
Outbound webhooks on publishYesYesNo
Paid posts via Stripe (0% fee)YesYesPlugin

Frequently asked questions

What's a good CMS for hacker and indie tech blogs?

VeloCMS with the Terminal theme is designed for build-in-public devs who want monospace typography, syntax-highlighted code blocks, Markdown export, and a REST API for scripted publishing. Ghost gets close but lacks the Terminal aesthetic.

Does it have a terminal-style monospace theme?

Yes. The Terminal theme is a deliberate rejection of variable-width web typography: JetBrains Mono body text, ANSI-colour accents, and a brutalist layout that stays light because there's no webfont acrobatics. It's the only CMS theme we know of that looks like `less /var/log`.

Can I write in Markdown or import existing posts?

Partly. Your posts export as .md files with YAML front-matter (title, slug, date, status, tags), so the bridge out is clean. To bring an existing blog in, use Admin → Import: the "Any blog or website" importer works from your sitemap and RSS feed, and WordPress, Ghost, Substack, and Medium have their own importers. There is no importer for a folder of .md files yet, so a Hugo archive comes in through its RSS feed or through the REST API on Pro.

How fast does it actually load? Show numbers.

Terminal theme pages are pre-rendered HTML served from the edge. The JS bundle is under 150KB gzipped. Code blocks are server-rendered HTML with CSS highlighting — no JavaScript syntax highlighter running on every page load. Lighthouse Performance averages 97/100 on Terminal theme sites.

Is the codebase auditable? Can I read the source?

Not the core application — VeloCMS's source isn't published, so you can't read the platform codebase line by line. What you can audit: the plugin SDK (@velocms/plugin-sdk) is MIT-licensed, so any plugin you build is fully open and auditable, and the CLI/MCP tooling ships MIT too. On the platform side, every BYOK secret is encrypted at rest (AES-256-GCM), every webhook is HMAC-signed, and there's a responsible disclosure process on the developer portal if you find a security issue.

What's actually running under the hood?

A Next.js frontend and a PocketBase backend, deployed on Railway with Cloudflare R2 for media — VeloCMS runs and patches the infrastructure for you. What's genuinely open: the plugin SDK (@velocms/plugin-sdk) and CLI tooling are MIT-licensed, so you can build and audit anything you plug into it.

Does it support GitHub-Flavored Markdown in the editor?

Yes. The TipTap editor supports tables, task lists, strikethrough, fenced code blocks with language detection, and inline code — all the GFM extensions. Paste a GitHub README into the editor and the formatting comes through. Code blocks are highlighted automatically, or by the language you pick in the corner of the block.

What about syntax highlighting for obscure languages?

VeloCMS highlights code with highlight.js and its common language set, around 35 languages including Bash, C, C++, C#, CSS, Go, Java, JavaScript, TypeScript, JSON, Kotlin, Lua, Perl, PHP, Python, R, Ruby, Rust, SQL, Swift, and YAML. Obscure languages such as Zig, Gleam, or Nix render as plain monospace code. The language badge in the corner of each code block lets you pick the language, or leave it on auto.

Run a free technical SEO, performance, and migration-readiness audit — no signup required.Audit my site

Ship. Iterate. Own the archive.

Monospace theme, an RSS feed, Markdown export, a REST API on Pro. 14-day trial. Your Stripe, your domain, zero platform tax.

Long-tail content portfolio

101 niches. One CMS.

VeloCMS ships dedicated landing pages for 101 expert communities — photographers, beekeepers, ceramicists, philatelists, fountain-pen collectors, and 95 more. Each in its own vocabulary.