|
Download website/docs/getting-started/termux.md from SaylorTwift/hermes-agent: direct link, hf CLI and curl.
- Browser
- Download file 9.36 kB
-
https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/website/docs/getting-started/termux.md
- Command line
-
hf download hf://SaylorTwift/hermes-agent/website/docs/getting-started/termux.md
-
curl -L -o termux.md https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/website/docs/getting-started/termux.md
9.36 kB
| sidebar_position: 3 | |
| title: "Android / Termux" | |
| description: "Run Hermes Agent directly on an Android phone with Termux" | |
| # Hermes on Android with Termux | |
| :::warning Tier 2 platform | |
| Termux (Android) is a [Tier 2 platform](./platform-support.md#tier-2). The installer script and documentation here are maintained on a best-effort basis only. Commits to `main` may break these packages at any point in time. | |
| ::: | |
| Hermes Agent can run directly on an Android phone through [Termux](https://termux.dev/). | |
| It gives you a working local CLI on the phone, plus the core extras that are currently known to install cleanly on Android. | |
| ## What is supported in the tested path? | |
| The tested Termux bundle installs: | |
| - the Hermes CLI | |
| - cron support | |
| - PTY/background terminal support | |
| - Telegram gateway support (manual / best-effort background runs) | |
| - MCP support | |
| - Honcho memory support | |
| - ACP support | |
| Concretely, it maps to: | |
| ```bash | |
| python -m pip install -e '.[termux]' -c constraints-termux.txt | |
| ``` | |
| ## What is not part of the tested path yet? | |
| A few features still need desktop/server-style dependencies that are not published for Android, or have not been validated on phones yet: | |
| - `.[all]` is not supported on Android today | |
| - the `voice` extra is blocked by `faster-whisper -> ctranslate2`, and `ctranslate2` does not publish Android wheels | |
| - automatic browser / Playwright bootstrap is skipped in the Termux installer | |
| - Docker-based terminal isolation is not available inside Termux | |
| - Android may still suspend Termux background jobs, so gateway persistence is best-effort rather than a normal managed service | |
| That does not stop Hermes from working well as a phone-native CLI agent β it just means the recommended mobile install is intentionally narrower than the desktop/server install. | |
| --- | |
| ## Community-maintained native `pkg` option | |
| :::caution Contributor-operated distribution | |
| This APT repository is **community-maintained by `@adybag14-cyber` and is not an official NousResearch distribution**. NousResearch does not build, sign, host, or audit these packages. Enabling the repository means trusting the contributor-operated repository and its signing key. Termux itself remains a Tier 2 / best-effort platform. | |
| ::: | |
| For users who prefer a native package-manager install rather than building Python/Rust dependencies on the phone, a community-maintained APT repository is available. The repository bootstrap and packaging sources are published in [`adybag14-cyber/termux-python`](https://github.com/adybag14-cyber/termux-python), with the Hermes package build in [`adybag14-cyber/termux-hermes`](https://github.com/adybag14-cyber/termux-hermes). | |
| Install the repository key/source and Hermes with: | |
| ```bash | |
| curl -fsSL https://raw.githubusercontent.com/adybag14-cyber/termux-python/main/scripts/setup_apt_repo.sh | bash | |
| pkg install hermes-agent | |
| ``` | |
| The repository signing-key fingerprint currently documented by the community distribution is: | |
| ```text | |
| EAD24A2124EFA7393A78B7B14699F966313F7A6B | |
| ``` | |
| APT-managed Hermes installs are marked with install method `apt`. Hermes therefore does not run its Git self-updater against package-owned files; use the package manager instead: | |
| ```bash | |
| pkg update | |
| pkg upgrade hermes-agent | |
| ``` | |
| Packaging/repository/signing problems for this option should be reported to the community packaging repositories above. Hermes runtime bugs can still be reported here, keeping in mind that Android/Termux support is best-effort. | |
| --- | |
| ## Option 1: One-line installer | |
| Hermes now ships a Termux-aware installer path: | |
| ```bash | |
| curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash | |
| ``` | |
| On Termux, the installer automatically: | |
| - uses `pkg` for system packages | |
| - creates the venv with `python -m venv` | |
| - attempts the broad `.[termux-all]` extra first and falls back to the smaller `.[termux]` extra (then a base install) β the curl installer matches this order automatically | |
| - links `hermes` into `$PREFIX/bin` so it stays on your Termux PATH | |
| - skips the untested browser / WhatsApp bootstrap | |
| If you want the explicit commands or need to debug a failed install, use the manual path below. | |
| --- | |
| ## Option 2: Manual install (fully explicit) | |
| ### 1. Update Termux and install system packages | |
| ```bash | |
| pkg update | |
| pkg install -y git python clang rust make pkg-config libffi openssl nodejs ripgrep ffmpeg | |
| ``` | |
| Why these packages? | |
| - `python` β runtime + venv support | |
| :::warning Supported Python range | |
| Hermes requires **Python >=3.11,<3.14**. Current Termux ships `python` | |
| 3.14.x, which is outside that range β the installer detects this, and will | |
| automatically try the [Termux User Repository (TUR)](https://github.com/termux-user-repository/tur) | |
| for a supported interpreter. For a manual install, get one yourself: | |
| ```bash | |
| pkg install tur-repo | |
| pkg install python3.13 | |
| ``` | |
| Then use `python3.13` in place of `python` in the commands below | |
| (e.g. `python3.13 -m venv venv`). | |
| ::: | |
| - `git` β clone/update the repo | |
| - `clang`, `rust`, `make`, `pkg-config`, `libffi`, `openssl` β needed to build a few Python dependencies on Android | |
| - `nodejs` β optional Node runtime for experiments beyond the tested core path | |
| - `ripgrep` β fast file search | |
| - `ffmpeg` β media / TTS conversions | |
| ### 2. Clone Hermes | |
| ```bash | |
| git clone https://github.com/NousResearch/hermes-agent.git | |
| cd hermes-agent | |
| ``` | |
| ### 3. Create a virtual environment | |
| ```bash | |
| python -m venv venv | |
| source venv/bin/activate | |
| export ANDROID_API_LEVEL="$(getprop ro.build.version.sdk)" | |
| python -m pip install --upgrade pip setuptools wheel | |
| ``` | |
| `ANDROID_API_LEVEL` is important for Rust / maturin-based packages such as `jiter`. | |
| ### 4. Install the tested Termux bundle | |
| ```bash | |
| python -m pip install -e '.[termux]' -c constraints-termux.txt | |
| ``` | |
| If you only want the minimal core agent, this also works: | |
| ```bash | |
| python -m pip install -e '.' -c constraints-termux.txt | |
| ``` | |
| ### 5. Put `hermes` on your Termux PATH | |
| ```bash | |
| ln -sf "$PWD/venv/bin/hermes" "$PREFIX/bin/hermes" | |
| ``` | |
| `$PREFIX/bin` is already on PATH in Termux, so this makes the `hermes` command persist across new shells without re-activating the venv every time. | |
| ### 6. Verify the install | |
| ```bash | |
| hermes --version | |
| hermes doctor | |
| ``` | |
| ### 7. Start Hermes | |
| ```bash | |
| hermes | |
| ``` | |
| --- | |
| ## Recommended follow-up setup | |
| ### Configure a model | |
| ```bash | |
| hermes model | |
| ``` | |
| Or set keys directly in `~/.hermes/.env`. | |
| ### Re-run the full interactive setup wizard later | |
| ```bash | |
| hermes setup | |
| ``` | |
| ### Install optional Node dependencies manually | |
| The tested Termux path skips Node/browser bootstrap on purpose. If you want to experiment with browser tooling later, what you need depends on which backend you use: | |
| - **Cloud browser providers** (Browserbase, Browser Use, Firecrawl) host their own Chromium, so Node.js alone is enough β `agent-browser` resolves lazily via `npx agent-browser` on first use: | |
| ```bash | |
| pkg install nodejs-lts | |
| ``` | |
| - **Local browser automation** on Termux needs a real `agent-browser` install β the bare npx fallback is deliberately rejected in local mode as too fragile to advertise as ready: | |
| ```bash | |
| pkg install nodejs-lts | |
| npm install -g agent-browser && agent-browser install | |
| ``` | |
| The browser tool automatically includes Termux directories (`/data/data/com.termux/files/usr/bin`) in its PATH search, so `agent-browser` and `npx` are discovered without any extra PATH configuration. | |
| Treat browser / WhatsApp tooling on Android as experimental until documented otherwise. | |
| --- | |
| ## Troubleshooting | |
| ### `No solution found` when installing `.[all]` | |
| Use the tested Termux bundle instead: | |
| ```bash | |
| python -m pip install -e '.[termux]' -c constraints-termux.txt | |
| ``` | |
| The blocker is currently the `voice` extra: | |
| - `voice` pulls `faster-whisper` | |
| - `faster-whisper` depends on `ctranslate2` | |
| - `ctranslate2` does not publish Android wheels | |
| ### `uv pip install` fails on Android | |
| Use the Termux path with the stdlib venv + `pip` instead: | |
| ```bash | |
| python -m venv venv | |
| source venv/bin/activate | |
| export ANDROID_API_LEVEL="$(getprop ro.build.version.sdk)" | |
| python -m pip install --upgrade pip setuptools wheel | |
| python -m pip install -e '.[termux]' -c constraints-termux.txt | |
| ``` | |
| ### `jiter` / `maturin` complains about `ANDROID_API_LEVEL` | |
| Set the API level explicitly before installing: | |
| ```bash | |
| export ANDROID_API_LEVEL="$(getprop ro.build.version.sdk)" | |
| python -m pip install -e '.[termux]' -c constraints-termux.txt | |
| ``` | |
| ### `hermes doctor` says ripgrep or Node is missing | |
| Install them with Termux packages: | |
| ```bash | |
| pkg install ripgrep nodejs | |
| ``` | |
| ### Build failures while installing Python packages | |
| Make sure the build toolchain is installed: | |
| ```bash | |
| pkg install clang rust make pkg-config libffi openssl | |
| ``` | |
| Then retry: | |
| ```bash | |
| python -m pip install -e '.[termux]' -c constraints-termux.txt | |
| ``` | |
| --- | |
| ## Known limitations on phones | |
| - Docker backend is unavailable | |
| - local voice transcription via `faster-whisper` is unavailable in the tested path | |
| - browser automation setup is intentionally skipped by the installer | |
| - some optional extras may work, but only `.[termux]` and `.[termux-all]` are currently documented as the tested Android bundles | |
| If you hit a new Android-specific issue, please open a GitHub issue with: | |
| - your Android version | |
| - `termux-info` | |
| - `python --version` | |
| - `hermes doctor` | |
| - the exact install command and full error output | |