Agent
com.mobilefork.hermesagent
Zapstore _@zapstore.dev Republished from GitHub / F-Droid by the Zapstore main account.
Sats Received
Underlying data available via MCP: app_zaps, app_releases.
Zap Count
Underlying data available via MCP: app_zaps, app_releases.
Releases
- Sep 26, 2026 0.13.158# Agent v0.13.158 Agent is the independent Android app name. This release refreshes the A store icon, puts model selection and offline file import first, and groups downloads, online providers, response settings and advanced runtime controls separately. Local model imports preserve the original file, reject duplicate concurrent imports, and clean up interrupted copies. Accessibility labels, saved-state restoration and large-text layouts have been strengthened. LiteRT-LM Android is 0.17.1.
More…
The application ID and historical download filename pattern remain compatible with existing installations and F-Droid's Binaries URL. They are technical identifiers, not the displayed product name. Full and Play are separate distributions. Store artwork and localized text are supplied through the standard Fastlane paths. F-Droid collects them from a built tagged release; central repository processing is separate from GitHub publication. Its current explicit Name override requires a maintainer adjustment before the central listing title can inherit Agent. Physical-device validation is optional and was not performed. Release status and accepted source-bound evidence are recorded separately; these notes do not claim publication before the release workflow succeeds. - Sep 12, 2026 0.13.157# Hermes Agent Fork v0.13.157 This release addresses reported conversation-history, assistant-display, runtime-diagnostic and Full-edition MCP problems. Full and Play are separate distributions; choose the edition you intend to use. ## Changes - Conversation history supports rename, deletion and local title regeneration. Manual titles survive later replies, and deleting an inactive conversation does not replace the active chat or resurrect it from a late callback. - Title regeneration uses the conversation's local text. The Android Python-agent configuration also disables auxiliary AI title requests. - Empty thinking tags are removed from displayed assistant replies. The existing Full Python-agent chat path displays actual structured tool progress, and Stop interrupts an idle streaming request so owned work can unwind. - Runtime diagnostics distinguish saved memory facts from RAM, report writable app-home storage, and expose the packaged command paths used by shell tools. These changes do not claim to free memory or repair storage on a physical tester's phone.
More…
- Full includes an opt-in MCP supervisor for the existing Python-agent custom-endpoint chat path, supporting stdio, SSE and Streamable HTTP with owned process/session cleanup, bounded responses and manual reload. Configuration files alone do not grant consent. This does not reroute direct-provider or on-device chat through the Python agent. MCP remains unavailable in Play. - Native SDK builds apply deterministic Rust source-path mapping across nested and external build directories, with a real object-byte regression check. - History, MCP and privacy-facing UI changes include English, Chinese, Spanish, German, Portuguese and French strings. Play-specific helper text no longer advertises Full-only capabilities. ## Choose your edition - **Full GitHub/F-Droid:** `hermes-agent-android-v0.13.157-universal.apk`, with a matching Full `.aab`. This edition retains the existing Python agent, Linux/package workflows, device tools and optional automation. - **Play:** `hermes-agent-android-play-v0.13.157-universal.apk` and `hermes-agent-android-play-v0.13.157.aab`. This is the foreground AI client with supported packaged on-device engines and direct API chat. It excludes Full-only Linux installation, device automation, accessibility services, MCP and persistent background agents. Only the Play AAB belongs in Google Play Console. Both editions retain provider/endpoint-specific remote-processing consent and voluntary private AI-content reporting with an editable preview and deletion receipts. Local safety checks are bounded safeguards, not a guarantee against every unsafe model response. ## Verification and release boundaries Release source commit: `40d65da0946ace5525663d73b77fb49a83964d50`. Source digest: `7faeaf64c80fe3effd6a34a9ef2d3d85e40b984876e6a2adbea6b6bf0c872027` (`sha256-git-tree-contents-v1`, 12,712 source files). Final release commit: `0fa5b85c810e02bc640ad911053c2b8666a29d4f`. Annotated tag object: `06b8e90e6e2e0b04843ea7058f974be80aa56ad6`. The evidence-only commits preserved the certified application-source digest. Physical validation was not performed; emulator and package checks do not certify ARM64 device behavior. This release's immutable evidence retains its original owner waiver. On 2026-09-12 the owner confirmed that physical on-device validation is optional extra checking for this and all future releases, not a publication gate. The standing future-policy update is maintained separately so that this release's already-certified application source is not relabelled. Google Play review/approval and publication in the central F-Droid index are separate external states. A published GitHub release or a successful local F-Droid reproduction is not, by itself, evidence of either external approval. Completed release checks: - Final canonical Python suite: 46,592 passed, 466 skipped, zero failures; 12 workers with no file retries in the accepted run. - Full Android: 1,033 unit tests passed; Play Android: 55 unit tests passed. Required lint, package, runtime and source-binding checks passed. - Source-bound emulator/UI/model/privacy evidence and the independent hosted Perfetto artifact round trip passed. Physical-device validation was not performed. - [Tagged signing/publication workflow](https://github.com/adybag14-cyber/hermes-agent/actions/runs/34701924474) completed successfully. All eight public assets were downloaded and verified for their declared sizes, SHA-256 digests and checksum contents. Full and Play signatures, source identities, target SDK 36, APK 16-KB alignment and Play distribution boundaries passed. - Fresh post-publication F-Droid updater discovery passed at public fdroiddata commit `a9ab6dbb6cc8e504e71cd46a6987fd3c8b708775`. It generated exactly version `0.13.157` / code `145790` at the full release commit, preserving all nine prior build entries. No fdroiddata commit or merge request was submitted. - Fresh F-Droid buildserver reproduction passed using pinned revision `4a8821a58659901c63315cb000b0e98525653bc5` and image digest `sha256:9bae53bb4ddbf8fa5bb7385bf2e62e7c6318f99ab0d25b2a551ad38abb528068`. The actual build reported one build succeeded and a successful comparison with the public Full APK, including the allowed signer. All 24 packaged native SDK ELF payloads, including the four affected Rust libraries, matched the public reference. Both bundled PowerShell resources retained their exact expected CRLF bytes. The reproducibility run used an explicit host-Python no-import-bytecode setting (`-B`) for both `python3.13` and `python3`, which resolve to the same pinned interpreter. This setting is required by the tested v157 build configuration: the initial default invocation generated a source-tree cache rejected by the integrity guard. The recipe, release source and integrity checker were unchanged, and both failed attempts were retained. A permanent CLI cache-hygiene fix was separately published for future builds in commit `325028a3f676bdd1598b0b341ef469bade84172c`, with two red-to-green cold-start regressions and 34 related passing tests; it is not retroactively part of this tag. The verified signed Play AAB, code `145790`, was submitted to the existing closed Alpha track. Google's automatic quick checks completed and Play Console confirmed that the changes are in review. This is not Google approval or a Production rollout. Public Full APK SHA-256: `8bd52f375b338c278591a2a265b6ff68add563e6cdb08985235cdc2ad2ed62db`. Public Play AAB SHA-256: `8e8de8568e9517adfce90f62baa84246565859901f25d220b3e3c8b3960a77a3`. The source-bound model checks completed on dedicated x86_64 Android 16 AVDs. Full covered the five registered models plus the historical experimental Gemma E4B record. Play covered the five registered models on real 16-KB pages. The Play VibeThinker fixture was killed by Android's low-memory killer in the 8-GB AVD; the full Play matrix was then rerun on one 12-GB AVD boot. This is bounded emulator compatibility evidence, not a claim that large models fit every physical phone. [Full changelog](https://github.com/adybag14-cyber/hermes-agent/compare/v0.13.156...v0.13.157) - Sep 8, 2026 0.13.156# Hermes Agent Fork v0.13.156 This release adds privacy and consent controls, private AI-content reporting, and a separately packaged Play edition while preserving the Full edition's Android tools and Linux features. ## Choose the right edition - **Full GitHub/F-Droid:** `hermes-agent-android-v0.13.156-universal.apk` retains the Python agent, Linux environment, tools and automation. Do not upload the Full APK or AAB to Google Play. - **Play edition:** `hermes-agent-android-play-v0.13.156-universal.apk` provides foreground API chat and packaged local inference without the Full edition's Linux payload, arbitrary tool execution, accessibility service or broad device permissions. Use the corresponding Play AAB for a future Play submission. Both editions use the same application ID and signing identity; they replace one another rather than install side by side. Version code: **145690**. Target SDK: **36**.
More…
## Changes - Explain remote-provider processing before sending, preserve a declined draft, re-prompt for changed or revoked consent, and expose consent revocation in Privacy settings. - Explain voice input before requesting microphone access, and separate the Full edition's accessibility disclosure from Android's actual accessibility permission. - Preview an AI-content report before voluntary submission to the developer's private service; confirm delivery and support deleting a submitted report with its private receipt. - Add local-data deletion controls with explicit confirmation. Android app-data deletion does not delete provider accounts, shared/public files, or remotely submitted reports. - Apply bounded input/output safety checks to Play chat and stop foreground requests or local engines when the Play app moves to the background. These checks are limited safeguards, not an exhaustive content classifier. - Validate Play binaries and their matching bundles, including native-library 16 KB alignment and the absence of unsupported Full-edition components and payloads. - Integrate the separately captured Play evidence into the closed, source-bound release manifest. Missing, stale, mixed, unexpected or non-regular evidence fails validation; historical release layouts remain unchanged. - Track the Windows bootstrap installer's generated Cargo lockfile for F-Droid scanning and retain the precise Android settings scanner exception and source-integrity checks. ## Post-publication F-Droid certification Both required post-publication checks passed on 2026-09-08 against this release: - A fresh updater checkout discovered **0.13.156 / 145690**, resolving commit `276166eb85f7f0b7ac25abc15dea432c1260c2ba`. It generated one new build and preserved the eight historical builds. No new F-Droid submission or merge request was made by this certification run. - A fresh pinned buildserver, with new empty build and Gradle volumes, completed the generated recipe, verified the allowed signer, and reported **“compared built binary to supplied reference binary successfully”** and **“1 build succeeded.”** The buildserver was pinned to `registry.gitlab.com/fdroid/fdroidserver:buildserver-trixie@sha256:9bae53bb4ddbf8fa5bb7385bf2e62e7c6318f99ab0d25b2a551ad38abb528068`, with fdroidserver commit `4a8821a58659901c63315cb000b0e98525653bc5`. The built unsigned APK has SHA-256 `41f1fba87e96470d16bcca3b81411427fa1263daad393550caf3b9139a328560`; the signed public Full APK has SHA-256 `795259f27d7e1ddc7c3561140954dec6e51eb13d291b37fe4ea513d3fdd6ba3a`. The official comparison accounts for APK signing metadata. The previously affected packaged PowerShell resources also retain their exact original CRLF bytes. These results certify updater discovery and reproducibility under that pinned recipe. They do not assert that the central F-Droid index has published v0.13.156 or that Google has approved it. ## Verification and review boundary The versioned evidence is under [`android/release-evidence/v0.13.156`](https://github.com/adybag14-cyber/hermes-agent/tree/v0.13.156/android/release-evidence/v0.13.156). Full and Play records are bound to their actual installed APKs, instrumentation APKs, source digest, emulator identity and run. Raw Perfetto traces are retained separately in the verified GitHub Actions artifact referenced by the committed receipt. The release owner explicitly waived physical-device validation for **v0.13.156 only**. Physical ARM64 validation was **not performed** for this version; emulator evidence is not a substitute claim. Physical Play submission videos are deferred until the owner reconnects the phone. Automated launch-recording identity, palette, decoding and integrity checks remain required; pending human review is recorded honestly. The [Play-edition policy audit](https://github.com/adybag14-cyber/hermes-agent/blob/v0.13.156/android/PLAY_EDITION.md) describes the engineering scope and remaining Console declarations. Technical checks do not constitute Google approval. Post-publication F-Droid updater discovery and pinned-buildserver comparison must be evaluated against this public release; central F-Droid publication is a separate external state. See the [privacy policy](https://adybag14-cyber.github.io/hermes-agent/privacy-policy/) for remote processing, report retention and deletion. Users should delete remote reports using their receipts before clearing the app's private data. - Sep 7, 2026 0.13.155# Hermes Agent Android v0.13.155 Corrective release for the F-Droid source-binding and scanner failures diagnosed after v0.13.154. Android version code: **145590**. The application targets and compiles against Android API 36. ## Fixes - The strict source-byte guard now derives the expected checkout bytes from committed Git attributes, including explicitly declared CRLF PowerShell resources. It does not trust local/global attribute overrides or arbitrary Git filters. The packaged PowerShell resources retain their original CRLF bytes. - The F-Droid recipe documents exactly two scanner exceptions: the hash-verified source-built local Python Maven repository declaration, and the separate Windows bootstrap installer's Cargo manifest. Source-binding validation rejects broader exceptions. - The asynchronous preferred-model test now uses real nonempty temporary GGUF files and waits for the download refresh to complete. Its assertions and the application's missing-file cleanup behavior are preserved. - The inherited CLI install/update workflow's push trigger is limited to the calendar-version tags understood by its release picker; Android tags no longer launch an inapplicable CLI release-selection job.
More…
## Validation Pre-publication source: `3580dc859866c2dd2516f4f359c75c61d2e9086b`. Final evidence/tag commit: `7ba8956e73e2070f416f30378e20ed1f8c8fe3ea` (evidence-only follow-up commits; application source unchanged). Source digest: `05939731f639f5a4390db551940999ebfb7f03ad075c719d1ec089746514ce0d`. - New checkout-byte and metadata regression coverage passed; the complete Android-related Python lane passed 1,031 tests with zero failures. - Both Windows developer checks and the pinned Linux candidate checks passed 1,002 Android unit tests with no failures, errors, or skips. Android lint passed with the pre-existing baseline unchanged. - The complete pre-publication pinned F-Droid recipe and scanner passed. A separate clean native-Linux normal build produced a byte-identical unsigned APK: SHA-256 `42cb232917fc3d029328cb513e72dd3f8e02857432854fd11f626c3ca6d7f9d4` (330,935,067 bytes). - Google's published-latest LiteRT-LM compatibility check passed at `0.17.0`. This release retains genuine source-built Python SDK packaging, including OpenAI 2.54.0, Anthropic 0.125.0, FAL 1.0.1, and Pydantic 2.13.5. - Full hosted CI passed on the frozen source. The Python run passed 46,532 tests with zero failures and 477 skips across 3,790 files; the separate Windows and macOS lanes, JavaScript/TypeScript checks, and both Android branch runs passed. - The full CI rerun on the final evidence commit also passed: 46,531 Python tests passed, zero failed, 478 skipped across 3,790 files. Both final Android branch runs and the final Nix check passed as well. The two count sets are separate recorded runs, not combined totals. The complete 295-entry release manifest passed generation and full annotated-tag validation. Tag object `221503cc54e3dc110285af8a42845ba2b65b0eb7` peels to the final commit above. [The hosted release workflow](https://github.com/adybag14-cyber/hermes-agent/actions/runs/34149738072) passed, and the stable release was published on 2026-09-07 at 18:38:56 UTC. Public artifact verification passed, including the exact tag/default-head publication checks, source binding, API 36 target, signatures, asset set, and checksum contents. Both required fresh post-publication F-Droid gates also passed, independently of the pre-publication rehearsal. Public APK: 330,940,287 bytes, SHA-256 `9b3e104b4f41238f6359b417ec8c4346ec06a49cdf93849a80ecd477f24a6cfe`. Public AAB: 284,297,645 bytes, SHA-256 `162f1bcb4a5f93ea0e58b3240878bc793bafe05895229ae7a65203390e2adde8`. Both use the approved signer SHA-256 `2cbdb94d6081413055af1e903d4c1d6714300b4240402d1d4c8182fda777d14e`. ### Fresh device evidence - Android 16 / API 36 phone and API 35 large-screen compatibility captures: 114 comprehensive UI captures, plus all six legacy language surfaces on each profile. Android 16 Back navigation, embedded Python startup, issue-8 direct-tool routing, and the full disposable Debian/HTTPS proof passed. The Debian sandbox was removed and its agent shell disabled after the successful proof. - All six exact CPU model checks started and returned nonempty completions: Qwen 3.5 0.8B (5,486 ms), MiniCPM Fable5 GGUF (3,477 ms), Nanbeige 3B on TurboQuant (18,641 ms), MiniCPM LiteRT-LM (6,742 ms), VibeThinker 3B (35,668 ms), and the historical Gemma E4B fixture (13,685 ms). These are the recorded model-operation durations, not download or transfer times. - Four launcher/deep-link startup recordings passed automated identity, persisted-palette, capture-integrity, and full decode checks. Both palettes were saved through the actual app UI. Manual review remains pending; no human approval or frame-by-frame review is claimed. - Ten accepted Perfetto traces (451,663,788 raw bytes) passed source binding, [the upload and independent hosted round trip](https://github.com/adybag14-cyber/hermes-agent/actions/runs/34147031856), and a second local download/hash verification. Artifact `10028099100`, archive digest `sha256:cc4c70e362c3832d6436aae62230e18e660c010572ae40603425807b237fce7c`, 90-day retention to 2026-12-06T17:18:10Z. The rejected initial phone capture is excluded. The approved one-job runner was deregistered and removed after its job. | Controlled emulator profile | Rendered frames | Frame-time p95 / p99 | App deadline missed or dropped | Cold / warm launch | PSS / RSS | |---|---:|---:|---:|---:|---:| | API 36 phone, 1080x2400 | 5,874 | 7.51 / 20.17 ms | 2 / 5,927 surface frames (0.0337%) | 291 / 126 ms | 83,014 / 213,368 KiB | | API 35 tablet, 2560x1800 | 5,099 | 22.01 / 23.40 ms | 13 / 5,127 surface frames (0.2536%) | 377 / 193 ms | 87,565 / 214,836 KiB | These are controlled hardware-accelerated emulator validation measurements, not representative physical-phone benchmarks or an attributed speed improvement from the packaging fix. Both owned emulators are stopped; host model originals and prior release evidence are preserved. ## Explicit validation scope Physical-phone validation was **not performed**, under the release owner's separate explicit waiver for stable v0.13.155 on 2026-09-07. This is not a physical-device pass and does not waive emulator, signing, source-integrity, or either post-publication F-Droid gate. The waiver does not apply to prereleases or v0.13.156 and later. Launch recordings retain automated source/APK identity, persisted-palette, decoding, and byte-integrity checks. Manual review may remain pending under the v0.13.154-and-later policy; pending review is not represented as a human approval. ## F-Droid status **GitHub release published; both fresh post-publication F-Droid gates passed.** Fresh updater discovery passed at 18:51:34 UTC. It generated exactly version 0.13.155 / 145590 at the full published commit, preserved all eight historical build recipes and unrelated metadata values, and retained the exact public Binaries URL and approved signer. The source-bound recipe matches the committed template, including only its two reviewed scanner exceptions and no PowerShell init rewrite. Recipe SHA-256: `66f8e0a9f8fde615c29d7f08ee4e96c69d03a3452405d4328e592f76ec21b5e5`. A new pinned buildserver with new empty build/Gradle volumes ran from 18:52:56 to 19:07:13 UTC, exited zero with no OOM, and reported a successful comparison with the supplied public binary, the approved signer, and one successful build. All 63 Gradle tasks executed successfully in 4m33s. Final exported-artifact checks passed at 19:08:27 UTC, including full source binding to the published commit, API 36/version checks, genuine SDK packaging, and exact individual comparison of both PowerShell resources. The fresh unsigned APK is 330,935,067 bytes, SHA-256 `42cb232917fc3d029328cb513e72dd3f8e02857432854fd11f626c3ca6d7f9d4`; it is also byte-identical to the rehearsal APK. F-Droid's signature-aware comparison verified it against the actual signed public APK whose hash is listed above. Final build-log SHA-256: `3b56e43d8cb6b7903515e66409691f47ec3aee2744f965a66f94ac8f5f9ef8e2`. No `fdroiddata` commit, fork, push, or merge request was created. These passing local discovery and reproducibility checks do **not** claim that the central F-Droid index has published this version. ### Immutable reproduction inputs - Buildserver image: `registry.gitlab.com/fdroid/fdroidserver:buildserver-trixie@sha256:9bae53bb4ddbf8fa5bb7385bf2e62e7c6318f99ab0d25b2a551ad38abb528068`; fdroidserver commit `4a8821a58659901c63315cb000b0e98525653bc5`; `gradlew-fdroid` commit `c7227d147483979bb5c408048cee3533a8814fb0`. - [Pinned fdroidserver source archive](https://gitlab.com/fdroid/fdroidserver/-/archive/4a8821a58659901c63315cb000b0e98525653bc5/fdroidserver-4a8821a58659901c63315cb000b0e98525653bc5.tar.gz): SHA-256 `8b2f87ef6e278a49f70b98fe0ff007465524f41c15ba212f686f4239a7323909`. - [Immutable Termux package bundle from v0.13.141](https://github.com/adybag14-cyber/hermes-agent/releases/download/v0.13.141/hermes-termux-packages-v1.zip): SHA-256 `cb61a40fddf294bd2f246b9077e6ffa2fc9cc54febac4f3e936223320e93a681`. This existing asset is reused in place, not recreated or replaced. - [Pinned Chaquopy source archive](https://codeload.github.com/adybag14-cyber/chaquopy/tar.gz/58329881ba7c50729e6fc2c10b63d817767f9f9f): SHA-256 `945d12a04781358af595893d036ee613b667e954ccd089b4c9aa9fc359edec13`. - Toolchain: Android SDK / Build Tools 36.0.0, app NDK 29.0.14206865, Python-native NDK 27.3.13750724, CMake 3.31.6, Ninja 1.12.1, JDK 21, Gradle 9.3.1, and source-built Python 3.13 runtime dependencies. v0.13.154 and its public assets remain unchanged. - Sep 7, 2026 0.13.154# Hermes Agent Fork v0.13.154 Android version **0.13.154**, version code **145490**, targeting **Android 16 / API 36**. ## Changes - Target Android 16 and fix provider-browser Back navigation. - Upgrade LiteRT-LM to **0.17.0**. The published-latest compatibility workflow verified that this matches Google's published latest stable artifact. - Ship genuine OpenAI **2.54.0**, Anthropic **0.125.0**, FAL **1.0.1**, and Pydantic **2.13.5** SDKs, with hash-locked dependencies and source-built Android native components for ARM64 and x86-64. - Fix split-archive Python imports, tool results, and sandbox permission-denial feedback.
More…
- Add verified ModelScope mirrors and improve resumed downloads. TurboQuant and memory overrides remain experimental and opt-in. Model quality and device support vary. ## Validation and limitations - Final-commit hosted CI: **46,522 Python tests passed, zero failed, 478 skipped**; the full JavaScript/TypeScript checks, OS-specific lanes, Nix, default-branch Android workflow, and tagged Android Release workflow passed. Published-latest LiteRT compatibility passed on the same application-source digest. The separate release-branch CI finding is disclosed below. - Pinned Linux build: **1,002 Android unit tests in 95 suites**, with no failures, errors, or skips; lint, debug/test APK, benchmark, unsigned release APK, and AAB builds passed. - Both headed emulator profiles passed comprehensive UI and six-language checks. Android 16 platform Back, direct tools, embedded Python startup, and fresh full-assets Debian/HTTPS with verified sandbox cleanup passed. - All six exact model artifacts passed CPU startup/health and non-empty local completion checks: Qwen 3.5 0.8B Q4_K_M, MiniCPM5 Fable5 1B Q4_K_M, Nanbeige 4.2 3B Q4_K_M, MiniCPM5 1B Web LiteRT-LM, VibeThinker 3B LiteRT-LM, and the historical experimental Gemma 4 E4B LiteRT-LM record. Gemma E4B remains a text-only experimental reproduction and is not promoted to the quick-start catalog. - **Physical-phone validation was explicitly waived by the release owner for stable v0.13.154 only. It was not performed for this final candidate and is not recorded as passing.** The waiver does not apply to prereleases or v0.13.155 and later. - Four launch recordings passed automated identity, persisted-palette, installed-APK hash, and decoding checks. Human frame-by-frame review of these new recordings is pending and is non-blocking under the v0.13.154 policy; no human approval is implied. ### Additional CI findings The final commit's [default-branch Android workflow](https://github.com/adybag14-cyber/hermes-agent/actions/runs/34123349157) passed. A duplicate [release-branch Android workflow](https://github.com/adybag14-cyber/hermes-agent/actions/runs/34123349241) failed the same unit test on both its initial attempt and one retry: `explicitSameTupleLocalStartCancelsOlderPendingOwnerBeforeLateCompletion`. Its fixture uses nonexistent model files and races the downloads view model's background missing-file cleanup before asserting that the preferred selection is retained. This known test-fixture race is not represented as a passing check and is not evidence that a real, present model file loses its selection. The immutable release tag has not been rewritten. The inherited [CLI Install & Update E2E workflow](https://github.com/adybag14-cyber/hermes-agent/actions/runs/34123349955) also failed before running any installer: its release picker requires calendar-style `vYYYY.M.D` tags, while this fork's Android releases use `v0.*` tags. That workflow is not claimed as a pass. ### Emulator performance These are headed, hardware-accelerated emulator validation signals, **not representative physical-device benchmarks**. Each profile used five measured iterations. The missed/dropped percentage uses Perfetto surface timeline tokens and is distinct from the separate FrameTiming overrun diagnostic. | Profile | FrameTiming frames | Missed or dropped | CPU frame p95 / p99 | Cold / warm launch | |---|---:|---:|---:|---:| | Phone, Android 16 / API 36, 1080x2400 | 4,834 | 2.77948% | 35.567 / 39.827 ms | 497 / 121 ms | | Tablet, Android 15 / API 35 compatibility profile, 2560x1800 | 4,861 | 0.20500% | 21.126 / 22.813 ms | 387 / 178 ms | ## Source and trace evidence Application source digest: `38bfbe9aef6da87b486ebb583b59c8a0f0c2705aea1304e7f932747f99356f26` The release evidence is available in the [versioned evidence directory](https://github.com/adybag14-cyber/hermes-agent/tree/v0.13.154/android/release-evidence/v0.13.154). The ten raw traces are external to Git and were uploaded and independently downloaded/rehashed by [the successful trace workflow](https://github.com/adybag14-cyber/hermes-agent/actions/runs/34119844274), artifact **10017853891**. Local backups are retained. Actions retention is 90 days, with the recorded artifact expiry on **2026-12-06**. ## Downloads Use the universal APK for direct Android installation. The AAB is also supplied, and each binary has its own SHA-256 checksum file among the release assets. ## F-Droid status **GitHub release published; post-release F-Droid reproducibility gate failed.** Two fresh updater runs successfully discovered version 0.13.154 / 145490 at the exact public tag commit, preserving all eight historical metadata builds and the allowed signer. The first pinned-buildserver attempt stopped at the byte-integrity preflight because the repository explicitly checks out PowerShell scripts as CRLF while that guard expects LF-normalized Git blobs. A second fresh attempt used a recipe-only initialization to restore the committed blobs; it passed the unchanged source guard and the complete genuine Python SDK build/ABI audits, then stopped at the pinned scanner on a computed local Maven path in `android/settings.gradle.kts` and an unlocked Cargo manifest for the separate Windows installer. No scanner exclusions were applied, and the official public-APK comparison was not reached. Independent inspection also confirmed that the public APK includes two PowerShell resources with CRLF bytes. Restoring their source to LF changes what the private wheel builder packages, so that recipe-only workaround is not sufficient to reproduce this APK. A source-level follow-up is required to align checkout, integrity, and resource-packaging behavior. The immutable release tag and all four public assets are unchanged; both failed build environments and complete logs are retained. This release is not claimed as F-Droid-reproducibility certified. No `fdroiddata` merge request is being submitted, and this release does not claim publication in the central F-Droid index. - Aug 28, 2026 0.13.153# Hermes Agent Fork v0.13.153 This corrective Android release supersedes v0.13.152 for F-Droid installation and reproducibility. It retains the certified Nanbeige/TurboQuant runtime, request-owned cancellation, local generation progress, terminal Stop behavior, and advanced llama.cpp controls while resolving both independent causes reported in GitHub Issue #17. ## Reproducible experimental llama.cpp binaries
More…
- Normalizes the pinned TurboQuant llama-server with the locked Android NDK `llvm-strip` after linking. - Removes `.note.gnu.build-id`, whose 20-byte descriptor was the only byte difference between the v0.13.150 GitHub and F-Droid native libraries. - Removes the non-loadable `.comment` compiler-identification section as a cross-host hardening measure. - Uses the locked NDK `llvm-readelf` to fail before packaging if either section survives. - Selects a real host C++ compiler outside the Android NDK for llama.cpp's build-time host tools, while retaining the locked NDK compiler for Android targets. - Copies verified JNI and license/manifest outputs into private transaction roots on their destination filesystem before coordinated atomic publication. This closes the F-Droid `/tmp`-to-Gradle-volume `EXDEV` failure while keeping both generated trees coherent under failure or concurrent invocation. - Records the removed-section contract in the packaged experimental-lane manifest before hashing the normalized arm64-v8a and x86_64 libraries. The normalization does not change executable code, dynamic dependencies, relocations, load alignment, or runtime capabilities. Both reported native library pairs were otherwise byte-identical. ## Self-binding F-Droid bot builds - Retains the explicit `hermesFdroidSourceBinding=true` prepare/verify handoff used by the repository's no-MR release preview. - Adds a fail-closed fallback for the central F-Droid bot's inherited two-`sed` source transformation. Normal and F-Droid marker states are closed: an exact F-Droid state has all three SDK locators and none of the three tracked scanner-managed wrapper files; every partial or contradictory state fails. Any semantic release tag without an explicit digest invokes binding verification rather than falling through to an unbound build. - Derives the source identity from committed Git blobs rather than transformed working-tree bytes, while requiring `HEAD` to equal the peeled annotated tag on the canonical GitHub origin. Git authority environment variables, non-default index flags, and ignored/untracked build inputs are rejected. Raw bytes and symlink targets for every unchanged tracked source entry are compared directly with committed blobs, bypassing configurable Git clean filters. Any additional edit, deletion, malformed SDK locator, version mismatch, or source-identity mismatch fails the build. This prevents `hermes-source-unbound` from entering `classes2.dex` when the central bot has not yet inherited the repository metadata overlay. Correcting that DEX identity also removes the derivative baseline-profile difference. The native NDK/CMake declarations remain an F-Droid metadata requirement; the repository's no-MR preview overlays and verifies them, while central metadata must carry the same toolchain contract before its build can succeed. Automatic transformed binding also performs a live read-only lookup of the canonical annotated tag; network or GitHub unavailability fails closed. ## Immutable release boundary The v0.13.150, v0.13.151, and v0.13.152 tags and assets remain unchanged. v0.13.151 legitimately has no APK because its release workflow stopped before signing and publication; v0.13.152 remains the published cancellation repair but predates this native normalization. The v0.13.153 release must be built from a new source digest and candidate, pass headed phone/tablet and physical Nanbeige certification, and match a pinned F-Droid build after signing-block normalization. A fresh F-Droid updater check must select exactly `0.13.153`/`145390`. No fdroiddata commit, push, fork, or merge request is created by this release workflow. - Aug 25, 2026 0.13.152# Hermes Agent Fork v0.13.152 This corrective Android release supersedes the immutable `v0.13.151` tag, whose workflow stopped before signing and never produced a published GitHub release. It retains the Nanbeige/TurboQuant, request-scoped tool-authority, generation-progress, terminal Stop, and local-runtime repairs certified for the prior candidate while closing a response-body cancellation gap discovered by the hosted release gate. ## Request-owned streaming cancellation repair
More…
- Retains every exact OkHttp `Call` in a request-owned registry from outermost interceptor entry until the returned response body reaches EOF, closes, or fails. A synchronous `execute()` call is therefore still cancellable after OkHttp has removed it from `Dispatcher.runningCalls()` at the response-header boundary. - Makes cancellation sticky and linearizable with call registration. Stop can no longer race a call which is entering the transport: either registration sees the prior cancellation and fails before dispatch, or cancellation sees and cancels the registered exact call. - Enforces a fresh dispatcher inside the request-owned transport itself, even when integration supplies a shared base client. Cancelling request A cannot reach request B; dispatcher cancellation remains only a secondary mechanism for queued or pre-interceptor asynchronous work. - Applies the same exact-call lifetime boundary to remote chat fallback and to native-tool HTTP paths, including request-owned package operations, verified Docker-layer fallback downloads, terminal network fallback, and Android automation network work. - Preserves the last verified layer while a replacement streams into a unique temporary file. Cancellation removes the request's partial file without deleting or replacing the durable entry, and without stopping another request's download. ## Deterministic regression coverage - Reproduces the original gap at the body-stream boundary: the response body is active and the layer partial exists while OkHttp reports zero dispatcher calls. This proves that a relaxed dispatcher assertion would hide a production defect rather than repair the test. - Captures both exact calls with event-listener latches, brings the independent request B online first, then cancels A while its response body is streaming. The test requires A cancelled, B still active, A's prior sentinel preserved, A's partial removed, and both request registries empty after their own stops. - The repaired regression passed 50 consecutive fresh server/client iterations on Windows. The expanded adjacent cancellation suites passed 117/117 tests, and the complete Android unit suite passed 990/990 tests across 91 suites with zero failures, errors, or skips before release recertification. ## Retained Android and Nanbeige behavior - A catalog-verified Nanbeige Q4_K_M artifact still reconciles stale Stable state to the Experimental TurboQuant / Nanbeige lane before launch, with the persisted and visible Settings state kept authoritative. - An explicitly selected local backend still starts after the first fresh process UI frame without remote-fallback authority, while later Settings or model actions invalidate a stale startup generation. - Ordinary chat still receives no native schema unless one concrete action is requested, validated typed tools still bypass model startup with their exact arguments, and no request may dispatch more than one native action across initial and recovery rounds. - Local generation still exposes elapsed progress, terminalizes Stop and visible failures, removes the observed duplicated Nanbeige think residue, and rejects uncancellable privileged-shell routes from chat. ## Release and F-Droid boundaries The public annotated `v0.13.151` tag remains unchanged as historical evidence; it has no published GitHub release or release assets. `v0.13.152` is built and certified from a new source digest, a new signed phone candidate, and freshly captured physical-phone plus headed phone/tablet evidence. The tag workflow must recheck the live default head and annotated tag before signing, draft creation, asset upload, and publication, and its final universal APK must match the physical candidate byte for byte. After publication, a fresh local `fdroiddata` clone must detect exactly `0.13.152`/`145290`, preserve its resolved full commit through the committed source-binding overlay, and pass the pinned buildserver binary comparison and allowed-signer check. This release intentionally creates no fdroiddata commit, push, fork, or merge request. - Aug 23, 2026 0.13.150# Hermes Agent Fork v0.13.150 This Android release adds a separate, opt-in llama.cpp lane for Nanbeige and TurboQuant while preserving the previously certified Stable compatibility backend for existing models. It also makes advanced llama-server controls available in-app, with fail-closed ownership and validation around the options Hermes must continue to manage itself. ## Nanbeige and TurboQuant lane
More…
- Adds an Experimental TurboQuant / Nanbeige runtime built from the pinned `TheTom/llama-cpp-turboquant` commit `e30664a710b62aaf13c6b12e39e74500e6ce21ef`, without replacing or modifying the Stable Termux `llama-cpp` b9784 lane. - Adds the exact content-addressed `Tdamre/Nanbeige4.2-3B-GGUF` Q4_K_M artifact requested by users: revision `128d8e87d69f9c1a30c37e40530c69deda96475d`, 2,574,807,840 bytes, SHA-256 `99c7bfb88907f7eee0a04c4314f1c46bca391819478d8cb90b3e164f09576489`. - Selects and persists the required TurboQuant lane before the Nanbeige download begins and reasserts it when that model becomes preferred or starts. - Uses Turbo3 K/V cache plus Flash Attention for the release-matrix Nanbeige proof, and prevents the former `unknown model architecture: 'nanbeige'` failure from being mistaken for ordinary readiness. - Keeps the experimental executable CPU-only and isolated as a separately packaged Android system library with pinned source, patch, NDK, ABIs, build definitions, deterministic toolchain contract, hashes, ELF checks, 16-KiB alignment checks, and bundled third-party notices. ## In-app llama.cpp controls - Adds independent K-cache and V-cache selectors. Stable formats include `q5_0` and `q5_1`; the experimental lane additionally exposes `turbo2`, `turbo3`, and `turbo4`. The UI explains that llama.cpp has no formats named `q5_k` or `q5_v`—users select a supported Q5 type independently for K and V. - Adds Flash Attention Default, Auto, On, and Off choices and rejects unsafe or unsupported combinations, including quantized V or Turbo caches with Flash Attention forced off. - Adds expert additional arguments as one argv token per line. Hermes rejects positional injection, control characters, `--flag=value`, duplicate managed options, endpoint/API/TLS/download overrides, model and RAM-policy overrides, device-placement overrides, chat/tool-protocol overrides, and incorrect arity for reviewed performance flags. The selected pinned backend remains the final semantic validator for other expert options. - Shows the effective advanced configuration, fingerprints it without exposing raw arguments, and performs an owned-process restart plus readiness and real completion canary whenever the applied configuration changes. - Omits expert argv from portable settings exports; importing a redacted bundle clears destination-local expert arguments instead of silently retaining them. ## Dangerous one-shot RAM override - Adds an explicitly dangerous, confirmed **Try once despite RAM warning** action for users who want to experiment with a model which exceeds Hermes' conservative RAM estimate. - The override is consumed by one llama.cpp startup attempt only. It is neither persisted nor exported and does not bypass artifact/GGUF validation, content-addressed checks, executable checks, loopback ownership, readiness, the completion canary, or fail-closed cleanup. - Normal launches retain the bounded mobile context defaults. Android or the native allocator may still kill an oversized attempt, and the UI states that risk before it proceeds. ## Runtime, state, and security repairs - Gives every owned llama.cpp process a fresh 256-bit loopback bearer token. Public health/model probes are used only for readiness, while Hermes verifies that an unkeyed data-bearing request is rejected before using authenticated completion and chat endpoints. - Rechecks loopback-port availability at the spawn boundary, retains the exact owned process handle, and confirms that process is still alive after health and completion checks. - Adds the TurboQuant-only response formatting needed to prevent short Nanbeige answers from appearing solely as hidden reasoning content. - Tightens local-model selection, download, settings, authentication, startup, readiness, and chat state authority so stale asynchronous work cannot replace a newer user choice or advertise a runtime configuration which was not the one actually applied. - Keeps diagnostics and user-visible errors free of bearer tokens and raw expert arguments, while surfacing actionable lane, model, RAM, and restart failures. - Localizes the advanced controls and safety messaging across all six supported Android languages and keeps Stable-lane descriptions version-neutral. ## Release and F-Droid boundaries The GitHub release is produced only from the exact annotated tag after the complete manifest-v3 source-bound phone/tablet UI, launch, performance, issue, and real-model evidence has been committed and verified. Hosted signing must produce the approved Android certificate and the expected universal APK/AAB pair before the draft is published. The post-release F-Droid procedure is intentionally no-MR: a fresh local clone of live `fdroiddata` must detect v0.13.150/145090 from the GitHub tag, preserve the resolved full commit through the source-binding overlay, and pass the pinned buildserver comparison. No fdroiddata commit, push, fork, or merge request is created by this release workflow. Emulator evidence does not claim physical Snapdragon, Adreno, NPU, or device-specific performance. - Aug 21, 2026 0.13.149# Hermes Agent Fork v0.13.149 This corrective Android release preserves the v0.13.148 interface, local-model, tool-routing, and Debian-sandbox overhaul while repairing the new F-Droid source-binding gate. The published v0.13.148 tag and assets remain immutable; v0.13.149 is the first candidate eligible for the completed pinned F-Droid reproducibility certification. ## F-Droid source authority
More…
- Models the pinned fdroidserver scanner's exact deterministic removal of `gradle-wrapper.jar`, `gradlew`, `gradlew.bat`, and `gradle-daemon-jvm.properties` before Gradle configuration. - Keeps the source handoff fail-closed: every other tracked edit or deletion, a stale or missing binding file, an unexpected metadata transformation, or a mismatched source digest still stops the build. - Adds regression fixtures for the canonical nested Gradle wrapper JAR and daemon JVM properties, plus an explicit unauthorized-deletion rejection. - Uses the same immutable buildserver image, fdroidserver revision, gradlew-fdroid revision, 12-worker limit, 6-GiB container cap, clean `env -i` build environment, and allowed Android signing key as v0.13.148. ## Android runtime carried forward - Retains the complete responsive liquid-glass UI and six-language phone and tablet coverage, including themed startup, provider setup, and Tasker surfaces. - Retains fail-closed local-model ownership, immutable model selection, LiteRT-LM 0.16.1, and the deliberately CPU/speculation-off x86_64 scope for the historical Gemma 4 E4B experiment. - Retains provider-neutral built-in time and device-status routes and the packaged PRoot/QEMU Debian proof for `id`, `uname -a`, `curl --version`, and real HTTPS retrieval. - Makes the MCP availability explanation version-neutral so future patch releases do not display a stale release number. ## Evidence boundaries The original v0.13.148 GitHub release completed its hosted workflow but its first pinned F-Droid build stopped safely before compilation when the new source-binding gate detected fdroidserver's unmodelled wrapper-JAR cleanup. No v0.13.148 F-Droid APK was produced, and that release is not used as proof for this one. v0.13.149 requires fresh source-bound APK/AAB artifacts and complete manifest-v3 headed phone/tablet evidence tied to its own source digest and APK hashes. The release is certified only after the exact-tag GitHub workflows and the pinned no-MR F-Droid autoupdater/buildserver comparison both pass. No physical Galaxy S24, Snapdragon, Adreno, NPU, GPU, multimodal E4B, or F-Droid merge-request claim is made. - Aug 21, 2026 0.13.148# Hermes Agent Fork v0.13.148 This Android release completes the v0.13.147 overhaul with stricter native runtime ownership, broader themed and localized UI coverage, and a real one-click Debian HTTPS repair. Every device claim below remains conditional on the exact-tag release gates at the end of this document. ## Interface, startup, and localization - Applies the persisted color palette, shape, and font scale from the first
More…
Compose frame onward, with an Android 12+ Hermes splash and no legacy dark preview flash. - Extends the shared glass treatment and responsive layout to the manifested Tasker editors and provider setup page without forcing external web content into the app palette. - Localizes Tasker choices, provider failures, direct native-tool status, and every current recommended-model card in English, Simplified Chinese, Spanish, German, Portuguese, and French. - Adds manifest-v3 headed evidence on phone and tablet for every destination, Device subpage, theme/shape/font bucket, English framework Activity, and cold-start launch lane. The phone lane additionally covers every recommended card and localized framework Activity in all six languages. Launch videos require explicit human review; the host tooling cannot self-certify pixels. ## Local inference safety and compatibility - Pins the reproducible Android release and F-Droid build to Google Maven's current stable `com.google.ai.edge.litertlm:litertlm-android:0.16.1` artifact. - Bounds LiteRT-LM startup probes, engine initialization, completion canaries, generation, replacement, and shutdown with one native ownership protocol. A timed-out or failed cleanup blocks retry and cross-backend fallback until the native owner exits safely or the app is force-stopped and reopened. - Prevents stale remote or cached endpoints from bypassing a restart-required local state, and refuses to start local and remote runtimes over one another when either stop operation fails. - Limits automatic model selection to exact immutable release-certified artifacts. Unknown-size, mutable, mismatched, experimental, and over-5-GiB catalog rows are not quick-started; Gemma 4 12B remains unsupported on nominal 16-GiB phones and is blocked before a new native engine is created. - Treats the historical pinned Gemma 4 E4B artifact as an experimental, text-only lane. Its release evidence is deliberately scoped to CPU with speculative decoding disabled on the certified x86_64 AVD; it is not a Snapdragon, Adreno, NPU, GPU, multimodal, or current-upstream-MTP claim. - Removes the misleading NPU selector because Hermes currently provides CPU and GPU LiteRT-LM backends, not a distinct Android NPU implementation. - Adds a daily/manual published-latest LiteRT-LM compatibility workflow and an advisory immutable llama.cpp/Termux drift report without weakening the content-addressed release pins. ## Tools and Debian sandbox - Routes the exact read-only time request before provider selection, so “Run a command to tell me what time it is.” executes the built-in `date` route with a visible tool trace and no provider request. Arbitrary explicit shell text is not promoted into this provider-neutral path. - Routes the exact “Check my device status” request to native Android status diagnostics before provider selection, with a visible diagnostic trace and zero model or provider requests. - Restricts the embedded app to the audited Android tool profile. External MCP transports, user plugins and context engines, process-backed ACP/Codex provider modes, and async web/vision tools remain disabled until their threads and descendants can participate in the same verified shutdown contract. Stored MCP configuration is retained for export but not executed; desktop and CLI capability is unchanged. - Keeps Debian commands on a guest-only PATH, invokes packaged multicall tools through trusted argv0-preserving symlinks, seeds the guest CA bundle from the readable Android trust store, and installs curl without the pathological recommended-package delay. - Gives the full Debian lifecycle the intended bounded update window and records incomplete deployments honestly for inspection or retry. The headed gate requires `id`, `uname -a`, `curl --version`, and real HTTPS retrieval to succeed through the packaged APK-native PRoot/QEMU route. ## Release gates and evidence boundaries The release is certified only after the 12-worker Python and Kotlin suites, lint, source-bound APK/AAB assembly, hardware-accelerated API 35 phone/tablet UI and launch review, Debian HTTPS proof, release-matrix GGUF/LiteRT-LM completions, the scoped historical E4B CPU/speculation-off record, Macrobenchmark capture, signed GitHub assets, a fully green Android Release workflow, and pinned F-Droid reproducibility all pass on the exact tag. No physical Galaxy S24/Snapdragon/Adreno repair is claimed by the x86_64 AVD evidence. The no-MR F-Droid check remains a disposable local autoupdater preview; this release process does not open or push a GitLab merge request. - Aug 14, 2026 0.13.147# Hermes Agent Fork v0.13.147 This Android overhaul delivers a cohesive, original liquid-glass-inspired Material 3 interface and hardens both on-device inference backends. The issue fixes listed here become release claims only after the certification gates at the end of this document pass on the exact tagged commit. ## Interface, layout, and localization - Extends translucent, layered glass surfaces across the shell, chat, terminal,
More…
Device, Portal, authentication, Settings, and navigation while preserving every built-in and custom theme. - Fixes custom color-role derivation and saved rounded/square shape selection. - Adapts navigation and content widths for compact phones, standard phones, and tablets, with accessible labels and touch targets. - Completes English, Simplified Chinese, Spanish, German, Portuguese, and French coverage for the changed Android surfaces. - Finishes the Android monochrome adaptive icon configuration for themed icons. - Preserves model paragraph breaks and whitespace-only newline SSE deltas. ## LiteRT-LM and GGUF - Updates the exact reproducible LiteRT-LM Android SDK pin from `0.14.0` to `0.16.0` and retains a live Google Maven freshness gate. - Adds exact preview-version and local-main-AAR build inputs so upstream/nightly compatibility can be tested without using a moving dependency in release or F-Droid builds. Google currently publishes no Android nightly Maven channel. - Replaces total-RAM-only admission with current-memory-headroom checks, safer context budgets, clear accelerator fallback reporting, and recovered native/ low-memory exit diagnostics. - Supports single-file, chat-ready GGUF v2/v3 artifacts with an embedded chat template; validates metadata before launch, classifies llama.cpp exits, requires a real completion canary after `/v1/models`, and prevents a false local-ready or silent remote-fallback result. - Locks the headed validation matrix to exact Hugging Face files and device byte sizes for Qwen3.5 0.8B GGUF, MiniCPM5 1B Fable5 GGUF, MiniCPM5 1B LiteRT-LM, and VibeThinker 3B LiteRT-LM. A matrix entry is certified only when its exact bytes produce durable, nonblank completion evidence for this release. ## Terminal and documentation - Repairs and diagnoses Android 15/PRoot exit-code-126 execution routing so one-click Debian commands use the app-private executable/QEMU path rather than an Android `noexec` location. - Replaces the stale Android MVP document with installation, model-format, tool-use, memory sizing, build, emulator, troubleshooting, release, and no-MR F-Droid updater guidance. ## Release gates The release is certified only after scoped Python tests, Kotlin unit tests, lint, APK/AAB assembly, headed API 35 phone/tablet/six-language checks, real LiteRT-LM and GGUF completions, frame/memory capture, signed GitHub assets, a fully green Android Release workflow, pinned F-Droid reproducibility, and a disposable local `checkupdates` preview. No GitLab merge request is opened by this release process.