Sahayak
Sahayak is an autonomous layer for Android devices, especially targeted towards indian population, working natively with speech Built ontop of gemma4
Core trick
Speech input drives Gemma 4 E4B reading the Android accessibility tree, typing text, and pausing before send for confirmation.
Description
Sahayak is an autonomous layer for Android devices, especially targeted towards indian population, working natively with speech
Built ontop of gemma4
README excerpt
# सहायक · Sahayak **An on-device Android agent that operates your phone for you — and knows when to stop and ask.** Built for the Google DeepMind Bangalore Hackathon (Gemma 4 track), 11 July 2026. Everything runs on the phone: **Gemma 4 E4B via LiteRT-LM**, on-device STT/TTS, a local SQLite memory. There is no server, and the app makes no network calls. Say *"आर्यन को मैसेज भेजो कि मैं कल घर आ रहा हूँ"* and it opens Messages, finds the contact, types the message — then **stops at the Send button and asks you**. --- ## Why this is an agent, not a chatbot with a microphone The Gemma track asks for the full **sense → decide → act → check** loop, local error recovery, local state, and clear boundaries for deferring to a human. That's the whole design: ``` SENSE accessibility tree → prune to interactive nodes → number them (Set-of-Mark) ↓ REPLAY? a learned step for this screen? → execute it, skip the model entirely ↓ DECIDE Gemma picks ONE action from the numbered nodes (constrained JSON) ↓ GATE irreversible? (send / pay / delete) → stop, ask the human, wait ↓ ACT tap / long-press / type (SET_TEXT, replace-semantics) / scroll / open-app ↓ CHECK wait for the window to settle → re-sense → did the subgoal actually happen? ↓ journal persist the step, advance — or recover ``` The model chooses one action per screen. It never plans blind: subgoals come from a plan made once per task, and every step is verified against the real screen afterwa