On-device · Zero cloud · Zero account

It drives your apps. It never phones home.

Zeruel listens, reasons, and taps through your real apps — WhatsApp, your inbox, your rides — with the wake word, the speech-to-text, and the model all running on the phone. No server, no account, no telemetry. Every action is hash-chained so you can prove what it did.

Cloud calls
0
On-device tests
144
Accounts required
none

The loop

Six jobs, all on the phone

A single request runs the whole way through without leaving the device. Each stage hands off to the next — the order is the product.

  1. 01

    Listen

    An always-on wake word (Vosk) starts on-device speech-to-text. The mic only records while listening.

  2. 02

    Reason

    Gemini Nano via AICore plans on-device, with a deterministic heuristic fallback when the model is absent.

  3. 03

    Plan

    The request becomes a typed, validated plan of skill actions — never a free-form script.

  4. 04

    Execute

    The three-tier action ladder drives the target app. Payment and biometric surfaces are never bypassed.

  5. 05

    Remember

    Personal data is embedded and indexed locally for semantic plus keyword recall — and forgotten on demand.

  6. 06

    Expose

    An MCP server lets Claude Code drive the phone over your LAN — API-key-gated, every call ledgered.

How it acts

The action ladder

Zeruel tries the most reliable, most private method first and climbs down only when it must. One step on the rung is the live workhorse; the other two are feature-detected.

Tier 1

AppFunctions

Calls an app's own exposed functions when the platform offers them. Cleanest path; feature-detected on newer Android.

feature-detected
Tier 2

Accessibility

Drives any app through the accessibility tree with per-app YAML drivers. The workhorse that needs no app cooperation.

live
Tier 3

Vision

Falls back to on-device screen understanding when the tree is opaque. Used only when Tier 2 cannot resolve a target.

feature-detected

The signature

Every action, hash-chained

Each action Zeruel takes is written to an on-device trust ledger. Every entry binds its own SHA-256 to the previous entry's hash, so editing any past record breaks every record after it. Tampering is not hidden — it is provable.

  • SQLCipher-encrypted, Keystore-managed keys
  • Per-action trust levels, default "ask every time"
  • Verify the whole chain from the Activity tab
  1. message Amma on WhatsAppcompleted
    prev 7a3f1cc91d04
  2. reorder my usual dosacompleted
    prev c91d042f8be7
  3. pay the electricity billneeds confirm
    prev 2f8be7b40a19
  4. query_memory · mcp / claude-codecompleted
    prev b40a19e5677d

What it carries

Capabilities, kept local

Voice

Wake word and speech-to-text via Vosk — open, no key, no account. Foreground service so it works with the screen off.

Memory

ONNX MiniLM embeddings plus full-text search over your SMS and messages. Per-source retention and a one-tap forget.

MCP server

A Ktor HTTP+SSE server on your LAN. Claude Code can query memory, list skills, and act — every call authenticated and ledgered.

Drivers

Per-app skills described in YAML and run against the accessibility tree. WhatsApp ships first; the rest are just manifests.

Under the hood

Built like production Android

Native Kotlin and Jetpack Compose, a Gradle multi-module graph with convention plugins, Hilt, and Room. Every device-only capability sits behind an interface with a fake, so the logic is unit-tested on the JVM — 144 tests and counting.

Get it running

Sideload in about five minutes

No Play Store, no account — broad-accessibility apps are sideload-only by design. Build the APK from source, then walk through the one-time grants. Tuned for the Galaxy S23.

  1. 1

    Install the APK

    Sideload the debug build and open Zeruel.

  2. 2

    Enable accessibility

    Settings → Services & access → enable the Zeruel accessibility service.

  3. 3

    Grant mic & SMS

    Zeruel asks on first launch. Both stay on the device.

  4. 4

    Nothing to download

    The voice + memory models are bundled in the APK and install themselves on first launch.

  5. 5

    Talk or type

    “message Amma on WhatsApp…”, confirm, and watch the ledger.

90-second on-device demo

airplane mode · no SIM · zero network

Voice → WhatsApp → trust ledger, then Claude Code drives the phone over your LAN.