Install
August 12, 2026 · View on GitHub
Plugin (hermes-agent v0.3.0+)
One-liner (install.sh):
curl -sSL https://raw.githubusercontent.com/raulvidis/hermes-android/main/install.sh | bash
What it does:
- Shallow-clones the repo to a temp dir.
- Copies
hermes-android-plugin/→~/.hermes/plugins/hermes-android. - Installs
aiohttpif missing (pip/pip3). - Cleans up the temp dir.
Then restart hermes-gateway and run /plugins to verify — should show ✓ hermes-android v0.4.1 (42 tools).
Manual alternative:
mkdir -p ~/.hermes/plugins
cp -r hermes-android-plugin ~/.hermes/plugins/hermes-android
Bridge APK
Option A — prebuilt: download hermes-android-<version>.apk from the Latest Build release; install on-device or adb install hermes-android-*.apk.
Option B — build from source:
cd hermes-android-bridge
./gradlew assembleDebug
adb install app/build/outputs/apk/debug/hermes-android-*.apk
It is an unsigned debug build (not on Play Store / F-Droid yet).
Grant permissions on the phone
Full mapping of permission → tools is in the README "Permissions" table. Checklist (Settings paths vary by OEM):
- Open Hermes Bridge → Enable Accessibility Service → toggle Hermes Bridge ON (required by all tools)
- Enable Status Overlay → grant
- Grant Screen Recording → approve the system dialog (
android_screen_record) - Settings > Apps > Hermes Bridge > Permissions: Location, Contacts, SMS, Phone
- Settings > Apps > Special app access > Notification access → enable Hermes Bridge (
android_notifications/android_events)
Missing grants show up as per-tool failures — see troubleshooting.md "Permissions" for the failed-tool → missing-grant mapping.
Android Automotive (AAOS) head units
Sideload the same APK via adb install (USB to the head unit, or adb connect <ip>:5555). Grant Accessibility + overlay; skip phone-only perms. For network: adb forward tcp:8766 tcp:8766 then enter http://localhost:8766, or use the relay's http://<ip>:8766 on the same WiFi. SMS/calls/contacts return errors gracefully.
Persistent relay (systemd)
contrib/ ships a standalone relay daemon + unit file so the relay survives gateway restarts:
sudo mkdir -p /opt/hermes-android
sudo cp -r contrib tools /opt/hermes-android/ # unit hardcodes /opt/hermes-android paths
# ANDROID_BRIDGE_TOKEN (pairing code) + optional ANDROID_RELAY_PORT (default 8766) in ~/.hermes/.env
sudo cp contrib/hermes-android-relay.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now hermes-android-relay
Verify: systemctl status hermes-android-relay and journalctl -u hermes-android-relay -n 20. The daemon exits at startup if ANDROID_BRIDGE_TOKEN is unset.
Python dev setup
pip install -e ".[dev]"
python -m pytest tests/
Requires Python >=3.11. See configuration.md for env vars.