Appearance
Install
Requirements
| OS | macOS, or Linux with systemd (POSIX). Windows: run it inside WSL (best-effort) |
| Python | >= 3.9 |
| fswatch | emcrisostomo/fswatch |
bash
brew install fswatch # macOS
sudo pacman -S fswatch # Arch / Omarchy
sudo apt install fswatch # Debian / Ubuntu
sudo dnf install fswatch # Fedorasafekeep doctor prints the right command if fswatch is missing.
safekeep itself has no runtime dependencies: pure Python standard library.
pipx (recommended)
bash
pipx install safekeeppip
bash
pip install safekeepAgent (launchd / systemd)
The agent that runs the daemon at boot is installed from a checkout of the repository — not from the wheel — because the rendered plist / systemd unit points at a concrete checkout:
bash
git clone https://github.com/foxhound87/safekeep.git
cd safekeep
bash install.shinstall.sh is idempotent: it creates ~/.safekeep from the example (if missing), renders ~/Library/LaunchAgents/com.safekeep.agent.plist on macOS or ~/.config/systemd/user/safekeep.service on Linux, and runs preflight checks. It does not start the job — see Agent.
On Linux without systemd (WSL1, WSL2 with systemd off, containers) it installs no unit and exits 0 with manual-start instructions — see Windows: WSL.
Verify
bash
safekeep --help
safekeep doctorRun doctor after granting Full Disk Access on macOS (see Troubleshooting); on Linux the same command checks the inotify watch limit and the systemd unit.