🤖HermesBlog
Hermes Feature Guides · Part 118/9/2026

Hermes on Your Android Phone? Yes, It’s Possible!

Scheduled Tasks (Cron) — Let AI Work Automatically — easy-to-understand guide based on official docs

Cron jobs: the assistant’s schedule

Hermes on Your Android Phone? Yes, It’s Possible!

So you want to run Hermes Agent on your Android phone? Good news: it’s totally doable, thanks to Termux. Termux is a terminal emulator for Android that lets you run a Linux-like environment right on your device. With it, you can get a working Hermes CLI running locally on your phone, plus a bunch of core extras that install cleanly on Android.

Before we dive in, a quick heads-up: Android/Termux is what we call a Tier 2 platform. That means the installer and docs here are maintained on a best-effort basis. Things might break occasionally, but for most use cases, it works great.

:::danger Termux is currently broken The Termux package does not work right now. A fix is in progress and will ship soon. Until then, the steps below may fail or install a package that does not run. :::

What Works on Android?

The tested Termux bundle gives you:

  • The Hermes CLI
  • Cron support (scheduled tasks)
  • PTY/background terminal support
  • Telegram gateway support (manual, best-effort background runs)
  • MCP support
  • Honcho memory support
  • ACP support

In plain terms, that means you can run Hermes as a phone-native CLI agent and do most of the core stuff you’d expect.

What Doesn’t Work (Yet)

A few things still need desktop/server-style dependencies that aren’t available for Android:

  • The full .[all] extra is not supported
  • Voice features are blocked because ctranslate2 doesn’t publish Android wheels
  • Automatic browser/Playwright setup is skipped
  • Docker-based terminal isolation isn’t available
  • Android may suspend background jobs, so gateway persistence is best-effort

Don’t let that discourage you though. Hermes works really well as a phone-native CLI agent — it’s just intentionally narrower than the desktop install.


Option 1: One-Line Installer (Easiest)

Hermes now ships a Termux-aware installer that handles everything for you:

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

On Termux, the installer automatically:

  • Uses pkg for system packages
  • Creates a virtual environment with python -m venv
  • Tries the broad .[termux-all] extra first, then falls back to .[termux]
  • Links hermes into $PREFIX/bin so it stays on your PATH
  • Skips the untested browser/WhatsApp bootstrap

If you want more control or need to debug something, use the manual path below.


Option 2: Manual Install (Fully Explicit)

1. Update Termux and install system packages

pkg update
pkg install -y git python clang rust make pkg-config libffi openssl nodejs ripgrep ffmpeg

Here’s why you need these:

  • 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) for a supported interpreter. For a manual install, get one yourself:

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 Python dependencies on Android
  • nodejs — optional, for experiments
  • ripgrep — fast file search
  • ffmpeg — media/TTS conversions

2. Clone Hermes

git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent

3. Create a virtual environment

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

The ANDROID_API_LEVEL line is important for Rust/maturin-based packages like jiter.

4. Install the tested Termux bundle

python -m pip install -e '.[termux]' -c constraints-termux.txt

Want just the minimal core agent? This works too:

python -m pip install -e '.' -c constraints-termux.txt

5. Put hermes on your PATH

ln -sf "$PWD/venv/bin/hermes" "$PREFIX/bin/hermes"

This makes the hermes command available in every new shell without re-activating the venv.

6. Verify the install

hermes --version
hermes doctor

7. Start Hermes

hermes

Official APT Package (stable and canary channels)

Hermes now publishes an official APT repository for Termux, with two channels under https://hermes-assets.nousresearch.com/releases/termux/<channel>:

Channel APT suite Contents
stable hermes-stable Tagged vMAJOR.MINOR.PATCH releases that passed the stable release gate
canary hermes-canary Prerelease builds from canary tags; versions carry ~canary.<timestamp>

The steps below use stable. To follow prereleases, replace stable with canary and hermes-stable with hermes-canary in steps 2 and 4. Both channels are signed with the same key.

The package runs on aarch64 (arm64-v8a) Android devices and includes Python, Node.js, npm, uv, ripgrep, ffmpeg, and their runtime libraries. CI builds the native Python wheels and the TUI before it creates the package, so your device does not compile core dependencies or assemble its base Python environment during installation. The package uses Python 3.14 with the bionic interpreter pin; it does not require the same patch version as desktop CPython. The wheel closure is core plus acp, not all desktop extras.

