AI that works when the internet doesn't.
An open-source research assistant that runs entirely on your phone, and shows where every answer came from.
Get it · How it answers · Benchmarks · Requirements · Docs · Manifesto
Search and chat assistants stop working the moment you lose signal: on a plane, a trail, a border crossing, a blackout. BOAR downloads a small language model and the knowledge you pick once, then answers in airplane mode, with no account, no server and no Google Play Services.
It started from Vitalik's call for an offline research tool that is "more than half as good" as search plus a frontier model, running an extreme mixture of experts that mostly sits on disk. That model doesn't exist yet, so BOAR is two things: a useful offline companion today, and a workbench that measures how close a phone can get. What we believe: MANIFESTO.md.
Android first. main is the Android app: an APK you install yourself, with no Play Store or Google account needed. Search, packs, models, measurements and sharing are one shared engine; on top of it sits an app built for mid-range phones, in the Campfire and Moonlight themes (src/ui-android). The iPhone app is built from the same engine on the ios_android branch.
First launch downloads an answer model plus a small embedding model: Qwen3-4B (about 2.5 GB) by default, or the compact Qwen2.5-1.5B (about 1 GB) for phones with less RAM. That is the only network use the app needs. The network permission stays for two things you start yourself: downloading more models or packs, and searching Hugging Face for other GGUF models. Why the permission is present but unused during chat: ARCHITECTURE.md.
Routing picks how deep to answer, never which model writes a normal answer:
an instant source sentence (no LLM, under 1 s), a fast answer from your
model over compressed sources, or a deep answer from a large MoE or several
passes ("Go deeper"), checked by a second model. Retrieval is local and hybrid: SQLite FTS5
keyword search plus on-device embeddings. Inference is llama.cpp via llama.rn.
Every answer records the model, load time, time to first token, tokens/sec,
memory and what it retrieved. Details: docs/ADAPTIVE_ROUTING.md.
- Built in: Wikipedia articles, plus the Standard (+1,000 topics) and Full (+4,000) libraries. The Encyclopedia setup adds 50,000 Wikipedia Vital Articles.
- Knowledge packs: pre-indexed files such as Wikipedia Vital Articles, Emergency & preparedness, Ethereum & cryptography (KNOWLEDGE_PACKS).
- Places packs (in the iPhone app on
ios_androidfor now): OpenStreetMap restaurants and cafés with diet tags and hours, plus Wikivoyage listings. Download a city in setup or in Knowledge (Berlin is 3.3 MB for 15,278 places) (POI_PACKS). - Your files:
.txt,.md,.csv,.json,.pdf(selectable text, no OCR), chunked and embedded on the phone. Toggle, delete, or export a collection as a JSON pack to share over Bluetooth or Nearby Share (USING).
| Model | Architecture | Median tok/s | Peak memory |
|---|---|---|---|
| LFM2.5-8B-A1B | MoE, 8B total, ~1.5B active | 14.8 | 5.2 GB |
| Qwen2.5-1.5B (compact) | dense, 1.5B | 11.4 | 3.1 GB |
| Phi-3.5-mini | dense, 3.8B | 4.0 | 4.8 GB |
| Qwen2.5-7B | dense, 7B | 2.7 | 5.1 GB |
Xiaomi 2311DRK48G, Dimensity 8300, 11.6 GB RAM, 17-question evaluation set, on a hot phone (24 Sep 2026).
Later runs, with the phone kept cool and the model kept loaded: Qwen2.5-1.5B at 16.8 tok/s on the same X6 Pro (1 Oct) and 19.6 tok/s on a POCO F3 (Snapdragon 870, 8 GB; 29 Sep). On the X6 Pro the first word comes after 1.6 s when no sources are needed and 6.8 s with four full passages, which is why fast answers now send only the sentences that answer.
- The MoE model is as fast as the 1.5B dense model while carrying 8B parameters, and it was the only one to get the multi-step RAM-budget question right.
- Its weak spot: it reasons before answering, and with a 512-token budget 4 of 17 answers ran out before the final answer.
- Not every MoE loads yet: Instella-MoE-16B-A3B fails on this llama.cpp build, and the evaluation records that instead of skipping it.
Repeat or extend the runs on your own phone with one command: docs/DEVICE_EVALUATION.md. Raw files: docs/evidence.
Built for the poidh bounty #31, "Best Offline
AI Research App". Status of each requirement, with the benchmark files:
docs/COMPLIANCE.md. Submission wallet:
0x32d1C8A4d133241a710d780f1198992A015Ea5Ed.
Android APK: download boar-v1.0.0-arm64.apk from the
latest release (122 MB, any
64-bit ARM phone), check it and install it:
sha256sum -c boar-v1.0.0-arm64.apk.sha256 # prints "boar-v1.0.0-arm64.apk: OK"
adb install boar-v1.0.0-arm64.apk # or open the file on the phoneThe v1.0.0 APK (Sep 26) downloads Qwen2.5-1.5B (about 1 GB) on first launch.
Builds from main let you pick the model in setup: Qwen3-4B (about 2.5 GB) is recommended on 12 GB phones and Qwen2.5-1.5B (about 1 GB) on smaller ones. They also have the Campfire and Moonlight look.
Guided setup: the wizard downloads and installs the APK over USB, builds from source (cloud via EAS, no Android SDK needed, or local), starts a live-reload dev build, or builds a bigger knowledge pack.
git clone https://github.com/rferrari/boar-app.git && cd boar-app
make setup # or: node scripts/setup.mjs · `make help` lists the single stepsiPhone: the iOS app is built from the same engine on the ios_android branch, together with its build guide and the steps to install it on your own iPhone with a free Apple ID.
| docs/demo | Videos and screenshots from a phone in airplane mode |
| docs/USING.md | Import documents, find more models, recover from a bad model load, reset the app |
| docs/DEVELOPMENT.md | Build commands, dev mode, Wi‑Fi troubleshooting |
| ARCHITECTURE.md | Design, first-run setup, network permission |
| docs/MODELS.md | Exact models, datasets and indexes |
| docs/KNOWLEDGE_PACKS.md | How knowledge packs are built and searched |
| docs/EVAL_QUERIES.md | The evaluation questions, including the set on Vitalik's topics |
| docs/RESULTS_SCORE.md | How shared runs are signed and scored |
| docs/RELEASING.md | Building and publishing a signed release |
| PRIVACY.md · TERMS.md | Privacy policy and terms (preview) |
License: LICENSE.













