Releases: jegly/Box
Box v1.0.4
Box 1.0.3
custom-rom-support v1.0.4
custom-rom-support — v1.0.4
What's new in v1.0.4
Bug fixes
- Fixed missing GPU option on some devices. — GPU is now available as an accelerator alongside TPU and CPU
- Fixed accelerator setting resetting to GPU after app is fully closed — your chosen accelerator (TPU, GPU, or CPU) now persists across app restarts

custom-rom-support-v1.0.3
v1.0.3 — Non-Stock Android (GrapheneOS / LineageOS / CalyxOS)
Bug Fixes
1 - Images now persist across sessions — Photos sent in a conversation are saved to local storage and correctly restored when returning to
or reopening a conversation. Previously, images would disappear after navigating away or restarting the app.
2 - Benchmark no longer crashes when NPU is unavailable — Running the benchmark on devices without NPU/AICore support (e.g. older Tensor
chips on GrapheneOS/LineageOS no longer causes a crash. The backend now correctly falls back to CPU in this case.
3 - Accelerator setting no longer resets after navigation — Changing the accelerator (CPU / GPU / NPU) in model config is now saved
correctly. Previously the setting would silently revert to its default value after navigating away and returning.
Huge thanks to aryoda for pointing out these bugs !
Custom Rom Support v1.0.2
I have now created a separate branch called custom-rom-support, along with a corresponding release section specifically for users on third-party operating systems.
If you are using a custom ROM, please use the custom-rom-support
branch/release instead of the main branch. This branch supports TPU/NPU
acceleration on Tensor devices; however, Snapdragon acceleration
remains untested.
Please expect broken features if you are using a custom ROM and running the current release or branch from main. A separate APK and branch (custom-rom-support)
are now available for users on third-party Android operating systems,
including but not limited to LineageOS, GrapheneOS, and CalyxOS.
Note:
The primary reason for these limitations is that third-party operating
systems typically lack AICore and system-level Text-to-Speech (TTS)
components. As a result, features such as voice-to-voice mode and
NPU/GPU acceleration are either unavailable or significantly impaired on
these ROMs.
- Stock Android users should continue using the standard main branch build — this build is
not needed and adds no benefit on stock Android- Amy (Piper TTS) must be downloaded from the Voice tab before voice reply works offline
custom-rom-support — Release Notes
Custom ROM Support (GrapheneOS · LineageOS · CalyxOS)
This release brings full voice-to-voice AI chat support for custom Android ROMs that ship
without Google services (AICore, Google TTS, Google STT).
What's New
Voice-to-Voice on Custom ROMs
- Microphone button now works on GrapheneOS and other de-Googled ROMs using the built-in
Whisper speech recognition engine - Voice Activity Detection (VAD) automatically sends your message after 1.5 seconds of
silence — no need to press a button to stop recording - Speaker button now works on custom ROMs using the Amy (Piper) TTS engine — auto-downloads
and initialises on first use - Real-time voice reply now streams speech sentence-by-sentence as the AI generates,
matching stock Android behaviour - Amy TTS pre-loads when AI Chat opens so real-time playback is ready from your first
message - Microphone automatically restarts after the AI finishes speaking, enabling continuous
hands-free conversation
Performance
- AI Chat inference is now fast on Tensor G5 devices running GrapheneOS — routes through
Android NNAPI to reach the TPU without requiring AICore
Bug Fixes
- Fixed Amy TTS model download failing on GrapheneOS due to a HuggingFace redirect URL bug
- Fixed mic not auto-restarting after AI response on custom ROMs
Settings
- Added "Non-Stock Android" notice in Settings clarifying this build is intended for custom
ROM users
Box
v1.0.2 — Voice Mode & Vision Talk / NPU/TPU Acceleration
New Features
Free Talk — Hands-Free Voice Conversation
- Continuous speech-to-speech AI conversation with no button press between turns
- Tap the mic button to start, speak naturally, AI replies and listens again automatically
- Real-time TTS: each sentence is spoken as it generates rather than waiting for the full response
- Enable Real-time voice reply in Settings to turn it on
Vision Talk — Live Camera + Voice AI
- Stream your back camera live to the AI during a voice conversation
- Point at anything and ask about it out loud — AI sees the current frame and speaks the answer back
- Fully hands-free: mic → AI sees scene → AI speaks → mic restarts automatically
- Requires a vision-capable model (Gemma 4 E2B or E4B)
TTS Voice Picker
- Choose your preferred offline system voice in Settings
- Only locally installed voices shown (network-dependent voices filtered out)
- GrapheneOS / de-Googled ROM users: install RHVoice or eSpeak NG from F-Droid
LaTeX Math Rendering
- Greek letters, operators, fractions, integrals, summations rendered inline as Unicode
- Works automatically in assistant messages
Improvements
- GGUF model context size now scales with file size to prevent hangs on Android 17 Beta 4 (MemoryLimiter) — large models use a reduced KV cache automatically
- Removed QNN Hexagon skeleton .so libraries ( will be added back next release to support snapdragon acceleration )
- Removed interactive map skill
Bug Fixes
- Fixed model initialization hanging indefinitely — now times out after 30 seconds with a clear error
- Fixed app crash on invalid task ID (force unwrap replaced with safe exit)
- Fixed real-time TTS stalling on responses with no sentence punctuation (code blocks, URLs now flush correctly)
- Fixed TTS audio playback wiring in AI Chat
Box
New Inference Engines
Local Diffusion (stable-diffusion.cpp)
On-device image generation powered by stable-diffusion.cpp. Runs Stable Diffusion 1.5 in GGUF format, fully offline. Configurable steps, CFG scale, seed, and image size presets. Import
your own GGUF diffusion models.
Voice (whisper.cpp)
On-device speech-to-text powered by whisper.cpp. Record audio or pick a WAV file, transcribe offline. Supports Whisper Tiny through Small in multiple languages. Audio never leaves the
device.
NPU / TPU Acceleration
All Qualcomm Hexagon NPU variants (Snapdragon 8 Gen 2 / 8 Gen 3 / 8 Elite / newer), Google Tensor TPU (Pixel 8–10), and MediaTek NPU bundled in a single APK. Select NPU in the model
accelerator dropdown — Box auto-detects the chip at runtime.
Security
- Biometric App Lock — Optional lock via BiometricPrompt, re-prompts on every foreground
- Encrypted Chat History — All conversations persisted to SQLCipher-encrypted Room database (AES-256 at rest)
- Passphrase isolation — BiometricEncryptionManager + PassphraseHolder keep the DB key in memory only while authenticated
- Hard Offline Mode — Toggle in Settings forces full airgap; all download attempts are blocked
- Security Audit Log — On-device append-only log of security-relevant events
- Prompt sanitisation — SecurityUtils.sanitizePrompt() strips control characters before inference and persistence
- Tapjacking protection — filterTouchesWhenObscured on the chat scaffold
Chat
- Conversations persist across sessions and resume where you left off
- Chat History screen — browse, resume, or delete past conversations
- Multimodal input in AI Chat with Gemma 4 E2B / E4B — attach documents, record audio, take photos
- Improved message input and scroll behaviour
Agent Skills
New built-in skills:
- Budget Tracker
- Password Generator
- Translator
Updated skills: Calculate Hash, QR Code
Removed: Kitchen Adventure, Text Spinner
Model Management
- Import any GGUF file from local storage at runtime
- Set display name and accelerator (CPU / GPU / NPU) at import time
- Fixed: models appearing multiple times after screen rotation (deduplication guard in loadModelAllowlist)
- Fixed: Voice and Local Diffusion showing 0 models after allowlist reload
- Gradle 9.4.1 compatibility
- stable-diffusion.cpp and whisper.cpp added as native submodules
- llama.cpp updated
- Plus a whole lot more !
v1.0.0
Box v1.0.0 — Initial Release
Box is a security-hardened Android app for running large language models fully on-device. Forked from Google AI Edge Gallery with significant privacy and usability improvements.
Features
- On-device LLM inference via LiteRT and llama.cpp
- GGUF model support — import any compatible GGUF model from local storage
- Accelerator selection — choose CPU, GPU, or NPU per model
- Encrypted chat history — all conversations stored with SQLCipher encryption
- Biometric lock — optional fingerprint/face authentication to access the app
- Offline mode — block all network requests, run entirely air-gapped
- Chat persistence — conversations are saved and automatically resumed per model
- Copy to clipboard — long-press any AI response to copy it
Privacy
- No telemetry or data collection
- All inference runs locally on-device
- Chat history never leaves the device
- FLAG_SECURE prevents screenshots and screen recording
Notes
- Gemma models are subject to the Gemma Terms of Use
- GGUF import requires models compatible with llama.cpp



