Skip to main content

Hermes Mobile Plugin

version CI MIT platforms python

The server-side half of Hermes Mobile: one plugin that turns your running Hermes Agent into a phone-ready hub — QR pairing, voice, files, and server management. No extra daemon, no cloud relay: everything is mounted on the gateway you already run (default port 8642).

You install Hermes Agent from the official site, then this one plugin. That's the whole server-side setup.

What you get

Pairing screen

Settings in the app after scanning the QR: server URL + key configured, connection live.

Capability What it means for you
QR pairing install prints/opens a QR with URL + API key; the app scans it (camera or gallery) and configures + tests the connection itself.
Voice on-device Speech-to-text (Whisper) and text-to-speech routes on the gateway, so the phone mic/speaker work with zero extra services.
File transfer Upload attachments from the phone, download anything the agent creates — the chat shows real file cards, previewable in-app.
Context meter Live token usage / context window per session, straight from server truth.
Slash commands The app's / menu is built from your actual server commands, not a hardcoded list.
Update from your phone About screen checks and applies hermes update on the server — restart included.
Keep-awake control Toggle the Termux/system wake lock remotely so long runs aren't killed.
24/7 supervisor Optional watchdog auto-restarts the gateway if it ever dies, and survives reboots of the app.
Crash reports The app pushes its crash dumps here (~/.hermes/mobile-logs/diag/) so issues are diagnosable without cables.
Swarm-ready Turns started with the app's Swarm toggle carry their own orchestration directives — no extra server setup.

Nothing is re-implemented: STT/TTS reuse Hermes Agent's own provider chain, sessions/models are read from the agent's API. The plugin adds routes, not forks.

Install

Download the latest release → (every release ships a pure-Python py3-none-any wheel + sdist with SHA256SUMS checksums, built and version-verified by CI)

Into the same Python environment your Hermes Agent runs in (its venv):

pip install git+https://github.com/tawaresachin/hermes-mobile-plugin@v0.0.31
# or from the release page: pip install hermes_mobile_plugin-<ver>-py3-none-any.whl
hermes-mobile-plugin install      # registers plugin + generates the QR

The plugin is pure Python — the one wheel runs unchanged on Windows, macOS, Linux and Termux (native deps resolve per-OS from PyPI at install time). Not on PyPI; GitHub Releases is the release channel, which matches how Hermes Agent itself updates from git.

install copies the plugin into the Hermes home your agent actually resolves (~/.hermes on Linux/Termux, XDG dirs on macOS, %LOCALAPPDATA%\hermes on Windows) and (re)starts the gateway. Then grab the Hermes Mobile APK, open Settings → Connect with QR, and scan. LAN, Tailscale, or any tunnel — the QR carries the address your phone can actually reach.

What install sets up automatically

hermes-mobile-plugin install is zero-manual: every prerequisite is detected and fixed in place, and nothing in the user's data is ever clobbered.

Step What it does
Validates config Surfaces warnings (bad port type, short key) without blocking.
Seeds the API key If platforms.api_server.extra.key / API_SERVER_KEY in ~/.hermes/.env are missing or < 16 chars, a secrets.token_urlsafe(48) key is generated and written to both (config with a .bak backup, .env line replaced/appended, 0600). A strong existing key is kept; a weak line on one side is replaced with the strong one from the other side.
Deploys the plugin files Into the Hermes plugins dir, replacing stale copies.
Installs into the gateway's runtime env On hermes-bootstrap hosts (Termux/proot) the gateway runs 3rd-party packages from an isolated venv under ~/.hermes/installs/…/venv, not the toolchain interpreter — the install detects it (running-gateway pidfile → /proc/<pid>/exe → in-process sys.path → newest-mtime scan) and pip installs the plugin into it (ensurepip first if the venv has no pip). No isolated envs → a one-line notice, install continues.
Generates the QR With the (now guaranteed) key baked in; URL/port follow the host's real settings.
Supervises the gateway The 24/7 watchdog is ensured before any restart: a running gateway that is unhealthy is SIGTERM'd so the watchdog respawns it with the new config; a healthy one is left alone. The install then waits up to 60 s for /health on the resolved port and regenerates the QR.

Port precedence everywhere (status, watchdog, QR): platforms.api_server.extra.port → API_SERVER_PORT env → 8642.

