mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-18 04:41:56 +00:00
* docs: deep audit — fix stale config keys, missing commands, and registry drift Cross-checked ~80 high-impact docs pages (getting-started, reference, top-level user-guide, user-guide/features) against the live registries: hermes_cli/commands.py COMMAND_REGISTRY (slash commands) hermes_cli/auth.py PROVIDER_REGISTRY (providers) hermes_cli/config.py DEFAULT_CONFIG (config keys) toolsets.py TOOLSETS (toolsets) tools/registry.py get_all_tool_names() (tools) python -m hermes_cli.main <subcmd> --help (CLI args) reference/ - cli-commands.md: drop duplicate hermes fallback row + duplicate section, add stepfun/lmstudio to --provider enum, expand auth/mcp/curator subcommand lists to match --help output (status/logout/spotify, login, archive/prune/ list-archived). - slash-commands.md: add missing /sessions and /reload-skills entries + correct the cross-platform Notes line. - tools-reference.md: drop bogus '68 tools' headline, drop fictional 'browser-cdp toolset' (these tools live in 'browser' and are runtime-gated), add missing 'kanban' and 'video' toolset sections, fix MCP example to use the real mcp_<server>_<tool> prefix. - toolsets-reference.md: list browser_cdp/browser_dialog inside the 'browser' row, add missing 'kanban' and 'video' toolset rows, drop the stale '38 tools' count for hermes-cli. - profile-commands.md: add missing install/update/info subcommands, document fish completion. - environment-variables.md: dedupe GMI_API_KEY/GMI_BASE_URL rows (kept the one with the correct gmi-serving.com default). - faq.md: Anthropic/Google/OpenAI examples — direct providers exist (not just via OpenRouter), refresh the OpenAI model list. getting-started/ - installation.md: PortableGit (not MinGit) is what the Windows installer fetches; document the 32-bit MinGit fallback. - installation.md / termux.md: installer prefers .[termux-all] then falls back to .[termux]. - nix-setup.md: Python 3.12 (not 3.11), Node.js 22 (not 20); fix invalid 'nix flake update --flake' invocation. - updating.md: 'hermes backup restore --state pre-update' doesn't exist — point at the snapshot/quick-snapshot flow; correct config key 'updates.pre_update_backup' (was 'update.backup'). user-guide/ - configuration.md: api_max_retries default 3 (not 2); display.runtime_footer is the real key (not display.runtime_metadata_footer); checkpoints defaults enabled=false / max_snapshots=20 (not true / 50). - configuring-models.md: 'hermes model list' / 'hermes model set ...' don't exist — hermes model is interactive only. - tui.md: busy_indicator -> tui_status_indicator with values kaomoji|emoji|unicode|ascii (not kawaii|minimal|dots|wings|none). - security.md: SSH backend keys (TERMINAL_SSH_HOST/USER/KEY) live in .env, not config.yaml. - windows-wsl-quickstart.md: there is no 'hermes api' subcommand — the OpenAI-compatible API server runs inside hermes gateway. user-guide/features/ - computer-use.md: approvals.mode (not security.approval_level); fix broken ./browser-use.md link to ./browser.md. - fallback-providers.md: top-level fallback_providers (not model.fallback_providers); the picker is subcommand-based, not modal. - api-server.md: API_SERVER_* are env vars — write to per-profile .env, not 'hermes config set' which targets YAML. - web-search.md: drop web_crawl as a registered tool (it isn't); deep-crawl modes are exposed through web_extract. - kanban.md: failure_limit default is 2, not '~5'. - plugins.md: drop hard-coded '33 providers' count. - honcho.md: fix unclosed quote in echo HONCHO_API_KEY snippet; document that 'hermes honcho' subcommand is gated on memory.provider=honcho; reconcile subcommand list with actual --help output. - memory-providers.md: legacy 'hermes honcho setup' redirect documented. Verified via 'npm run build' — site builds cleanly; broken-link count went from 149 to 146 (no regressions, fixed a few in passing). * docs: round 2 audit fixes + regenerate skill catalogs Follow-up to the previous commit on this branch: Round 2 manual fixes: - quickstart.md: KIMI_CODING_API_KEY mentioned alongside KIMI_API_KEY; voice-mode and ACP install commands rewritten — bare 'pip install ...' doesn't work for curl-installed setups (no pip on PATH, not in repo dir); replaced with 'cd ~/.hermes/hermes-agent && uv pip install -e ".[voice]"'. ACP already ships in [all] so the curl install includes it. - cli.md / configuration.md: 'auxiliary.compression.model' shown as 'google/gemini-3-flash-preview' (the doc's own claimed default); actual default is empty (= use main model). Reworded as 'leave empty (default) or pin a cheap model'. - built-in-plugins.md: added the bundled 'kanban/dashboard' plugin row that was missing from the table. Regenerated skill catalogs: - ran website/scripts/generate-skill-docs.py to refresh all 163 per-skill pages and both reference catalogs (skills-catalog.md, optional-skills-catalog.md). This adds the entries that were genuinely missing — productivity/teams-meeting-pipeline (bundled), optional/finance/* (entire category — 7 skills: 3-statement-model, comps-analysis, dcf-model, excel-author, lbo-model, merger-model, pptx-author), creative/hyperframes, creative/kanban-video-orchestrator, devops/watchers, productivity/shop-app, research/searxng-search, apple/macos-computer-use — and rewrites every other per-skill page from the current SKILL.md. Most diffs are tiny (one line of refreshed metadata). Validation: - 'npm run build' succeeded. - Broken-link count moved 146 -> 155 — the +9 are zh-Hans translation shells that lag every newly-added skill page (pre-existing pattern). No regressions on any en/ page.
242 lines
6.4 KiB
Markdown
242 lines
6.4 KiB
Markdown
---
|
|
sidebar_position: 3
|
|
title: "Android / Termux"
|
|
description: "Run Hermes Agent directly on an Android phone with Termux"
|
|
---
|
|
|
|
# Hermes on Android with Termux
|
|
|
|
This is the tested path for running Hermes Agent 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.
|
|
|
|
---
|
|
|
|
## Option 1: One-line installer
|
|
|
|
Hermes now ships a Termux-aware installer path:
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/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
|
|
- `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 --recurse-submodules https://github.com/NousResearch/hermes-agent.git
|
|
cd hermes-agent
|
|
```
|
|
|
|
If you already cloned without submodules:
|
|
|
|
```bash
|
|
git submodule update --init --recursive
|
|
```
|
|
|
|
### 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:
|
|
|
|
```bash
|
|
pkg install nodejs-lts
|
|
npm 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
|