Skip to content

Latest commit

Β 

History

844 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LLM Hub πŸ€–

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!

Download

πŸ’» Desktop Versions Coming: Windows and macOS native apps are planned, bringing desktop-class experiences with advanced cursor integration and Claude Code–like capabilities.

πŸ“Έ Demo & Screenshots

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
AI Agent Termux Command Execution on Android Music Generation on iOS
Autonomous AI Agent executing Termux shell commands (ls list files) with live terminal output on Android On-device music generation with Magenta Realtime 2 on iPhone

πŸš€ Features

πŸ› οΈ AI Tools Suite

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

πŸ€– AI Agent & Termux Terminal Command Generation

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_SERVICE intent 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.

πŸŽ™οΈ Supported ASR Models (Android)

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.

πŸ” Privacy First

  • 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

⚑ Advanced Capabilities

  • 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

🚧 Upcoming Features & Roadmap

Desktop Expansion (Windows & macOS)

  • 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

  1. Download from Google Play or the App Store, or build from source
  2. Open Settings β†’ Download Models β†’ Download or Import a model
  3. Select a model and start chatting or generating images

Technology

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

Android local development (Android Studio + Gradle)

git clone https://github.com/timmyy123/LLM-Hub.git
cd LLM-Hub/android
./gradlew assembleDebug
./gradlew installDebug

Android-only local configuration

Setting up Hugging Face Token for Development

To use private or gated models, add your HuggingFace token to android/local.properties (do NOT commit this file):

HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Save and sync Gradle in Android Studio; the app will read BuildConfig.HF_TOKEN at build time.

Dev Premium Flag

To skip ads and unlock all premium features locally without a real IAP purchase, add this to android/local.properties:

DEBUG_PREMIUM=true

Set it back to false before making a production build.

Model License Acceptance

Some models on HuggingFace (especially from Google and Meta) require explicit license acceptance before downloading. When building the app locally:

  1. Ensure you have a valid HuggingFace read token in local.properties (see above)
  2. For each model you want to download:

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.

iOS local development (macOS + Xcode)

Prerequisites

  • 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

Build and run on iPhone

  1. 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
  1. 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
  2. Select your iPhone as the run destination and press Run.

If you use Xcode beta

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 -version

iOS TTS voice troubleshooting

TTS 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:

  1. Go to Settings β†’ Accessibility β†’ Spoken Content β†’ Voices
  2. Tap your language and select any voice (even a different one)
  3. 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.

Useful iOS dev troubleshooting

  • 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

Notes

  • This README is intentionally concise β€” consult ModelData.kt for exact model variants, sizes, and format details.