Hermes Android is an Android client for Hermes Agent that lets you chat with your Hermes sessions from a phone or tablet over local Wi-Fi, a private Tailscale network, or an HTTPS reverse proxy. It connects to the Hermes Gateway API Server (port 8642 by default) for sessions and streaming chat, and to the Hermes dashboard API (port 9119 by default) for the Memory, Cron Jobs, Skills, and Settings screens.
Version 2.0 merges a community Remote Gateway edition: text, images, and files share one Desktop Gateway JSON-RPC WebSocket session instead of split REST and WebSocket paths, and the app handles gateway events natively — approvals, sudo and secret requests, clarifications, reasoning, tool activity, background results, reviews, and subagent status. Completed gateway responses survive Android process kills, and notifications fire when a turn finishes while the app is in the background.
Connections are configured per host with an API key, optional reverse-proxy path prefixes for the gateway and dashboard, a configurable dashboard port, and dashboard credentials for basic-auth or proxied deployments. Credentials are stored with Android platform key material, and the app ships with 113+ Flutter tests plus a synthetic gateway contract suite.
Features
- Streaming chat: tokens stream in real time from the OpenAI-compatible /v1/chat/completions endpoint with markdown rendering
- Per-chat model and thinking effort: choose a model and reasoning level for one conversation without changing the profile default
- Multi-attachment uploads: up to 10 attachments per draft (64 MiB total, 16 MiB per generic file) with metadata-sanitized JPEG, PNG, and WebP images
- Conversation actions: copy, select, read aloud, stop, edit and resend, regenerate, export, search, rename, branch, and delete
- Voice dictation: stage spoken input before sending, with optional text-to-speech replies
- Dashboard screens: view and change the model, manage cron jobs (list, trigger, pause, create, edit, delete), browse skills, and inspect memory
- Dashboard auth modes: open (--insecure), password-protected via /auth/password-login, or proxied with upstream-injected auth
- Reverse-proxy prefixes: separate path prefixes for gateway and dashboard routes, applied to validation, session browsing, and chat
- Durable turn recovery: completed responses persist across Android lifecycle events, with reconnect and session resume
- Background notifications: Android notifications on turn completion, cleared on return to the app
- Verbose mode: show raw message metadata such as role, tool calls, and timestamps
- Themes and accessibility: dark, light, and system themes, persistent text-size setting, and phone and tablet layouts
