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.1.0-rc.1

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

A Cherry site is a directory with a config file and content. That's the whole format:

mkdir mysite && cd mysite

Create cherry.exs:

[
title: "My Site",
url: "https://example.com",
description: "Notes from the orchard."
]

Create your home page at content/pages/index.md:

---
title: Home
description: The front door.
---
# Hello
Welcome to my site.

Tip

With Elixir installed you can scaffold all of this in one command: mix archive.install hex cherry_new, then mix cherry.new mysite. The scaffold includes a deploy workflow and an AGENTS.md, so the repo works out of the box whether a shell script or a coding agent is doing the publishing.

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.