ThinkHearth
One AI model.
Every app gathers round.
ThinkHearth keeps a single private AI model on your phone and lets your other apps share it. You download the model once, it runs on the phone itself, and what you type stays on the device.
Why share one model?
On-device AI models are several gigabytes each. When every app ships its own, your storage and memory fill up with copies of the same thing.
Today: one model per app
Each app downloads and loads its own copy.
With ThinkHearth: one shared model
Apps ask ThinkHearth, which runs the one model for all of them.
What it does
A small app that stays in the background and works only when another app asks it to.
Download once
One copy of the model, stored in one place, used by every app that supports ThinkHearth.
Private by design
The model runs entirely on your phone. Prompts and replies are never sent to a server.
You decide who uses it
The first time an app asks to use the model, ThinkHearth asks you to allow it. You can revoke access at any time.
Warm when needed
The model loads when an app needs it and unloads after a quiet spell, freeing memory for everything else.
For app developers
Add on-device AI to your Android app in minutes with the ThinkHearth SDK. There's no model to bundle, no download code to write and no server to run. Your app asks ThinkHearth, and the reply is made on the phone. If ThinkHearth isn't installed, your app can fall back to its own model or hide its AI features.
Kotlin
implementation("com.thinkhearth:client:1.0.0")
val hearth = ThinkHearthClient.connect(context)
?: return useFallback()
if (hearth.accessState() != AccessState.ALLOWED)
ask.launch(ThinkHearthClient.accessRequestIntent())
hearth.generate(GenerateRequest(prompt = "Hello"))
.collect { if (it is GenerateEvent.Token) append(it.text) }
What the SDK handles for you
- Finding ThinkHearth and connecting to it, with nothing to add to your manifest.
- Permission: ThinkHearth shows its own approval screen, and the person allows your app once.
- Streaming: replies arrive a few words at a time as a Kotlin
Flow, and cancelling stops the model straight away. - Your settings, per request: instructions, chat history, photos, temperature, top-K, top-P, reply length and thinking.
- Embeddings for search and "find similar", from the same connection.
if (!await ThinkHearth.isInstalled()) return useFallback();
if (await ThinkHearth.accessState() != AccessState.allowed &&
!await ThinkHearth.requestAccess()) return;
await for (final e in ThinkHearth.generate(
const ThinkHearthRequest(prompt: 'Hello'))) {
if (e is ThinkHearthToken) append(e.text);
}
Everything your app sends stays on the phone. Each request can only use the model after the person has allowed your app, and they can switch it off at any time.
Privacy
ThinkHearth is designed so that your words stay on your phone.
No cloud
All AI processing happens on the device. Web search in ThinkHearth's own chat is off unless you turn it on.
No accounts
There's nothing to sign up for, and nothing identifies you.
No tracking
No analytics or advertising, and this website doesn't use cookies.