Docs/Hearth/Install

Install

A single bash script bootstraps everything: the hearth CLI, every external binary, an age key for secrets, every sibling repo, and the dev compose stack.

Prerequisites

Hearth manages everything else, but these four tools have to be on the host already.

ToolWhyInstall
gitClone repossystem package manager
dockerRun the dev stackhttps://docs.docker.com/get-docker/
python3 (≥ 3.10)Hearth CLI is Pythonsystem package manager
sshClone private reposincluded with most systems

Everything else (sops, age, age-keygen, kubectl, yq, the hearth CLI itself) is installed automatically into ~/.katforge/.

Run the installer

shell
git clone git@github.com:katforge/hearth.git ~/.katforge/hearth
~/.katforge/hearth/install.sh

The installer is idempotent — running it again is safe and only fixes what's missing.

What it does

  1. Verifies prerequisitesgit, docker, python3 ≥ 3.10, ssh.
  2. Verifies your GitHub SSH access — early failure beats a confusing clone error halfway through.
  3. Sets up ~/.katforge/ as the canonical install root for everything that follows. Override with KATFORGE_ROOT=... before running.
  4. Creates ~/.katforge/.venv and installs the hearth Python CLI into it.
  5. Symlinks hearth into ~/.katforge/bin/ and adds that to your PATH via an idempotent block in ~/.bashrc or ~/.zshrc.
  6. Downloads single-file binariessops, age, age-keygen, kubectl, yq — into ~/.katforge/bin/.
  7. Generates an age key at ~/.katforge/age.txt and prints your public key.
  8. Clones every sibling repo and package into ~/.katforge/.
  9. Symlinks ~/Projects/katforge → ~/.katforge so editor and terminal habits keep working.
  10. Starts the dev compose stack.

After install

The installer adds ~/.katforge/bin to your PATH and sets SOPS_AGE_KEY_FILE via your shell rc. Existing shells won't see them. Open a new terminal before running any hearth command.

Every KATforge workflow is hearth <command>:

shell
hearth status
hearth secret list dev
hearth team whoami

Get authorized for secrets

The installer generated an age public key. Share it with a maintainer:

shell
hearth team whoami
# → age1abc...

A maintainer adds you:

shell
hearth team add age1abc...

That re-encrypts every secret file to include you as a recipient. Pull, and you can decrypt. See Secrets for the full model.

Configurable env vars

Set these before running install.sh to override defaults.

VariableDefaultEffect
KATFORGE_ROOT$HOME/.katforgeInstall root. Everything lives under this directory.
HEARTH_REFmainBranch or tag of hearth to check out.
HEARTH_REPOgit@github.com:katforge/hearth.gitGit URL for hearth itself.

Uninstall

shell
rm -rf ~/.katforge ~/Projects/katforge

Then remove the # === BEGIN katforge === block from your ~/.bashrc or ~/.zshrc.