Car Voice for Hermes

Hermes and the bridge on the phone itself

Experimental, not tested on hardware. Nothing on this page has been tried on a real phone. The Hermes Termux page currently says the Termux package does not work and a fix is in progress. Use the normal setup unless you want to experiment.

The idea: Hermes Agent and the Car Voice bridge both run in Termux on the same Android phone as the app, and the app connects to http://127.0.0.1:8787. Plain http is allowed only for 127.0.0.1 and localhost; that traffic never leaves the phone.

What the app does for you

Steps

  1. Hermes. Install it with the Termux instructions in the Hermes documentation, switch on the API server as in setup step 1 and run the gateway the way that page describes for Termux.
  2. The bridge. In another Termux session, with Termux’ own Python (3.11 or newer):

    pkg install python git
    git clone https://github.com/Vantix-Wealth-Labs/hermes-car-voice.git ~/car-voice
    cd ~/car-voice/backend
    python -m venv .venv
    .venv/bin/pip install edge-tts==7.3.1 segno==1.6.6
    

    This installs only what an OpenAI-compatible speech service needs. Local Whisper (faster-whisper, which needs native CTranslate2 and numpy builds) is not expected to install on Android and was not tried. The bridge only loads it with HERMES_BRIDGE_STT_PROVIDER=local. Whether edge-tts and its dependencies install in Termux was not tried either.

  3. Configuration, e.g. in ~/car-voice/bridge.env:

    HERMES_BRIDGE_HOST=127.0.0.1
    HERMES_BRIDGE_PORT=8787
    HERMES_BRIDGE_DATA_DIR=/data/data/com.termux/files/home/car-voice/data
    HERMES_BRIDGE_TOKENS_FILE=/data/data/com.termux/files/home/car-voice/data/tokens.json
    HERMES_API_BASE_URL=http://127.0.0.1:8642
    HERMES_API_ALLOW_INTERNAL_HTTP=true
    HERMES_API_KEY=<the API_SERVER_KEY of Hermes>
    HERMES_BRIDGE_STT_PROVIDER=openai
    HERMES_BRIDGE_STT_API_BASE=https://api.groq.com/openai/v1
    HERMES_BRIDGE_STT_API_KEY=<key>
    

    Create the data directory (mkdir -p ~/car-voice/data). This file has no JSON values, so set -a; . ~/car-voice/bridge.env; set +a loads it into the shell.

  4. Start the bridge: .venv/bin/python -m hermes_voice_bridge serve.
  5. Pair: .venv/bin/python -m hermes_voice_bridge pair --origin http://127.0.0.1:8787. You cannot scan a QR code on the screen of the phone that shows it, so copy the printed token instead. In Car Voice, tap “Use this bridge” (or type http://127.0.0.1:8787), paste the token and tap Save and verify.

Things to know