Quick-start

From nothing to a deployed site. Every output block below is real.

1 · Install the binary

sh
curl -fsSL https://cherrybomb.dev/install.sh | sh

Windows:

sh
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:

sh
cherry version
text
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

sh
cherry new mysite
text
* 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:

sh
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

sh
cherry gen.post "Growing season" --json
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

sh
cherry serve

Live reload on every save, drafts included. Leave it running while you write.

5 · Verify and build

sh
cherry check --strict
cherry build
text
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

sh
cherry gen.action --json
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.