An offline, on-device LLM browser for Android & iOS. Pages never leave your phone.
Browser LLM is an open-source mobile browser with a built-in AI assistant that runs 100% on your device. Summarize, explain, translate or Q&A the page you're viewing — no servers, no telemetry, no API keys, no cost.
- 🛡️ Private by design. The assistant only ever sees the page text you're looking at. Nothing is uploaded.
- 📴 Works offline. Once the model is downloaded, the assistant works on a plane, in a tunnel, anywhere.
- 💸 Free forever. Default model is SmolLM2-1.7B-Instruct under Apache 2.0.
- 📱 Cross-platform. React Native (New Architecture) + Expo, runs on iOS and Android.
🚧 Early development. MVP (Phases 0–2 of the roadmap) is being built in the open. Expect breaking changes.
┌────────────────────── React Native UI ──────────────────────┐
│ Tabs · Address Bar · Assistant Bottom-Sheet · Settings │
├──────────────────────────────────────────────────────────────┤
│ WebView Pool ────────► Readability.js injection │
│ │ │ │
│ │ ▼ │
│ │ { title, textContent } via postMessage │
│ ▼ │ │
│ AssistantContext ◄─────────────┘ │
│ │ │
│ ▼ │
│ LlmService ──► llama.rn (Turbo Module, native thread) │
│ │ │
│ ▼ │
│ SmolLM2-1.7B Q4_K_M (GGUF, ~1 GB) │
└──────────────────────────────────────────────────────────────┘
The browser is just react-native-webview.
The assistant is llama.rn (a Turbo
Module wrapping llama.cpp) running on
its own native thread. Page text is extracted with Mozilla's
Readability.js, the same library
Firefox Reader View uses.
Every other "AI browser" (Arc, Brave Leo, Edge Copilot, Opera Aria, …) ships your browsing context to a cloud model. We think your browser history is the single most sensitive dataset you produce, and it shouldn't be a training set.
This project is the simplest demonstration that a useful AI browsing assistant can run entirely on the device you already own.
This roadmap is tracked in /home/.../plan.md for contributors; the public
milestones are:
- Phase 0 — Scaffold ✅ Expo bare workflow, TypeScript, New Architecture.
- Phase 1 — Browser MVP 🚧 Tabs, address bar, history, bookmarks, incognito, settings.
- Phase 2 — On-device LLM 🚧 SmolLM2-1.7B download, streaming chat, "Summarize this page" preset, memory-safety guards.
- Phase 3 — Dynamic model selection. Hardware-tiered model wallet (Tiny Llama → SmolLM2 → Qwen3-1.7B → Qwen3-4B / Phi-4-Mini), recommended via a hosted JSON manifest so we can ship new models without an app update.
- Phase 4 — Polish & differentiation. Long-press → "Ask assistant", reader mode, translate, ad/tracker blocklist, optional Apple Foundation Models routing on iOS 26+, optional MediaPipe LiteRT-LM / ExecuTorch path on Snapdragon NPUs.
- Phase 5 — Store release. App Store + Play Store submission with detailed reviewer notes on the on-device-only AI feature.
Requires Node 20+, JDK 17, Android Studio SDK; iOS additionally requires macOS + Xcode 15+.
git clone https://github.com/frederico-kluser/browser-llm.git
cd browser-llm
npm install
npx expo prebuild # generate android/ and ios/ folders
npm run android # or: npm run iosFirst launch will prompt you to download SmolLM2-1.7B-Instruct Q4_K_M (~1 GB). The model is fetched from Hugging Face and saved into the app sandbox; nothing is bundled in the binary (this keeps installs under iOS's 200 MB cellular cap and Play Store's 200 MB AAB cap).
| Tier | Device class | Default model | License | Q4_K_M size |
|---|---|---|---|---|
| 0 | 3–4 GB RAM | TinyLlama-1.1B-Chat | Apache 2.0 | 0.67 GB |
| 1 | 6–8 GB RAM | SmolLM2-1.7B-Instruct | Apache 2.0 | 1.06 GB |
| 1+ | 8 GB RAM | Qwen3-1.7B | Apache 2.0 | 1.11 GB |
| 2 | 12 GB+ RAM | Qwen3-4B (opt-in) | Apache 2.0 | 2.74 GB |
| 2 | 12 GB+ RAM | Phi-4-Mini (opt-in) | MIT | 2.40 GB |
(Phase 3 will surface these in-app. Phase 2 ships SmolLM2-1.7B only.)
We collect nothing. There is no analytics SDK, no crash reporter, no remote config. The only network traffic the app makes is:
- Web requests you initiate by typing a URL or following a link.
- The one-time model download from Hugging Face.
- (Phase 3+) A periodic refresh of the public model manifest hosted at
https://github.com/frederico-kluser/browser-llm(GitHub Pages).
The full list of dependencies and what they talk to is in
PRIVACY.md.
PRs and issues welcome. See CONTRIBUTING.md.
Apache License 2.0. Model weights are distributed under their own licenses — SmolLM2 is Apache 2.0; see each model card on Hugging Face.
llama.rn— React Native binding forllama.cpp.llama.cpp— the inference engine.- SmolLM2 by Hugging Face — the default model.
- Readability.js by Mozilla — page text extraction.
- Expo and the React Native community.