# botctl

The control tool itself lives on Ben's Mac at `~/botctl/`:

```
~/botctl/botctl          shell wrapper - this is what to run
~/botctl/botctl.py       the tool (Python 3, stdlib only)
~/botctl/registry.json   the fleet definition - a copy is next to this file
```

A backup copy of both files sits on the droplet at `/opt/botctl/`, so losing
the Mac does not lose the tool:

```
scp -i ~/kookwatch/id_kookwatch root@159.223.88.168:/opt/botctl/'*' ~/botctl/
chmod +x ~/botctl/botctl ~/botctl/botctl.py
```

`registry.json` here is the authoritative fleet definition: for each bot its
systemd unit, directory, log path, config path, Telegram bot and one line on
what it watches. If a bot is added or moved, update this file and the copy on
the Mac together - `botctl` reads it on every run.

`botctl.py` is stdlib-only and drives everything over SSH. It never prints a
token: `config` fingerprints them, `ping` resolves them to `@usernames`.
Keep that property in any change.
