Getting Started

DaemonHound ships as a single dhd binary. Install it in seconds and start syncing your configs across machines.

Installation

macOS

Homebrew
brew install 0xdps/tap/daemon-hound

macOS releases are signed with a Developer ID and notarized. You can also use the install script or download the DMG from GitHub Releases.

Linux

APT
curl -fsSL https://dhd.0xdps.dev/apt-repo.sh | sudo bash
sudo apt install daemon-hound

Windows

Scoop
scoop bucket add 0xdps https://github.com/0xdps/scoop-bucket
scoop install daemon-hound

Install Script (all platforms)

Shell
curl -fsSL https://daemonhound.dev/install.sh | sh
Verify your download. All release artifacts are GPG-signed. Import the signing key and verify checksums before installing. See the install guide for details.

Verifying the binary

Shell
curl -fsSL https://raw.githubusercontent.com/0xdps/daemon-hound/trunk/daemon-hound-release.asc | gpg --import
gpg --verify checksums.txt.asc checksums.txt
sha256sum -c checksums.txt --ignore-missing

First-time setup

After installing, initialize DaemonHound with your private Git vault repository:

Shell
dhd init --remote [email protected]:you/my-vault.git

This command:

  1. Generates a stable machine UUID stored in ~/.dh/config.toml
  2. Creates an age identity key — encrypted with your master password
  3. Clones (or creates) your vault repo at ~/.dh/vault/
  4. Saves your master password in the OS keychain
  5. Installs the background sync daemon
Back up your identity. The file ~/.dh/identity.age is never stored in the vault. Without it, your encrypted data cannot be recovered.

Setting up a second machine

On your first machine, export the shared identity:

Shell
dhd export-identity
# → AGE-SECRET-KEY-1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

On the second machine:

Shell
dhd init --remote [email protected]:you/my-vault.git --age-key AGE-SECRET-KEY-1...

Re-initializing

If you need to reconfigure DaemonHound on an existing machine:

Shell
dhd init --force
# Vault repository URL [[email protected]:you/my-vault.git]:   ← pre-filled