Commands

Commands

homebot --help prints the same list. homebot <command> --help (or
homebot help <command>) prints that command’s own page: what it does, its
options and examples. --help never runs the command, whatever else is on the
line. Every command that changes something refreshes the inbox afterwards.

homebot unpack runs every step without asking; homebot unpack --dry-run
lists them first.

Attention

Command Does
homebot The inbox: top 5 things that need you. --all for everything.
homebot next Run the fix for the first item.

Moving in

Command Does Flags
homebot unpack [profile] Run a profile’s steps --dry-run, --from N
homebot pack <path> Move from $HOME into the repo, link back --layer common|linux|macos, --private
homebot link Make every link, list what’s in the way. Exits 1 on layout errors. --backup, --dry-run
homebot unlink Remove every link homebot made. Files stay in the repo.
homebot cleanup Go through the backups link --backup left: a diff for each (in fzf when it’s installed), then delete, keep, use it, or merge some of its lines into the repo file. See Cleaning up backups. --list

Secrets

Command Does Flags
homebot keys init Create the key pair (asks for a passphrase)
homebot unlock Decrypt private/ --theirs (take the other machine’s version)
homebot lock Encrypt what changed --ours (keep this machine’s version), --wipe (delete plaintext)

Keeping order

Command Does Flags
homebot triage One question per new file in watched folders
homebot inventory Links, secrets, repo, exports, helper at a glance
homebot remote [url] Set up where the repo is backed up. See Backing up.
homebot save Seal, commit, pull --rebase, push -m "msg", --no-push
homebot export [name...] Snapshot installed packages into manifests/
homebot tidy Run the hourly chores now --notify, --quiet
homebot setup Install the commit guard and the background helper. Asks for your git name and email when git has none and saves them in ~/.config/git/config (or prints the command, without a terminal). --remove
homebot actions List the actions profiles can use
homebot action <name> [args] Run one action by hand, e.g. homebot action apt-repos linux/apt-repos
homebot shell zsh Print the shell integration

Triage keys

homebot triage shows each new thing in ~/.config/* and ~/.* once:

Key Answer
t track everywhere (autolink/common)
o track on this OS only
i ignore forever (written to decisions.yml)
s snooze 7 days (this machine only)
Enter next
q quit

Backing up: homebot remote

Without a remote, nothing leaves the machine, and the inbox says “Not backed
up”. homebot remote sets one up:

  • g: create a private GitHub repository with gh; l: the same on GitLab
    with glab. Only offered when that tool is installed and logged in; when it
    is installed but not logged in, it says to run gh auth login first. It asks
    for a name (the repo folder’s, home for ~/.home, by default).
  • u: paste the URL of a repository you already have.
  • Enter: not now.

A new repository’s ssh address is used when ~/.ssh has a key, else its https
address (then gh auth setup-git lets git use gh’s login). Then it pushes.

With a remote already set, it checks that git can reach it and pushes what
isn’t there yet. When an https remote fails because nobody is logged in and
there is an ssh key, it offers the ssh address of the same repository.
homebot remote <url> makes that URL the remote. Without a terminal it only
explains.

The inbox shows “Not backed up yet” while a remote has never received a
push, which is also how a remote git can’t log in to shows up.

Where the repo is found

$HOMEBOT_ROOT → the current directory (walking up to a homebot.yml) → the
binary’s location → ~/.home.