Mobile node · Gemma 4 E4B (multimodal audio) · LiteRT-LM · jurisdiction: visit TTL
.wav
audio directly to Gemma 4 E4B via LiteRT-LM, with no separate STT pipeline. In this browser demo
we accept text instead of audio (browsers can't ship an Android model). The compilation logic and
schema validation are the same as on the device. If the system can't translate with
enough confidence, it won't apply — it will tell you to rephrase.
Imagine you're in the plot. Type what you would say to the farmer's phone — short, colloquial,
not a structured command. Pollen compiles your voice into a MissionPatch the
Rhizome can apply immediately. No round-trip to the cloud, no waiting until the farmer
is back home.
Awaiting input...
The browser demo above proves the architecture. The real proof is Gemma 4 E4B running on a pocket device with no network. Pollen ships in two flavors:
Lightweight build with deterministic contract inference. No model bundled, no OOM. Runs on any Android emulator or low-RAM phone. Use this to walk through the UI.
# Build and install the demo flavor cd code/pollen ./gradlew assembleDemoDebug adb install app/build/outputs/apk/demo/debug/pollen-demo.apk
Pollen build guide → Demo inference — no model file needed.
Full build with the LiteRT-LM engine. The model file (gemma-4-E4B-it.litertlm, 3.6 GB)
is side-loaded separately. Requires Android 12 / API 31+, 12 GB RAM recommended (16 GB ideal),
at least 6 GB free. CPU runtime is the stable path; GPU/NPU varies by device.
Three steps to install Pollen device flavor with real Gemma 4 E4B on your phone:
# 1. Build and install the APK (with LiteRT-LM engine) cd code/pollen ./gradlew installDeviceDebug # 2. Download gemma-4-E4B-it.litertlm (3.6 GB) from project storage # to your computer. # 3. Side-load the model into the phone adb push gemma-4-E4B-it.litertlm /data/local/tmp/ # Open Pollen on your phone — voice + chat run 100% offline.
Four checks, in order. If any fails, Pollen refuses and asks the farmer to rephrase — it never applies a low-confidence translation.
MissionPatch schema.logprobs, the threshold is 0.7.
Full detail in the Pollen README — Anti-nonsense logic
section. The Kotlin implementation lives in code/pollen/app/src/main/kotlin/.../inference/MiniEvaluator.kt
and the four cases are covered by MiniEvaluatorTest.kt
(REFUSE_RETRY, REFUSE_HARD, APPLY_AS_IS, APPLY_CONSERVATIVE).