Install and update
Install and update
homebot v0.1.0 supports macOS and Linux. Run homebot setup after installing
it to configure the background helper and your home repo.
What homebot needs
homebot needs git 2.40 or newer and gitleaks: the commit guard refuses every
commit when gitleaks is missing. homebot setup checks both before it
changes anything, and offers brew install gitleaks when Homebrew is on your
PATH. The Debian and RPM packages require git and recommend gitleaks; the
other install methods leave both to you. age encryption is built in, so there
is no age to install. These are optional: zsh (for the startup line and the
prompt count), gh or glab (homebot remote creates your backup repo with
one), and fzf and lazygit (nicer diffs and line merging in
homebot cleanup).
Homebrew
brew install --cask svallory/tap/homebot
homebot setup
The cask is for macOS only; on Linux use the installer script or a package.
The macOS release test exercises its installation, quarantine handling and
upgrade. Use the
fully qualified svallory/tap/homebot name to select this tap’s cask and its
trust path. brew info --cask homebot found no official cask with that name
on 2026-10-14; qualification still avoids ambiguity if one appears. Homebrew
6 and newer may require trust for a tap’s cask; the fully qualified install
selects and trusts this cask. If you tap first, use
brew tap svallory/tap && brew trust --cask svallory/tap/homebot before
installing it.
The v0.1.0 macOS binary is unsigned and not notarized. The cask’s install hook clears the quarantine attribute from its installed binary. The release test checks the attribute, including a cask without the hook as a negative control.
Front door script
curl -fsSL https://homebot.sh/install | bash
The front door builds homebot from source with Go, installing Homebrew and the
tools it needs first, each with your OK, and then starts homebot setup. It
needs bash and is the only installer that takes --persona ID and
--name NAME, so you can pick the robot and the command name up front:
curl -fsSL https://homebot.sh/install | bash -s -- --persona ID --name NAME
What it does, step by step, is on the docs home page. Read the script at
homebot.sh/install before piping it to a shell.
Once a release exists, you can skip the build and use the release installer
below, then pass --persona and --name to homebot setup yourself.
Release installer script
curl --proto '=https' --tlsv1.2 -fsSL https://github.com/svallory/homebot/releases/latest/download/install.sh | sh
The script is a release asset, covered by the release’s signed checksums. To
pick a release or install folder, pass flags after sh -s --:
curl --proto '=https' --tlsv1.2 -fsSL https://github.com/svallory/homebot/releases/latest/download/install.sh | sh -s -- --version v0.1.0 --bin-dir "$HOME/.local/bin"
The script accepts --version vX.Y.Z, --bin-dir DIR, --require-signature
and --max-time SECONDS. It installs into ~/.local/bin by default, checks
the release checksum, runs the new binary’s version command before replacing
an older copy, and records an install receipt. With cosign 2.4.3 or newer it
also verifies the signature; otherwise it warns that the signature was not
checked. Pass --require-signature to refuse installation without that
verification. Run homebot setup when it
finishes. Run the script as your own user, never through sudo: it refuses a
sudo caller on macOS and Linux. A root shell with its own root-owned HOME
(for example in a container) installs into root’s home.
The one-line method trusts GitHub and the network path to it to send the intended script. The front door script above is served by homebot.sh instead, so using it also trusts that server and Cloudflare. For high assurance, use the GitHub URL, not the front door: download the asset, verify it as below, then run it with signature checking required:
sh install.sh --require-signature
Debian, Ubuntu and Fedora packages
Get the .deb or .rpm for your architecture from the
release page. For
v0.1.0, the names are homebot_0.1.0_amd64.deb or
homebot_0.1.0_arm64.deb, and homebot-0.1.0-1.x86_64.rpm or
homebot-0.1.0-1.aarch64.rpm. Verify the download as below, then install
the matching file:
sudo apt install ./homebot_0.1.0_amd64.deb
# or, on Fedora:
sudo dnf install ./homebot-0.1.0-1.x86_64.rpm
These package managers need root for installation and upgrades. The
background helper can report an available version but will not run sudo.
Build with Go
With Go 1.26 or newer:
go install github.com/svallory/homebot/cmd/homebot@latest
Put $(go env GOPATH)/bin on your PATH (or $GOBIN if you set it), then
run homebot setup. A Go
install stays under your control: update: auto will not replace it.
Script and Go installs do not carry the packaged completion files. Run
homebot completion bash, homebot completion zsh or
homebot completion fish to print the script for your shell. For zsh, load it
after compinit and before the eval "$(homebot shell zsh)" line in your
.zshrc:
autoload -Uz compinit && compinit
source <(homebot completion zsh)
eval "$(homebot shell zsh)"
See Completion for why the order matters.
Verify a release download
The release page
provides checksums.txt and checksums.txt.sigstore.json. Download those
and the asset from the same release. Verify the checksum file’s keyless
Sigstore bundle, bound to this repository’s tagged release workflow:
# cosign 2.4.3 through 2.x
cosign verify-blob --new-bundle-format \
--certificate-identity https://github.com/svallory/homebot/.github/workflows/release.yml@refs/tags/v0.1.0 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--bundle checksums.txt.sigstore.json checksums.txt
With cosign 3.x, omit --new-bundle-format. The oldest version verified
against the release bundle format is 2.4.3. Debian trixie offers cosign
2.5.0 and Ubuntu 26.04 offers 2.6.2 in the release matrix check; the Fedora
44 package check found no
cosign package, so use an independently verified cosign binary there. After
verifying the bundle, compare your asset’s SHA-256 with its exact filename
line in checksums.txt. For example, for the downloaded installer:
shasum -a 256 install.sh
grep ' install.sh$' checksums.txt
The two digests must agree. On Linux, sha256sum install.sh works too.
This verifies the bytes you run; merely reading a moving branch’s source
file does not verify a release asset.
Updates
homebot version --check checks for a release when you ask, and says so when
this copy is already current. The optional
update: key in homebot.yml controls what the background helper does:
| Value | Background behavior |
|---|---|
off (default) |
Makes no automatic release check. |
notify |
Checks at most daily (six hours after a failed check) and adds an inbox item for a newer release. |
auto |
Checks at most daily (six hours after a failed check); can upgrade a script install or this Homebrew cask after a release has been seen for 48 hours. Other methods get an inbox item with a manual command. |
An unknown value warns and acts as off. Automatic updates run only in the
background helper, never as part of an interactive homebot tidy --notify.
The Homebrew cask relies on the tap’s SHA-256 checksums. A script install
requires cosign 2.4.3 or newer on the helper’s recorded PATH; it verifies
the release signature and checksum before installing. If cosign is missing,
too old, or verification fails, it leaves the binary untouched and raises
an inbox item, and that item stays until the installed version catches up, even
if a later check can’t reach GitHub. Debian, RPM, Homebrew formula, go install
and unknown installs are manual.
The helper captures your proxy and CA environment (HTTPS_PROXY,
HTTP_PROXY, NO_PROXY, their lowercase forms, SSL_CERT_FILE and
SSL_CERT_DIR) at setup. Run homebot setup again after changing those
values or installing cosign in a new PATH directory. If your home repo syncs
across machines, set update: only after every machine runs v0.1.0 or
later and has rerun homebot setup.
Remove homebot
Run homebot setup --remove before removing its binary; this uninstalls the
background helper and removes a command-name link homebot owns. Then use
brew uninstall --cask svallory/tap/homebot, sudo apt remove homebot,
or sudo dnf remove homebot for those install methods. For a script install,
remove the installed homebot from your chosen --bin-dir and its
install-receipt in $XDG_DATA_HOME/homebot (or
~/.local/share/homebot). A Go install’s binary is in $GOBIN when set,
otherwise $(go env GOPATH)/bin/homebot. Your home repo and its files are separate;
removing the program does not delete them.