Files
hermes-mobile/docs/BLOCKERS.md
T
2026-07-24 15:12:59 +00:00

5.1 KiB

Hermes Mobile Blockers

R1 — Emulator/device accessibility matrix

R1 cannot be marked complete from the current sandbox. On 2026-07-24, the required recovery preflight passed immediately before this run, but a direct writable-cache Gradle retry was blocked before project execution because the sandbox prohibits Gradle's TCP control socket (java.net.SocketException: Operation not permitted). ADB 37.0.0 is installed at /opt/android-sdk/platform-tools/adb, but its daemon cannot create the local smart-socket listener or netlink socket (Operation not permitted). No emulator executable, AVD, /dev/kvm, USB device bus, or running target is available. No successful attached-target query, physical-device walkthrough, emulator walkthrough, or device evidence was possible.

Required unblock evidence: run the required preflight and focused Android tests in an environment that permits them, then record the small-phone, normal-phone, and tablet checks in docs/ROADMAP.md across portrait/landscape, font scaling, TalkBack, light/dark contrast, touch targets, reduced motion, and IME behavior. Source review, git diff --check, and direct execution of cached test classes are supporting evidence only and do not complete R1.

R2 — Clean beta build/install verification

The v0.1.0-beta.1 Android package metadata and direct-gateway build/install guide are present in source. On 2026-07-24, the required recovery preflight passed and the source-current offline Gradle :app:testDebugUnitTest :app:assembleDebug command passed. Installation verification cannot be completed in the current sandbox.

ADB is installed, but the R1 evidence above confirms that its daemon sockets are prohibited and that no emulator executable, AVD, /dev/kvm, USB device bus, or running target is available. Therefore no source-current beta APK package inspection, clean uninstall/install, launch, or direct-gateway device connection was verified here. No APK was published or uploaded, and no final release criterion is claimed.

Required unblock evidence: in a permitted environment, run the preflight and Android checks from docs/ANDROID_BETA_BUILD.md, record aapt package/version output and the APK SHA-256, clean-install on one named real device or emulator, launch the app, configure the upstream Hermes gateway directly, and record the connection result in docs/ROADMAP.md.

Stable gateway identity binding

The documented direct gateway routes currently available to Hermes Mobile (GET /health and authenticated GET /v1/models) do not expose a verified stable gateway instance identifier.

B2 therefore protects local-first routing by requiring explicit HTTPS URLs, disabling redirects and cleartext traffic, probing /health without credentials, and sending a bearer token only for the documented /v1/models compatibility check. This confirms TLS reachability and authenticated API compatibility, but it cannot cryptographically prove that separately configured Local and Remote URLs terminate at the same Hermes gateway identity.

Upstream compatibility needed for stronger binding: a documented stable gateway instance ID signed or authenticated consistently across both routes, or an upstream-supported certificate/public-key pin that the Android client can bind to the single logical profile. Until then, Local and Remote pairing remains an explicit user trust decision and diagnostics identify only the active route, not internal URLs.

Direct gateway session search contract

The official Hermes Agent API server documentation checked on 2026-07-24 documents authenticated GET /v1/capabilities and session endpoint capability entries for list, create, get, update, delete, messages, fork, chat, and chat streaming. It does not document a session-search endpoint, query parameter/body schema, response envelope, or a session_search capability entry.

B3 therefore keeps searchSessions in the Android repository contract and verifies it with the fake repository, but deliberately provides no direct-gateway HTTP mapping for search. Current official upstream API-server behavior represents capability endpoints as structured {method, path} objects; the earlier Android B3 string-only endpoint parser has not been exercised against a live gateway and is not treated as verified compatibility.

A local Hermes API-server configuration was present on 2026-07-24 with API_SERVER_ENABLED=true, host 0.0.0.0, port 18793, and a configured key. No process was listening on port 18793, and GET http://127.0.0.1:18793/health was unreachable (curl HTTP code 000), so no live session compatibility exercise was available.

Upstream evidence needed to unblock B3: official documentation for session search including capability key, HTTP method, path, query/body schema, response envelope, and empty/error semantics, followed by a live compatibility exercise against an upstream Hermes gateway.

Sources checked on 2026-07-24: https://hermes-agent.nousresearch.com/docs/user-guide/features/api-server/; installed official upstream checkout NousResearch/hermes-agent at commit 36f2a966c, including gateway/platforms/api_server.py capability and session-stream behavior.