Cherrybomb

A static site generator for hackers.
Fast static pages · a proper blog · your developer story — with first-class support for the agents that help you build it.

cherrybomb.dev · Design · ADRs · Changelog


Cherrybomb is a modern take on Octopress: your site is a repo, publishing is a task, everything is hackable — without the part where upgrading the framework ruins your week. The engine is Elixir, the CLI is cherry, and the output is plain HTML you can host anywhere.

Install

One line, no toolchain:

curl -fsSL https://cherrybomb.dev/install.sh | sh # macOS / Linux
irm https://cherrybomb.dev/install.ps1 | iex # Windows

Upgrading is cherry upgrade. Elixir developers can skip the binary and use Cherry as a mix dependency instead — every cherry <verb> below is also mix cherry.<verb>, flag for flag.

Quickstart

cherry new mysite && cd mysite
cherry gen.post "Hello, world"
cherry serve # live-reloading dev server
cherry build # → _site/, plain files, deploy anywhere
cherry gen.action # GitHub Pages workflow, done

What you get

Fast static pages. Prerendered HTML, zero JavaScript by default. Enhancements (theme toggle, search) are tiny islands that fail soft.

A blog that behaves. Markdown + YAML frontmatter, validated against a schema at build time — errors name the file and the field. Tags, drafts, future posts, Atom + JSON feeds, sitemap, canonical URLs, OpenGraph and JSON-LD, all default-on.

A developer story, not a résumé. The portfolio is data: positions, projects, talks, open source — rendered as a timeline, cross-linked with your blog through one shared tag taxonomy. The "Elixir" page shows your jobs, projects, and every post you've written about it.

Themes you can actually swap. Themes implement a versioned contract (templates + design tokens), so switching is one config line. Customization is a ladder — config → tokens → CSS → eject a template — and ejects record provenance, so theme upgrades three-way-merge instead of silently stranding your copies.

Light and dark, properly. Token-driven, honors system preference, manual toggle wins, no flash of the wrong theme — and code blocks follow along at zero JS cost.

Agents are users too. Every command takes --json and returns structured results. cherry check verifies links, SEO, and schemas with machine-readable diagnostics. cherry schema posts --json tells an agent exactly what valid frontmatter is before it writes. New sites ship an AGENTS.md. Published sites emit llms.txt and a markdown mirror of every page — readable without scraping.

Host anywhere._site/ is plain files. GitHub Pages is first-class (generated Actions workflow, correct base-path handling for project pages, CNAME, .nojekyll) — Netlify, Cloudflare, S3, or rsync work just as well.

Hack it

A Cherry site is a thin Elixir project depending on the cherry package — so a "plugin" is just a module in your repo hooking a pipeline stage, and a framework upgrade is a version bump. Binary-mode sites (no mix.exs) extend via extensions/*.exs scripts and can graduate to a full mix project by adding one file.

Builds are deterministic by contract: same input, byte-identical output.

Status

Pre-0.1 — this README is the north star, not the current state. Cherry is being built in the open, README-first: DESIGN.md is the constitution, docs/adr/ records the decisions, and DO_NEXT.md is the build order. The first dogfood targets are holsee's site (migrating off Octopress, full circle) and cherrybomb.dev itself.

License

Dual-licensed under MIT or Apache 2.0 — your choice. Contributions are accepted under the same dual license.