Use the standard Termux application. The package requires its standard prefix, /data/data/com.termux/files/usr. Other architectures and renamed Termux application packages are not supported. The wheels target Android API 24 (android_24_arm64_v8a). Do not use the desktop/server install.sh or a glibc Linux archive on this target.

  1. Install the tools for repository setup:

    pkg install curl gnupg
  2. Download the public key:

    mkdir -p "$PREFIX/etc/apt/keyrings"
    curl -fsSL \
      https://hermes-assets.nousresearch.com/releases/termux/stable/key.asc \
      -o "$PREFIX/etc/apt/keyrings/hermes-agent.asc"
  3. Verify its primary fingerprint:

    gpg --show-keys --with-fingerprint "$PREFIX/etc/apt/keyrings/hermes-agent.asc"

    The repository key fingerprint is:

    C572 B5FD D1A2 9CCF A9A9 12B6 840B 0848 E139 156D

    If the fingerprint differs, stop. Do not disable signature verification.

  4. Add the repository:

    printf '%s\n' \
      "deb [signed-by=$PREFIX/etc/apt/keyrings/hermes-agent.asc] https://hermes-assets.nousresearch.com/releases/termux/stable hermes-stable main" \
      > "$PREFIX/etc/apt/sources.list.d/hermes-agent.list"
  5. Install Hermes:

    pkg update
    pkg install hermes-agent
  6. Configure a provider, then start the TUI:

    hermes setup
    hermes --tui

The hermes, hermes-agent, and hermes-acp commands use the packaged runtimes. They do not require Termux’s python or nodejs packages.

Package files live in $PREFIX/lib/hermes-agent/, command symlinks in $PREFIX/bin/hermes, $PREFIX/bin/hermes-agent, and $PREFIX/bin/hermes-acp, and configuration and user data in ~/.hermes/ (or the selected HERMES_HOME).

Update through APT:

pkg update
pkg upgrade hermes-agent

hermes update refuses to modify an APT-owned installation. It prints the package-manager command instead. Canary versions contain ~canary.<timestamp> and sort before the corresponding stable version. Each suite only lists its own channel’s packages; to move between channels, edit the channel path and suite in hermes-agent.list, then pkg update && pkg upgrade hermes-agent.

This APT installation does not use systemd, launchd, or Windows Scheduled Tasks. Run the gateway in a Termux session:

hermes gateway run

For a background process:

mkdir -p "${HERMES_HOME:-$HOME/.hermes}/logs"
nohup hermes gateway run >> "${HERMES_HOME:-$HOME/.hermes}/logs/gateway.log" 2>&1 &

:::warning Android process limits Android can suspend or terminate background Termux processes. Battery optimization exemptions and termux-wake-lock can help, but do not guarantee persistent operation. :::

The package does not include the nemo-relay exporter, Electron, local Chromium, or desktop computer-use tools, and a local Docker daemon is not part of the Termux environment. Phone-native Termux:API microphone and clipboard adapters are not provided by this package path. Python 3.14 on this target reports sys.platform == "android", so a dependency or skill gated only to linux is not automatically available on Android.

To uninstall:

pkg uninstall hermes-agent

APT removes the package and its command symlinks. It preserves your configuration, sessions, skills, and memories.


Community-Maintained APT Option

Prefer a native package-manager install? A community-maintained APT repository is available. Note: this is not an official NousResearch distribution — it’s operated by @adybag14-cyber. Use it at your own trust level.

Install it with:

curl -fsSL https://raw.githubusercontent.com/adybag14-cyber/termux-python/main/scripts/setup_apt_repo.sh | bash
pkg install hermes-agent

The signing key fingerprint is:

EAD24A2124EFA7393A78B7B14699F966313F7A6B

With APT-managed installs, use the package manager to update:

pkg update
pkg upgrade hermes-agent

Configure a model

hermes model

Or set keys directly in ~/.hermes/.env.

Re-run the full setup wizard later

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:

    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:

    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:

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:

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:

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:

pkg install ripgrep nodejs

Build failures while installing Python packages

Make sure the build toolchain is installed:

pkg install clang rust make pkg-config libffi openssl

Then retry:

python -m pip install -e '.[termux]' -c constraints-termux.txt

Package not found, signature errors, or a missing command (APT installs)

  • Package not found: verify the repository entry, then run pkg update.
  • Signature error: verify the public key fingerprint. Do not use an unsigned repository or bypass the error.
  • Missing command: verify that $PREFIX/bin is on PATH, or reinstall the package.
  • Missing library or TUI bundle: report hermes --version and the complete error. The core package must not require a local rebuild.
  • Gateway stops with the screen off: review Android’s battery and background-process limits.

For general diagnostics, run hermes doctor.


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

Final Thoughts

Running Hermes on your Android phone is a great way to have a capable CLI agent in your pocket. Start with the one-line installer, and if you hit any snags, the manual path gives you full visibility into what’s happening. Happy hacking!


Keep reading: Hermes heartbeat — For polling a task every few minutes inside one session, a Hermes heartbeat is the lighter fit.

📖 Official Docs

This article is based on the official Hermes Agent documentation:Official docs › getting-started/termux