mrkeyoor.com_
Fri 18 Sept 19:12 UTC
Dev Toolsevaluationupdated 18 Sept 2026

OhMyKeymint review

OhMyKeymint is a replacement Android KeyMint service for selected apps on rooted phones. It implements the AOSP interface, routes chosen keystore requests through its own daemons, and lets advanced users control the attested device identity and keybox.

Verdict

Our OhMyKeymint run installed 209 packages, then both the 118-second build and 6-second test step failed at the bssl-sys placeholder crate. Use an official ZIP only on a recoverable research phone if you specifically need its selected-app KeyMint replacement. Commercial users, daily-driver owners, and developers seeking a normal Cargo project should walk away.

We ran it

Lab card: what happened when we ran OhMyKeymintScreenshot of OhMyKeymint (github.com/qwq233/OhMyKeymint)
Install✓ · 8s209 packages
Build✗ · 118s
Tests✗ · 6sran, no count parsed
Repo481 files~87,079 lines of source · 4 MB · 2 CI workflows · tests dir

Answers from our run

Does OhMyKeymint build from source?

Dependencies installed in 8 seconds (209 packages), and the build failed. We cloned commit a1f3241 into a clean Debian container with 3 CPUs and no project-specific setup.

Do OhMyKeymint's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use OhMyKeymint?

Commercial products or paid services: the additional Oh My Keymint License expressly prohibits commercial use.

What are the alternatives to OhMyKeymint?

TrickyStore, TEESimulator. Our OhMyKeymint run installed 209 packages, then both the 118-second build and 6-second test step failed at the bssl-sys placeholder crate.

Setup1/5Plain build and tests fail; device setup needs root and private keys
Docs4/5Strong user and config guidance, but source build steps live in CI
Community3/5357 stars with recent issue, pull request, and FAQ activity
Maturity2/5Active v1.2 code, with high-impact key and routing failure modes

Who it’s for

Android security researchers testing key-attestation behavior on spare, rooted arm64 devices.
KernelSU or Magisk users on Android 12 through 17 who understand KeyMint, keyboxes, and app-specific routing.
Developers who can preserve private key material and recover a device through their root manager's safe mode.
Noncommercial researchers willing to accept both the AGPL and the project's extra license.

Who it’s NOT for

Commercial products or paid services: the additional Oh My Keymint License expressly prohibits commercial use.
Anyone trying to hide root, gain StrongBox, repair damaged hardware, or guarantee a banking app will run: the FAQ says OMK does none of those jobs.
Android 11, 32-bit devices, recovery-only installers, or phones outside the documented Android 12 through 17 arm64 range.
Daily-driver users who cannot risk sign-outs or inaccessible app data: changing routing, keys, or keyboxes can separate an app from keys it already uses.
Rust developers expecting a plain Cargo checkout to build: our build and test commands both stopped at the deliberately nonfunctional bssl-sys placeholder package.

Setup reality

Our sandbox installed 209 Rust packages in 8 seconds. The build failed with exit code 101 after 118 seconds, and tests failed with the same code after 6 seconds. Both stopped when bssl-sys 0.1.0 emitted its own placeholder-package compile error.

A usable install needs a rooted arm64 phone running Android 12 through 17, KernelSU or Magisk, and an official module ZIP. Custom attestation needs a valid XML keybox with complete EC and RSA chains. The active TOML files and generated crypto values require private backups.

Source builds need the project's Android and BoringSSL preparation, not plain Cargo alone. The official workflow builds BoringSSL separately and patches bssl-sys to that local source. On-device mistakes can disable request routing, prevent keymint from starting, or leave apps unable to read existing keys.

OhMyKeymint replaces KeyMint only for selected Android apps

OhMyKeymint runs its own KeyMint and injector daemons, then routes chosen application requests to that service through Android's keystore path. The project says it implements the AOSP AIDL interface and aims to look closer to the platform service than modules built around TrickyStore. Its own README describes that stealth benefit as theoretical. The FAQ draws the practical boundary: OMK does not hide root, add StrongBox, repair a damaged TEE, or promise that a banking or payment app will accept the phone.

The supported production range is Android 12 through 17 on arm64-v8a, installed through KernelSU or Magisk while Android is running. Recovery installation is unsupported, and the documentation says to run only one keystore replacement at a time. This is a narrow security tool for a spare or recoverable device. A user who only wants Play Integrity or general root hiding is buying risk in the wrong part of the Android stack.

What happened when we ran it

