PocketPal AI
An MIT-licensed phone app that runs language models on the phone itself. Download a quantized GGUF model once, and chat with it with the radio off — no account, no server, no subscription. React Native and TypeScript over llama.cpp (cross-wiki, llm-inference-wiki), shipping on iOS/iPadOS and Android.
8,137★ / 850 forks / 181 open issues / 67 watchers, created 2024-08-25, last pushed 2026-08-30, 741 commits, latest release v1.17.2 (2026-08-25). Figures read 2026-09-01 from the GitHub API. T1: the project's own repository and README.
It is the second Android application in this corpus to put a language model on the device — after
termux-launcher — and the two make an unusually clean pair, because they agree on the goal and
share almost no other decision. Where that one is a terminal launcher distributed as a bare APK by an
author who calls the project "entirely vibe-coded," this one is a consumer app on both vendor stores
with ESLint, tsc --noEmit, Jest, locale validation and Conventional Commits enforced by a Husky
hook before a pull request is looked at.
The privacy claim, and the exits the project names itself
The pitch is the corpus's familiar one: "every prompt, response, and document stays on your device. Nothing is uploaded or stored on external servers." What is new is the paragraph directly under it:
Privacy note: The only data that ever leaves your device is what you explicitly choose to share — benchmark results (if you opt into the leaderboard) and feedback you submit through the app.
That is the first source held here that writes down its own exceptions in the same breath as the claim. hometube promises "no cloud dependencies" and tells you to bring cookies several paragraphs later; the reader has to notice the contradiction. Here the reader is handed it.
The list is still not the whole list, and the rest is legible elsewhere in the same README:
- Model download. The app is useless until a multi-gigabyte GGUF file arrives from somewhere. Hugging Face is a first-class source, and gated models need the user's own HF access token.
- PalsHub. A hosted marketplace at
palshub.aifor sharing and buying "Pals" — the app's personas — including premium ones via in-app checkout, which routes money and identity through the store's payment rails. The README states that core chat works with no backend keys and that "only PalsHub/auth features need additional configuration," so this part is separable rather than load-bearing. - The leaderboard. Opt-in benchmark submission to a project-run site.
So the accurate reading is narrower than "nothing leaves": inference never leaves, and every other feature that touches a network is opt-in and named. That is a stronger position than anything else in this corpus sells, and it is still weaker than anysoftkeyboard's despite sounding stronger. The keyboard's guarantee is architectural — it requests no network permission, so it cannot leak what it cannot send. PocketPal's is a policy carried out by code that downloads models, calls a marketplace and posts benchmarks. Both are the projects' own word; only one of them is checkable by looking at a manifest. Nobody in this corpus has checked either.
Distribution: the store is the offer, the APK is unlabelled
| Project | Where the project sends you |
|---|---|
| anysoftkeyboard | f-droid and Google Play (alpha/beta/stable) |
| termux (cross-wiki) | F-Droid canonical; Play build called an "experimental branch" |
| termux-launcher | bare APKs from GitHub Releases — no store at all |
| tuios | six channels |
| PocketPal AI | App Store and Google Play — with an APK on every release that the README never mentions |
The "Get the app" section is two rows and two badges, and the three numbered steps under it start at
"install from the App Store or Google Play." There is no F-Droid listing — the F-Droid API returns
404 for com.pocketpalai, checked 2026-09-01 — and the word never appears in the README, where the
build instructions sit under "For developers" as a contributor workflow.
But every release attaches app-prod-release.apk, and people take it. Read 2026-09-01: 6,154
downloads on v1.17.2 (published 2026-08-25), 3,520 on v1.17.1, 3,144 on v1.17.0, and 16,891 on
v1.16.1 from 2026-07-07. Thousands of installs per release through a channel the project documents
nowhere.
That is a third position, and this corpus did not have it. termux-launcher makes the APK the distribution and says so. anysoftkeyboard and termux name f-droid as home. PocketPal offers the stores, ships the escape hatch, and points at neither — so the sideload path works, is used, and reaches nobody who does not already think to look in Releases. On a de-Googled phone the app is entirely installable; you simply have to find out that yourself.
The wider point still holds: where computation happens and who controls distribution are separable choices. This project takes the maximal position on the first and a store-first, discoverable-only-to-the-curious position on the second.
How it runs a model on a phone
The README lays out a four-layer stack with a strictly top-down dependency direction:
| Layer | What runs there |
|---|---|
| UI & tool use | React Native 0.82.1 / React 19.1.1 (New Architecture), React Native Paper, MobX 6, chat history in WatermelonDB. An AgentRunner drives each turn — streams tokens, dispatches tools, feeds results back |
| Bridging | llama.rn 0.13.0-rc.1 over JSI for the LLM; react-native-speech 2.3.1 + onnxruntime-react-native 1.23.2 for speech |
| Engine | llama.cpp on GGUF for language models, ONNX Runtime for the voices |
| Hardware | CPU everywhere, GPU (Metal on iOS, OpenCL/Adreno on Android), NPU (Qualcomm Hexagon), with graceful fallback and partial layer offload |
Two details of that stack matter beyond the mechanics:
The user picks the quantization. The download flow asks you to "choose a quantization that fits your device's memory and storage." That is this project's version of the price every source here pays for the posture — anysoftkeyboard gives up cloud prediction, ever-gauzy gives up someone else's disaster recovery, and PocketPal hands the operator a memory-versus-quality decision that a hosted assistant makes invisibly and better. The README never frames it as a cost; that reading is this wiki's, not the project's.
There is an agent loop on the phone. "Talents" are tools the model can call mid-conversation —
calculate, datetime, render_html — registered in a TalentRegistry and dispatched by the
AgentRunner. Three tools is a small catalogue, and expanding it is the only item on the
project's roadmap.
Voices run through a second engine entirely: TTS engines for Kokoro (cross-wiki, kokoro in speech-audio-wiki), kitten, supertonic and the system voice, all ONNX, all on-device.
Measuring itself in public
The app benchmarks tokens/sec and memory locally, and will submit the result to a project-run AI Phone Leaderboard if the user opts in. No other project in this corpus builds a measurement apparatus into the product and publishes the comparison. The data is user-submitted and device-heterogeneous, which makes it a scoreboard rather than a measurement — but a scoreboard is already a different relationship to evidence than "rock-solid on my Nothing Phone (2)."
One author, and a bot in second place
494 of the 741 commits are Asghar Ghorbani's. The next contributor is actions-user with 104 —
the project's own automation — and then a human tail of 20, 13 and 12. Eleven languages are
translated on Weblate, with a yarn l10n:validate gate on placeholder integrity, and the
translation route is the one place where the contributor base is genuinely wide.
The concentration is the corpus's standing shape (calibre, tuios, termux-launcher), and this is its sharpest instance: a project with 8,137 stars, two store listings, a payment flow and a public leaderboard, resting on one person in Germany who accepts GitHub sponsorships and sells no tier of the app.
Standing caveats
- Every number here is a 2026-09-01 snapshot from the GitHub API and the README.
- The privacy claim is the project's own. Nothing here is an audit, and the app plainly holds the network capability its claim asks you to trust it not to misuse.
- The leaderboard is user-submitted. Treat it as a scoreboard, not a measurement. (Re-checked 2026-09-14: a reviewer's network-traffic monitoring — MeetAITools' 13-app offline test — reports zero outbound traffic during conversations; a monitoring session is not an audit, and model downloads and the opt-in leaderboard do use the network by the app's own privacy policy.)
Related
foss-application · f-droid · termux-launcher · anysoftkeyboard · hometube · synthesis
Cross-wiki: llama-cpp and local-llm-stack (../llm-inference-wiki) hold the engine and the
platform-versus-engine distinction this app sits on top of; kokoro (../speech-audio-wiki) holds
the voice model. The application is this spoke's.
Name collision, for future ingests. This project's author is Asghar Ghorbani (Germany,
@ghorbani_asghar). He is not the Ghorbani of the Exchange Market Algorithm paged in../optimization-algorithms-wiki. Different people, same surname.