CLI

hermes-mobile-plugin install      # set up + show QR
hermes-mobile-plugin qr           # regenerate the QR (--no-browser)
hermes-mobile-plugin status       # supervisor + gateway health
hermes-mobile-plugin supervisor --start|--stop|—daemon 24/7 watchdog

HTTP routes (all Bearer-key protected)

Mounted on the api_server platform; the mobile app is the client.

Route Purpose
POST /api/audio/transcribe · POST /api/audio/speak STT / TTS
POST /api/audio/upload · GET /api/audio/download/{sid}/{name} attachments both ways
GET /api/mobile/file fetch agent-created files for MEDIA cards
GET /api/mobile/commands · POST /api/mobile/command/resolve slash-command menu
GET /api/mobile/context-usage · GET /api/mobile/context-window context meter
GET /api/mobile/update/check · POST /update/apply · GET /update/version server self-update
GET /api/system/status · POST /api/system/awake host status, keep-awake
POST /api/diag/log · GET /api/audio/health crash reports, liveness

Cross-platform

Runs wherever Hermes Agent runs — Windows, macOS, Linux, Termux/Android — with per-platform handling for process detachment, single-instance locks, launcher lookup (hermes.exe included), and keep-awake (termux-wake-lock / caffeine / powershell), degrading honestly when a mechanism doesn't exist. 53 tests cover the platform seams and the scripted-install paths.

Termux note: the shell installer skips pip there (it can trigger NDK toolchain builds); Hermes Agent's own Termux environment must provide pyyaml, qrcode and aiohttp — the standard agent install does.

Development

git clone https://github.com/tawaresachin/hermes-mobile-plugin.git
cd hermes-mobile-plugin
pip install -e ".[dev]"
PYTHONPATH=src pytest            # 53 tests

CI (.github/workflows/ci.yml) runs the suite on ubuntu/macos/windows on every push, plus sandboxed end-to-end dry-runs of install.sh (Linux + macOS, including the Termux skip-pip path) and install.bat (Windows, fake venv + redirected home). Version tags additionally build the wheel, verify the bundled manifest matches the tag, and attach it to the release.

Releases are tagged v<version>; plugin.yaml is the single source of the version string (PLUGIN_VERSION derives from it — packaging metadata can't drift).

License

MIT © 2026 Sachin Taware

Metadata

Release files for hermes-mobile-plugin 0.0.31

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hermes-mobile-plugin 0.0.31
File Size Uploaded
hermes_mobile_plugin-0.0.31.tar.gz 84.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hermes-mobile-plugin 0.0.31
File Interpreter ABI Platform
hermes_mobile_plugin-0.0.31-py3-none-any.whl Python 3 none any Details

Total release size: 158.8 kB

Release files / hermes_mobile_plugin-0.0.31.tar.gz

Download URL hermes_mobile_plugin-0.0.31.tar.gz
Size 84.8 kB
Tags Source
SHA-256 checksum
How to use checksums
280907af6b4000a561175caa4e2e429d473fe390a4a55a19d08f66d754930bca
BLAKE2b-256 checksum
How to use checksums
6bd45f915fa859adbfc0c3846122d8240b273ec73e06157c6fdec445520c35cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Release files / hermes_mobile_plugin-0.0.31-py3-none-any.whl

Download URL hermes_mobile_plugin-0.0.31-py3-none-any.whl
Size 74.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4b06bb963d52e8f76db862a671bb72fde0c91526ec1e3053fcf69c8092fd5307
BLAKE2b-256 checksum
How to use checksums
186f265061e827319ff69436f23f3a3a95ba7a36c29805616dcfbc4d75976b1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Release history Release notifications | RSS feed

0.0.36

2 release files

0.0.35

2 release files

0.0.34

2 release files

0.0.33

2 release files

0.0.32

2 release files

This release

0.0.31 This release

2 release files

0.0.28

2 release files

0.0.26

2 release files

0.0.24

2 release files

0.0.23

2 release files

0.0.22

2 release files

0.0.21

2 release files

0.0.20

2 release files

0.0.19

2 release files

0.0.18

2 release files

0.0.17

2 release files

0.0.16

2 release files

0.0.15

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page