Quick-start
From nothing to a deployed site. Every output block below is real.
1 · Install the binary
curl -fsSL https://cherrybomb.dev/install.sh | sh
Windows:
irm https://cherrybomb.dev/install.ps1 | iex
The installer detects your platform, downloads the release binary, verifies it against the release's SHA256SUMS, installs it, and proves it works:
cherry version
cherry 0.6.1
A release binary also prints, in parentheses, the git revision it was compiled from, which is useful when you are running something built between releases.
Note
Elixir developers can skip the binary entirely: add {:cherry, "~> 0.1"} to a mix project and every command below is mix cherry.<verb>. Same verbs, same flags, same output, by construction.
2 · Make a site
cherry new mysite
* creating cherry.exs
* creating .gitignore
* creating README.md
* creating AGENTS.md
* creating .claude/skills/publish/SKILL.md
* creating content/pages/index.md
* creating content/pages/about.md
* creating content/posts/2026-08-19-hello-cherry.md
* creating static/images/.gitkeep
Your orchard is planted at mysite. Next:
cd mysite
cherry serve # live-reloading dev server
cherry check # the verifier agents build against
cherry gen.action # GitHub Pages deploy workflow
A working site with a first post, plus an AGENTS.md that teaches the workflow to any coding agent you point at the repo. Set your real details before anything else, no editor needed:
cherry config title "My Site"
cherry config url "https://mysite.example"
Under it all, a Cherry site is just a directory with a cherry.exs and markdown under content/. That's the whole format; the scaffold saves you typing it.
Tip
Elixir developers scaffold with the archive instead: mix archive.install hex cherry_new, then mix cherry.new mysite, which adds the mix project files so Cherry rides as a dependency. The Elixir guide covers that whole mode.
3 · Write a post
cherry gen.post "Growing season" --json
{
"ok": true,
"command": "gen.post",
"data": {
"date": "2026-08-14",
"path": "content/posts/2026-08-14-growing-season.md",
"slug": "growing-season"
}
}
Open data.path and write. The file starts as draft: true, so it shows up in the dev server but stays out of real builds until you publish it.
4 · See it
cherry serve
Live reload on every save, drafts included. Leave it running while you write.
5 · Verify and build
cherry check --strict
cherry build
Built 12 page(s), 2 asset(s) → _site
check fails loudly on broken links, missing descriptions, images without alt text, and duplicate titles (see the verifier). _site/ is the whole deliverable: HTML, feeds, sitemap, llms.txt, and a markdown mirror of every page.
6 · Deploy
cherry gen.action --json
{
"ok": true,
"command": "gen.action",
"data": {
"path": ".github/workflows/pages.yml",
"cname": "example.com",
"branch": "main"
}
}
Commit, push, and flip one switch in your repo: Settings → Pages → Source → GitHub Actions. Every push to main now builds and deploys. The deploy guide covers custom domains and project pages.