Hark Overview
Hark is the open-source voice assistant that discovers and controls Android apps using on-device AI.
The name "Hark" means "to listen", and it is also short for Harkirat.
Hark is the open-source assistant built on OACP. It discovers what installed apps can do and lets you control them by voice on-device.
How it works at a glance
- Listen - on-device speech-to-text captures your voice command.
- Discover - scans installed apps for OACP capability manifests via Android
ContentProvider. - Resolve - two-stage on-device AI pipeline matches your command to the right app action and extracts parameters.
- Dispatch - fires an Android
Intentto the target app (broadcast for background, activity for foreground). - Respond - receives async results from the app, shows them in chat, and speaks them aloud.
The user never leaves Hark. Apps do the work in the background and send results back.
On-device AI pipeline
The shipped local pipeline has two stages:
Stage | Model | What it does |
|---|---|---|
Intent selection | EmbeddingGemma 308M | Semantic similarity ranking against all discovered capabilities. Confidence-gated at 0.35. |
Slot filling | Extracts parameters (numbers, names, durations) from the matched utterance. |
This keeps the matching step cheap and only sends the selected action schema to the generative model. For the full reasoning, see NLU architecture.
OACP-enabled apps
Hark works with any app that implements OACP. These are tested and working today:
App | What you can do |
|---|---|
"What's the weather?" - async result spoken back | |
"Open the QR scanner" / "Create QR code for hello world" | |
"Start audio recording" | |
"Increment counter" / "What's the counter at?" | |
"Search Wikipedia for Flutter" | |
"Play Lonely by Akon" - music playback by voice |
Each is a fork showing exactly what was added to support OACP. Check the diff against upstream to see how simple the integration is.
Want to add OACP to your own app? See Getting started with OACP.
Getting started
Prerequisites
- Flutter (stable channel, >= 3.11)
- Android device (a physical device is recommended because assistant integration and speech flow are more realistic there)
- enough storage for the local model downloads
Build and run
First launch
- Grant microphone permission when prompted.
- Download the on-device models from the Local Models screen (EmbeddingGemma + Qwen3).
- Install any OACP-enabled app.
- Tap the mic and try a voice command.
Roadmap
The short version: the protocol and Kotlin SDK ship today, and Hark is focused next on self-hosted inference, better speech input, and a lighter assistant UI. See the roadmap for the tracked priorities.