Our sandbox installed 209 Rust packages in 8 seconds at commit a1f3241. The build then ran for 118 seconds and exited with code 101. Cargo reached bssl-sys 0.1.0, whose first source line deliberately raises a compile error saying it is a placeholder package and points readers to its README. The log does not show a later compiler or linker failure because the build stopped at that crate.

Tests failed for the same visible reason after 6 seconds, also with exit code 101. Compilation reached bssl-sys and stopped before the test binaries could run, so this is a failed test command rather than a report of passing or failing test cases. The checkout contained 481 files and about 87,079 source lines in 4 MB. Our scan found 2 CI workflow files, no Dockerfile, and a tests directory.

The official build replaces the placeholder BoringSSL crate

The repository's CI shows the missing preparation. It clones and builds BoringSSL, installs the Android toolchain and protocol-buffer compiler, configures Cargo for an Android target, then patches crates.io's bssl-sys name to the local BoringSSL Rust source. The project build script packages separate KeyMint and injector binaries into a module ZIP. A plain Cargo build in a general Rust container does none of that setup, which explains the exact boundary our run reached without claiming that later stages would pass.

That build path is substantial for a 4 MB checkout. Developers need an Android cross-compilation environment, a separately prepared BoringSSL tree, the local Cargo patch, and the project's packaging script. There is no Dockerfile that freezes those pieces into the repository. Downloading the attested release artifact is the sensible evaluation route for users. Source builders should reproduce the workflow in an isolated machine before changing the code or trusting a locally produced ZIP.

Two TOML files control identity, secrets, and app routing

config.toml contains the reported trust and device identity plus generated crypto seeds. injector.toml decides which packages are routed to OMK. The guide tells ordinary users to change only the scoop list, preserve the safety filters, and leave interception and generated crypto settings alone. It also warns never to publish crypto values, device identifiers, the key database, or an unredacted keybox. Those are operational secrets, even though the software itself is public.

A malformed live file is rejected while a component is running, but startup is harsher. Bad config.toml can prevent KeyMint from starting, while bad injector configuration disables OMK routing. Deleting a config file is a dangerous reset because new crypto values may leave old keys unreadable. Broad routing is worse: the FAQ says intercepting Android, system services, or unknown callers can break unlocking, app storage, or the user interface, and such setups fall outside project support.

Keybox and routing changes can strand existing app keys

OMK keeps System keys and OMK keys separate. Moving an app into or out of scoop does not copy its existing keys, so the app may fail to decrypt data or ask the user to register again. A keybox change can also alter the attestation identity that an app tied to its login. Open issue 74 reports random session loss in several apps; the maintainer replied that certificate-bound keys are retired as designed when the keybox changes, while saying they had not reproduced the other cases.

Backups therefore include 4 sensitive items: both TOML files, keybox.xml, and the OMK data directory. The FAQ says uninstalling the module does not convert OMK keys into System keys, and persistent data may remain outside the module folder. Deleting that data can permanently remove keys apps still need. This is why the right test device is one you can re-register, reset, or recover without losing irreplaceable information.

Active maintenance does not make the license commercial-friendly

GitHub recorded the last push on September 16, 2026. The repository had 357 stars and 5 combined open issues and pull requests when fetched, while the open FAQ issue was updated on September 18. Release v1.2.0 was published in June with injector routing, local Binder RPC, Android compatibility, and state-handling changes. That combination shows recent work and user reports, including an open Android 17 attestation report that supplied logs after the maintainer requested them.

Two licenses apply together. The repository declares AGPL-3.0-or-later, while its additional Chinese-language license prohibits commercial use and says its terms win where they conflict for code wholly owned by the author. That restriction alone rules out a paid product without separate permission. For noncommercial device research, OMK is unusually well documented and specific. Its failed plain build, private key material, and ability to strand app data make the official ZIP on a disposable phone the only trial we would recommend.

Alternatives

ProjectWhat it isPick it when
TrickyStoreAn Android module that modifies keystore behavior for attestation use cases.pick this instead when you want the better-known TrickyStore module path and do not need OMK's fuller AOSP-style service replacement.
TEESimulatorA software simulator for Android hardware-backed keys and key attestation.pick this instead when a narrower attestation simulator matches the experiment better than replacing the selected-app KeyMint route.

What people are saying

  1. [github-trending] qwq233/OhMyKeymint

Sources

  1. OhMyKeymint README
  2. OhMyKeymint configuration guide
  3. OhMyKeymint FAQ
  4. Oh My Keymint additional license
  5. OhMyKeymint v1.2.0 release
  6. Login session issue 74
  7. Android 17 attestation issue 76
  8. OhMyKeymint CI build workflow

More dev tools reviews

lore · tty7 · makepad · Codex-X · gitdiagram · grok-build · the whole board →