# SommoHermes Assistant — installation

Version **0.1.4-assistant.1**, distributed directly as an experimental APK.
This is a separate app from standard SommoHermes: **SommoHermes Assistant**, package
`cc.sommomi.sommohermes.assistant`. Both can coexist with separate data and settings.
This version is not distributed on Google Play. It is signed with the Assistant's
local development key, distinct from the standard app's Play signature, and is not
debuggable. It does not replace the standard APK.

## 1. Install on your phone without a cable

1. Download `sommohermes-assistant-0.1.4-assistant.1.apk` from the SommoHermes
   Assistant page and open it on an Android phone (Android 8 or later).
2. If Android asks, allow the browser or Files app used for the download to install
   apps from this source, then confirm installation.
3. Open **SommoHermes Assistant**. Configure your Hermes server using its normal
   HTTPS address and authenticated login, then select the intended profile.
   Settings from the standard app are not imported automatically.

To update an existing Assistant installation, open an APK with the same signature.
Do not uninstall the app: uninstalling erases its data. An optional ADB installer is
included in the complete setup ZIP for users who prefer a computer:

```sh
sh install-android.sh
# With more than one authorized device:
sh install-android.sh --serial SERIAL
# If adb is not on PATH:
sh install-android.sh --adb /path/to/platform-tools/adb
```

The computer needs Python 3 and Android SDK Platform-Tools. The script verifies
the APK against `CHECKSUMS.sha256`, selects an authorized device and uses only
`adb install -r`, preserving app data. It does not grant Android permissions
automatically. Direct phone installation needs neither ADB nor USB.

## 2. Install the plugin on your Hermes server

Your server administrator performs this step once. It requires Hermes with a
compatible authenticated dashboard and plugin support, `hermes` on `PATH`, and
Python 3. The legacy `hermes-webui` server does not provide this integration.

Extract the complete setup ZIP **on the NAS/server**, then open a terminal in the
extracted directory:

```sh
# Main profile:
sh install-server.sh

# Or install only for the secondary mauro profile:
sh install-server.sh --home "$HOME/.hermes/profiles/mauro"
```

The wrapper runs the included Python installer. Its equivalent command is:

```sh
python3 hermes-plugin/install.py --home "$HOME/.hermes/profiles/mauro"
```

Install the plugin in every profile that will use the phone. Enabling it in the
main profile does not enable it in `mauro`. Add `--replace` to overwrite files in
this plugin's existing copy; additional files in that directory remain. Use
`--skip-enable` to copy files only. The installer neither changes chats nor
restarts services.

Restart your deployment's dashboard and gateway to load the plugin and its routes.
A restart can interrupt active operations, so do it while the server is idle.
On **SommoNas**, the managed services are:

```sh
systemctl --user restart hermex-dashboard.service hermes-gateway.service
```

These service names are specific to SommoNas. On other servers, use the service
manager that starts your Hermes deployment. In a new chat under the intended
profile, confirm that `tools.show` includes `phone_browser` and the plugin is
enabled.

**Secondary-profile compatibility:** SommoNas has a server-source correction for
a `tools.show` profile-scoping issue in Hermes 0.22.6. Other affected installations
can show an enabled plugin while omitting its tool from the profile's catalog;
they also need a compatible server fix. Restarting only the gateway or reinstalling
the APK does not fix this issue. On SommoNas, the correction was loaded by restarting
the dashboard process that handles the app's requests.
The bundle includes an optional, checked correction for that exact commit; see
[compat/README.md](compat/README.md). The main installer does not apply it
automatically.

The phone answers requests through its normal HTTPS connection to Hermes. You do
not need another router port, an MCP daemon, or a connected cable.

## 3. Enable the Assistant once

1. In a chat, open **Conversation tools → Phone browser**.
2. Open **Accessibility settings**, enable **SommoHermes Assistant**, and return
   to the app. Some Android versions first require **App info → ⋮ menu → Allow
   restricted settings** for a downloaded APK; the wording varies by manufacturer.
3. Allow notifications when prompted, then select **Allow for this server**.
   The server must require authentication and expose its installation identity for
   this button to be available.
4. Send a request from the app, such as “Open the website I specify in my phone's
   browser and wait.” Keep the phone unlocked.

Consent is stored encrypted for that server and your identity, including new chats,
until you revoke it. Every explicit Send while the app is foreground can start a
new control run. Browser navigation, clicks, typing and form submission happen
automatically without confirmation for each browser action. Agent questions remain
visible and need your answer.

## 4. Use the compact bar

A small draggable capsule with a microphone and audio bars appears in the default
browser. Tap the bars to expand or collapse the compact question/reply card.
Tap the microphone to answer by voice; Android asks for microphone permission on
first use. The bars move during capture, and capture starts only when you tap.
The pencil opens text input, and the chat icon returns to the app.

Voice requires Android 12 or later and an available **on-device** speech-recognition
service with the language downloaded. If unavailable, use the pencil: the app does
not fall back to cloud transcription. The recognized text is sent to your Hermes
chat. Complex questions, secrets and approvals are completed in the main app.

Short sounds mark the beginning of an interaction and an incoming question. They
respect silent/vibrate mode, Do Not Disturb and system volume.

Press **Stop** to end browser control. Locking the screen, changing chats/servers,
disconnecting or reaching the 15-minute limit also ends the active run; saved
consent remains. To revoke it, open **Phone browser → Revoke server permission**.
You can also disable the Accessibility service in Android settings.

## Data and limitations

The Accessibility service reads visible web content and operates in the default
browser. Page content and results can reach your Hermes server and its model
provider. Password fields are excluded: complete sign-in and verification codes
yourself. Compatibility depends on the browser, website and Android; not every
page is guaranteed to work.

The ZIP includes the APK, scripts, plugin and guides, without credentials or server
configuration. `CHECKSUMS.sha256` lists file hashes. Checksums for the separately
downloadable ZIP and APK are provided alongside the website downloads.
