Setup

Aphrodite ships as a Hermes Agent plugin (recommended) or a standalone Chat Completions proxy. Binaries are never shipped in the repository and register() never downloads - run the explicit setup step to fetch the binary and dylib from GitHub Releases into ~/.hermes/aphrodite/, with SHA-256 verification.

Option A: Hermes plugin

git clone https://github.com/PlayForm/Aphrodite-Hermes.git
cd Aphrodite-Hermes
ln -s "$(pwd)" ~/.hermes/plugins/aphrodite
bash download.sh
cd ..
hermes plugins enable aphrodite
hermes

bash download.sh (or pwsh ./download.ps1 on Windows) fetches the binary and dylib from GitHub Releases and verifies them against SHA-256 checksums.

Option B: Cargo

cargo install aphrodite        # proxy binary
cargo install aphrodite-hermes # dylib + helper bin
aphrodite setup                # runtime home under ~/.hermes/aphrodite + hooks-only loader

Option C: from source

git clone https://github.com/PlayForm/Aphrodite.git
cd Aphrodite
git submodule update --init --recursive
cargo build --release -p aphrodite -p aphrodite-hermes

Configuration

Aphrodite is TOML-driven. It reads ./aphrodite.toml first, then ~/.hermes/aphrodite/aphrodite.toml; environment variables override TOML, TOML overrides defaults. Auto-reload is opt-in (compression.auto_reload). The template lives at aphrodite.toml.example in the repository.

Injected context is hard-capped per turn (flow.budget_chars, default 2600). Keys not yet wired into the runtime are annotated DOCUMENTED BUT UNWIRED in the example file - the example is the source of truth.