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

  1. Wake - on-device wake word detection listens for "Hey Hark" and activates the assistant hands-free.
  2. Listen - on-device speech-to-text captures your voice command.
  3. Discover - scans installed apps for OACP capability manifests via Android ContentProvider.
  4. Resolve - two-stage on-device AI pipeline matches your command to the right app action and extracts parameters.
  5. Dispatch - fires an Android Intent to the target app (broadcast for background, activity for foreground).
  6. 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

Qwen3 0.6B

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.

Assistant overlay

Long-pressing the home button launches a lightweight overlay panel that floats on top of whatever app you are using. This is the fastest way to interact with Hark because the overlay loads zero AI models on its own. It is a thin UI shell: instant startup, no lag.

Under the hood, Hark uses FlutterEngineGroup to spin up two Flutter engines. The main engine runs the heavy lifting (STT, NLU, TTS, model inference). The overlay engine only renders the chat UI. State is relayed between the two engines through a Pigeon-generated bridge that passes through the native OverlayActivity on Android.

The overlay shows chat bubbles decorated with the target app's icon, and you can toggle between keyboard and microphone input. By default, the mic starts listening automatically when the overlay opens. If you want more space, tap "Open full app" to continue the same conversation in the full Hark chat screen with no context lost.

The session persists when you switch between apps (the overlay stays on screen). Pressing back dismisses the overlay and resets the session.

OACP-enabled apps

Hark works with any app that implements OACP. These are tested and working today:

App

What you can do

Breezy Weather

"What's the weather?" - async result spoken back

Binary Eye

"Open the QR scanner" / "Create QR code for hello world"

Voice Recorder

"Start audio recording"

OACP Test App

"Increment counter" / "What's the counter at?"

Wikipedia

"Search Wikipedia for Flutter"

ArchiveTune

"Play Lonely by Akon" - music playback by voice

Libre Camera

"Take a photo" - camera launch by voice

Live Darbar

"Play live kirtan" - Sikh devotional streaming

Each is a fork showing exactly what was added to support OACP. Check the diff against upstream to see how simple the integration is.

See the full list on the ecosystem page. Want to add OACP to your own app? See Add OACP to Your App.

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

  1. Grant microphone permission when prompted.
  2. Download the on-device models from the Local Models screen (EmbeddingGemma + Qwen3).
  3. Install any OACP-enabled app.
  4. Tap the mic and try a voice command.

Roadmap

The short version: the protocol and Kotlin SDK ship today, and the lightweight assistant overlay is shipped. Wake word detection ("Hey Hark") is in progress with in-app listening working now and a background service coming next. Hark is also focused on self-hosted inference, better speech input, and chat persistence. See the roadmap for the tracked priorities.

Last Edited: April 11, 2026