LLM Hub is an open-source mobile app for on-device LLM chat, image generation, video generation, and music generation, available for both Android and iOS. It's optimized for mobile usage (CPU/GPU/NPU acceleration) and supports multiple model formats so you can run powerful models locally and privately.
π Featured: Featured by RunAnywhere on their website β read the LLM Hub iOS Case Study!
|
|
π» Desktop Versions Coming: Windows and macOS native apps are planned, bringing desktop-class experiences with advanced cursor integration and Claude Codeβlike capabilities.
| Vibe Coder Demo on iOS | Image Generation on Android |
|---|---|
![]() |
![]() |
| Vibe Coder using Gemma 4 model on iPhone (HTML preview) | Stable Diffusion image generation on Android |
| Tool | Description |
|---|---|
| π¬ Chat | Multi-turn conversations with RAG memory, web search, TTS auto-readout, and multimodal input |
| π€ AI Agent | [NEW] Autonomous device agent with function calling, interactive maps, device tools, MCP tools, and Termux terminal command generation on Android |
| π€ creAItor | [NEW] Design custom AI personas with specialized system prompts (PCTF) in seconds |
| π» Vibe Coder | [NEW] Explain your app idea and watch it be built in real-time with live HTML/JS preview |
| βοΈ Writing Aid | Summarize, expand, rewrite, improve grammar, or generate code from descriptions |
| π¨ Image Generator | Create images from text prompts using Stable Diffusion 1.5 with swipeable gallery |
| π΅ Music Generator | [NEW] Generate music and sound effects locally with SoundGen on Android and Magenta Realtime 2 on iOS |
| π Image Upscale | [NEW] Upscale images up to 4Γ using AI super-resolution models (RealESRGAN, UltraSharp) with NPU acceleration |
| π₯ Video Generator | [NEW] Generate videos from text prompts or images using Stable Video Diffusion on iOS |
| π Translator | Translate text, images (OCR), and audio across 50+ languages - offline |
| ποΈ Transcriber | Convert speech to text with on-device processing using Whisper models |
| π‘οΈ Scam Detector | Analyze messages and images for phishing with risk assessment |
| π£οΈ VibeVoice | [NEW] Hands-free AI voice chat |
The AI Agent turns on-device LLMs into autonomous assistants with device function calling capabilities:
- Device Actions & Function Calling: Embedded interactive maps (OpenStreetMap), calendar management, alarm setup, flashlight toggle, SMS & Email composition, cryptographic hashing (SHA-256/MD5), and math calculation.
- MCP Tools: Connect Model Context Protocol (MCP) servers so the Agent can discover and use external tools such as filesystem, search, document, memory, or custom hosted tools. MCP calls require user approval before execution.
- Termux Command Generation (Android): Automatically drafts shell/CLI commands targeting Termux environment execution (
RUN_COMMAND_SERVICEintent interface). - Interactive Pre-Execution Editing: Users can inspect and edit AI-generated shell commands before execution.
- Live Dark Terminal Container: Formats and streams live command outputs (
stdout/stderr) in a dark monospace terminal UI block. - AI Error Auto-Correction Loop: When a shell command fails or encounters permission/syntax errors, the agent automatically feeds the error logs back into the LLM for self-diagnostics and auto-generates fix commands.
The offline Transcriber feature on Android supports on-device Whisper models for high-accuracy local speech-to-text.
Android also includes Kokoro TTS models for local text-to-speech.
- 100% on-device processing - no internet required for inference
- Zero data collection - conversations never leave your device
- No accounts, no tracking - completely private
- Open-source - fully transparent
- GPU/NPU acceleration for fast performance
- Text-to-Speech with auto-readout
- RAG with global memory for enhanced responses
- Import custom models (.task, .litertlm, qnn,.mnn, .gguf)
- Direct downloads from HuggingFace
- 17 language interfaces
- Advanced Vibe Coder β Enhanced code generation with desktop IDE integration, cursor control, and Claude Codeβlike experiences
- OpenClaw-like Agent β Autonomous tool-using agent framework for complex multi-step tasks
- Advanced Media Generation β Professional-grade image/video synthesis with ComfyUI/Draw Things feature parity and extended controls
Quick Start
- Download from Google Play or the App Store, or build from source
- Open Settings β Download Models β Download or Import a model
- Select a model and start chatting or generating images
Technology
- Android: Kotlin + Jetpack Compose (Material 3), GenieX SDK (for LLM and VLM inference), WhisperKit (for ASR)
- iOS: Swift + SwiftUI, Run Anywhere SDK, Draw Things (MediaGenerationKit), Apple Foundation Model, whisper.cpp for on-device ASR
- LLM & ASR Runtime: MediaPipe, LiteRT, GenieX SDK (GGUF on Android), WhisperKit (ASR with TFLite + QNN NPU on Android), Llama.cpp (via Run Anywhere SDK on iOS), whisper.cpp on iOS for transcription
- Image & Video Gen: Draw Things (MediaGenerationKit) (iOS), Qualcomm QNN (Android)
- Music Gen: Magenta Realtime 2 with MLX/LiteRT (iOS), SoundGen with LiteRT (Android)
Acknowledgments
- GenieX SDK β GGUF model inference support (credit shown in-app About) β‘
- WhisperKit β On-device ASR with TFLite + NPU acceleration
- whisper.cpp β On-device ASR/transcription support on iOS
- Run Anywhere SDK β iOS model runtime and LLM execution framework π
- Draw Things β iOS image and video generation engine (MediaGenerationKit) π¨
- Google, OpenAI, Meta, Microsoft, IBM, LiquidAI, Mistral, Primsm ML, HuggingFace β model and tooling contributions
Development Setup
git clone https://github.com/timmyy123/LLM-Hub.git
cd LLM-Hub/android
./gradlew assembleDebug
./gradlew installDebugTo use private or gated models, add your HuggingFace token to android/local.properties (do NOT commit this file):
HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxSave and sync Gradle in Android Studio; the app will read BuildConfig.HF_TOKEN at build time.
To skip ads and unlock all premium features locally without a real IAP purchase, add this to android/local.properties:
DEBUG_PREMIUM=trueSet it back to false before making a production build.
Some models on HuggingFace (especially from Google and Meta) require explicit license acceptance before downloading. When building the app locally:
- Ensure you have a valid HuggingFace read token in
local.properties(see above) - For each model you want to download:
- Visit the model's HuggingFace page (e.g., https://huggingface.co/google/gemma-3n-E2B-it-litert-lm)
- Click the "Access repository" or license acceptance button
- Grant consent to the model's license terms
- Try downloading the model in the app again
Note: This is only required for local development builds. The Play Store version uses different authentication and does not require manual license acceptance for each model.
- macOS with Xcode installed (use a version that matches your iOS device version)
- An Apple ID signed into Xcode (free Personal Team works for local device testing)
- iPhone with Developer Mode enabled if you run on real hardware
- Clone the repo and open the iOS project:
git clone https://github.com/timmyy123/LLM-Hub.git
cd LLM-Hub
open ios/LLMHub/LLMHub.xcodeproj- In Xcode, select target LLMHub β Signing & Capabilities:
- Set your Team
- Set a unique Bundle Identifier (for example:
com.yourname.llmhub) - Keep Automatically manage signing enabled
- Select your iPhone as the run destination and press Run.
If your phone is on a newer iOS build and requires Xcode beta support, switch CLI tools:
sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer
xcodebuild -versionTTS falls back to a robotic default voice after changing Siri voices
iOS can get into a state where the system TTS voice cache doesn't update after a Siri voice change, causing the app to fall back to the old default voice. To fix:
- Go to Settings β Accessibility β Spoken Content β Voices
- Tap your language and select any voice (even a different one)
- Switch back to your preferred Siri voice or whichever voice you want
This forces iOS to refresh the voice selection and the app will use the correct voice immediately.
- If signing fails, re-check Team + Bundle Identifier in target settings.
- If build cache acts stale, clean DerivedData:
rm -rf ~/Library/Developer/Xcode/DerivedData/LLMHub-*- Build logs: Report Navigator (
Cmd+9) - Runtime logs: Debug Console (
Cmd+Shift+Y)
Contributing
- Fork β branch β PR. See CONTRIBUTING.md (or open an issue/discussion if unsure).
License
- Source code is licensed under the PolyForm Noncommercial License 1.0.0.
- You are free to use, study, and build on this project for non-commercial purposes.
- Commercial use β including distributing the app, charging for it, or monetizing it with ads or IAP β is not permitted without explicit written permission from the author.
- Contact timmy@llm-hub.app for commercial licensing enquiries.
Support
- Email: timmy@llm-hub.app
- Issues & Discussions: GitHub
Notes
- This README is intentionally concise β consult
ModelData.ktfor exact model variants, sizes, and format details.




