Google Play
Fastest setup, automatic updates, and the complete everyday Hermes experience.
- Chat, voice, profiles, and Manage
- Terminal, media, and notifications with Relay
- No AccessibilityService or unattended phone control
Hermes-Relay ships in two flavors built from the same codebase. Most users want the Google Play one. Power users who want the agent to drive their phone hands-free want the sideload one. This page explains what's different, why, and how to choose.
Start with Google Play unless you specifically want Device Control. The two builds use different application IDs, so they can coexist on one phone while you decide.
Fastest setup, automatic updates, and the complete everyday Hermes experience.
The same app plus Device Control for people who want Hermes to operate the phone.
It's easy to read this page as "Google Play vs Sideload" and miss that two independent things decide what your agent can do:
Chat, Manage, and Vanilla Hermes voice need neither — they run on unmodified upstream Hermes. Everything else is additive:
Chat · Manage · standard voice — runs on unmodified upstream Hermes
Terminal / TUI · relay & enhanced voice · notification forwarding · media handoff · desktop tools
Device Control — screen reading · taps · typing · vision-driven navigation
Two independent prerequisites. The Relay plugin is server-side (installed on the machine running Hermes); the Sideload build is app-side (which APK you install). Device Control needs both — a sideload app with no paired relay still can't drive your phone, and a paired relay on the Google Play build has no phone-control surface.
So Device Control needs both: the Relay plugin paired and the sideload build. A sideload app with no paired relay still can't drive your phone, and a paired relay on the Google Play build still has no phone-control surface. The flavor table below assumes a paired relay — it isolates the one axis this page is about (which build), not whether the plugin is installed.
Hermes-Relay's sideload Device Control channel uses Android's Accessibility Service — a powerful API designed for screen readers and assistive tech that, by extension, lets one app see and control another. It's exactly the right tool for letting an AI assistant act on your behalf, but Google Play scrutinizes accessibility-service apps very carefully because the same API is also a popular vector for malware.
To stay inside Google Play's policy without giving up the rest of the app, the Hermes-Relay APK on Google Play is built from a smaller subset of the source. The accessibility service, screen-reading routes, gesture dispatch, screenshots, SMS/call/contact/location helpers, overlays, wake-lock Device Control, and unattended-control code are not compiled into the APK at all. It's not "disabled with a flag" — the code is physically absent from the binary Google reviews and you install. Notification companion stays available through Android's separate Notification Access permission.
If you want the full feature set — including screen reading or any part where the agent performs actions on the phone for you — that's the sideload build, distributed straight from GitHub Releases as a signed APK.
| Feature | Google Play | Sideload |
|---|---|---|
| Chat & voice | ||
Chat with your agent Direct streaming chat over the Hermes API. No middleman. | Included | Included |
Hermes Chat + Voice Output Stable voice mode: Android records speech, Hermes owns the chat/tool turn, and the relay renders the answer aloud. | Included | Included |
Realtime Agent Opt-in provider-native realtime voice with Hermes-brokered tools, confirmations, profiles, and transcript state. Experimental in both tracks; provider secrets and Hermes tools stay on the relay. | Included | Included |
Profiles, personalities, sessions Full session browser, profile picker, agent/personality context, and per-profile voice defaults. | Included | Included |
| Bridge Core | ||
Relay pairing and status Pair by QR/manual code, manage relay sessions, grants, endpoint health, and connection diagnostics. | Included | Included |
Terminal/TUI relay Use paired relay sessions for terminal and Hermes TUI access to the host. | Included | Included |
Notification triage Optional Android Notification Access forwards posted-notification metadata to your paired relay. | Included | Included |
Media handoff Relay-registered media renders in chat and can be shared through Android-native flows. | Included | Included |
| Sideload Device Control | ||
Read what is on your screen Agent can inspect the accessibility tree so it can answer "what does this say?" Google Play has no AccessibilityService or screen-reading surface. Install sideload for Device Control. | Not in this track | Included |
Tap, type, and swipe (with confirmation) Agent can perform UI actions on your behalf. Google Play command probes fail closed with device_control_sideload_only before any AccessibilityService-dependent code can run. | Not in this track | Included |
Reply to messages from voice "Text Sam I will be 10 min late" — fully hands-free. Voice-routed bridge intents are sideload-only. | Not in this track | Included |
Vision-driven navigation Agent looks at the screen and figures out what to tap on its own. Vision-driven UI navigation requires the unrestricted accessibility surface and is sideload-only. | Not in this track | Included |
Workflow recording (future) Show the agent something once, ask it to repeat the workflow later. | Not in this track | Included |
| Device Control safety rails | ||
App blocklist Banking, password managers, and work email default-blocked from bridge actions. Not needed on Google Play because Device Control is absent from that artifact. | Not in this track | Included |
Confirmation on destructive verbs "Send", "pay", "delete", "transfer" — always prompt before acting. | Not in this track | Included |
Auto-disable + activity log Bridge turns itself off when idle. Every action is logged with a thumbnail. | Not in this track | Included |
| Install & updates | ||
One-tap install Install from the Play Store with no special permissions. Sideload requires enabling "Install unknown apps" for your browser the first time. | Included | Not in this track |
Automatic updates Get new versions without thinking about it. Sideload updates are a manual download from GitHub Releases. | Included | Limited |
Both tracks build from the same Kotlin source tree. Tier 3, 4, and 6 features are compiled out of the Google Play APK at build time via Gradle product flavors — they are not present in the binary, not just hidden behind a switch.
Yes — and you don't even have to choose just one. The two builds use different application IDs (com.axiomlabs.hermesrelay for Google Play and com.axiomlabs.hermesrelay.sideload for sideload), which means Android treats them as two completely separate apps. Each gets its own launcher icon, its own settings, and its own paired-device entry on the relay.
If you want to migrate fully from one to the other, just uninstall the one you no longer use. Sessions, attachments, and pairings are stored per-app, so wiping the old one only affects that one.
One tap from the Play Store listing. Updates arrive automatically.
Download the file ending in -sideload-release.apk from the latest GitHub Release (for example, hermes-relay-1.0.0-sideload-release.apk), allow installs from your browser, and tap the file. Full step-by-step instructions (including how to verify the APK signature) live in Installation & Setup → Sideload APK.
In both cases, the server-side plugin is updated independently on whatever machine runs your Hermes agent — re-run hermes plugins install Codename-11/hermes-relay/plugin, or run the hermes-relay-update shim if you used the legacy installer — see the installation guide for that flow.
The safety rail system is designed for the sideload track where the agent can control the phone. On the Google Play track, action routes are blocked at the code level (not "disabled by a flag" — the routes return 403 and the safety settings UI is hidden entirely), so the safety rails don't fire because there's nothing to gate.
On the sideload track, the full safety rail stack runs:
/tap_text, /type, AND on /tap + /long_press when the tapped button's text contains a destructive verb (so tapping a "Send" button by node ID is also gated).error_code: user_denied response with an explicit "do not retry via UI automation" instruction. The agent cannot work around a denial by driving the Messages app UI instead.On the Google Play track, none of the above fires because Device Control is absent. The Bridge tab shows Bridge Core status and links for Connections, Terminal, Voice, Notification Companion, Media, and Relay Sessions; it does not show Accessibility, screen reading, gesture, screenshot, or safety-rail controls.
[?] Get Help · [!] Found a Bug? · [+] Get Started