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 withgh;l: the same on GitLab
withglab. Only offered when that tool is installed and logged in; when it
is installed but not logged in, it says to rungh auth loginfirst. It asks
for a name (the repo folder’s,homefor~/.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.