Describe it. Build it. Install it. All on your phone.
VibeApp is a fully open-source Android app that lets anyone generate, compile, and install a real native Android app directly on their phone using natural language — no PC, no coding skills, no cloud required.
The entire build pipeline runs on-device. Your code never leaves your phone.
| Home | Chat | Add Platform | Settings |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
There are many AI app builders out there, but they share a common problem: the output isn't a real app.
| Other AI Builders | VibeApp | |
|---|---|---|
| Output | Web App / PWA / Cloud-compiled | Native APK |
| Compilation | Cloud-based | On-device local build |
| Privacy | Code uploaded to servers | Code never leaves your phone |
| Source Export | Mostly unsupported | One-tap source code export |
| Barrier | Requires deployment/environment setup | Just configure an AI API key |
We believe that in the AI era, apps won't disappear — instead, more people will become app creators for the first time.
- Conversational Creation — Describe what you want in natural language, iterate through multi-turn dialogue
- On-Device Full Build Pipeline — AAPT2 + JavacTool + D8 + packaging/signing, the complete build chain runs on your phone
- Automatic Error Fix Loop — Compilation failures are automatically fed back to AI for repair
- Multi-Project Management — Manage multiple app projects simultaneously with version snapshots and build cache
- Multi-Model Support — Claude, GPT, Gemini, Qwen, Kimi, MiniMax, Groq, OpenRouter, and OpenAI-compatible local Ollama
- Flexible Export — Install APK directly or export complete source code
Stable AI code generation is the product's core. VibeApp uses a triple guarantee mechanism:
- Template Constraints — AI doesn't generate from scratch; it fills in predefined skeletons, minimizing structural errors
- Strict System Prompt — Explicit whitelist of allowed standard SDK classes
- Auto-Fix Loop — On compilation failure, sanitized error logs are fed to AI for automatic repair, covering most common error scenarios
+--------------------------------------------------------------+
| Presentation Layer |
| Compose Screens + ViewModels |
| chat / home / setup / settings / start |
+--------------------------------------------------------------+
| Feature Layer |
| Agent Loop Coordinator + Project Manager + Project Init |
| Agent Tools (read/write/list files, run build, rename, icon) |
+--------------------------------------------------------------+
| Data Layer |
| Room + DataStore + Repository + Network API clients |
| OpenAI / Anthropic / Google / Qwen / Kimi / MiniMax / Groq |
+--------------------------------------------------------------+
| Build Engine Module (build-engine) |
| RESOURCE -> COMPILE -> DEX -> PACKAGE -> SIGN |
| AAPT2 JavacTool D8 ApkBuilder ApkSigner |
+--------------------------------------------------------------+
| Device Filesystem |
| /files/projects/{projectId}/app + generated source + APK |
+--------------------------------------------------------------+
Main pipeline:
ChatScreen
-> ChatViewModel
-> AgentLoopCoordinator / ProjectInitializer / ProjectManager
-> Repository + API Client / Workspace FS
-> BuildPipeline.run()
-> signed.apk -> PackageInstaller
For detailed layer descriptions, module responsibilities, and key sequences, see docs/architecture.md
User describes what they want
|
AI generates Java source + XML layouts (constrained by System Prompt)
|
AAPT2 (compile res/ + link Manifest + generate R.java + generated.apk.res)
|-- Failure -> Error sanitization -> AI fix -> retry up to 3 times
+-- Success |
JavacTool compile (source code + R.java -> .class)
|
D8 conversion (.class -> classes.dex)
|
APK packaging (generated.apk.res + classes.dex -> generated.apk)
|
ApkSigner (V1 + V2 signing -> signed.apk)
|
PackageInstaller guides user to install
| Component | Purpose | Notes |
|---|---|---|
| AAPT2 | res/ + Manifest -> R.java + generated.apk.res |
Completes resource compilation and linking before Java compilation |
| JavacTool | Java -> .class |
Compiles source code and AAPT2-generated R.java |
| D8 | .class -> .dex |
Official Android DEX compiler |
| ApkBuilder + ApkSigner | Package + Sign | Produces the final signed.apk |
- Android 10.0 (API 29) or above
- An AI API Key (Claude / GPT-4o / Gemini / Qwen / Kimi / MiniMax — pick one) or a local Ollama service
Download the latest APK from the Releases page
git clone https://github.com/Skykai521/VibeApp.git
cd VibeApp
./gradlew assembleDebug- Open VibeApp -> Settings -> Configure your AI API Key
- Tap "New Project"
- Describe the app you want in natural language
- Wait for auto-generation -> compilation -> installation
VibeApp/
+-- app/ # Android app module
| +-- src/main/kotlin/com/vibe/app/
| | +-- presentation/ # Compose UI, navigation, ViewModel, theme
| | | +-- common/
| | | +-- theme/
| | | +-- ui/
| | | +-- chat/
| | | +-- home/
| | | +-- main/
| | | +-- setting/
| | | +-- setup/
| | | +-- diagnostic/
| | +-- feature/ # Core business orchestration
| | | +-- agent/ # Agent loop, gateway, tool registry
| | | | +-- loop/
| | | | +-- tool/
| | | | +-- service/
| | | +-- diagnostic/ # Chat diagnostic logger
| | | +-- project/ # ProjectManager / Workspace abstraction
| | | +-- projecticon/ # Launcher icon generation
| | | +-- projectinit/ # Template project init, build entry
| | +-- plugin/ # Plugin runtime host
| | | +-- PluginContainerActivity # Proxy Activity (5 process-isolated slots)
| | | +-- PluginManager # Slot allocation, LRU eviction
| | | +-- PluginResourceLoader # DexClassLoader + AssetManager resource loading
| | +-- data/ # Persistence, network, DTO, repository
| | | +-- database/
| | | | +-- dao/
| | | | +-- entity/
| | | +-- datastore/
| | | +-- dto/
| | | +-- model/
| | | +-- network/
| | | +-- repository/
| | +-- di/ # Hilt modules
| | +-- util/ # Common utilities and extensions
| +-- src/main/res/ # UI resources, multi-language strings
| +-- src/main/assets/ # android.jar, templates, static assets
| +-- schemas/ # Room schema snapshots
+-- build-engine/ # On-device build engine
| +-- src/main/java/com/vibe/build/engine/
| +-- apk/ # APK packaging
| +-- compiler/ # JavacCompiler / ECJ compatibility shim
| +-- dex/ # D8 dex conversion
| +-- internal/ # Workspace, logger, binary resolver
| +-- model/ # BuildResult / BuildStage / CompileInput
| +-- pipeline/ # BuildPipeline / DefaultBuildPipeline
| +-- resource/ # AAPT2 resource compilation and linking
| +-- sign/ # Debug signing
+-- shadow-runtime/ # Plugin runtime classes (ShadowActivity etc.)
+-- build-tools/ # Bundled build toolchain dependencies
| +-- android-stubs/
| +-- common/
| +-- javac/
| +-- jaxp/
| +-- kotlinc/
| +-- logging/
| +-- manifmerger/
| +-- project/
+-- docs/ # Documentation
| +-- architecture.md # Full architecture guide
| +-- assets/
+-- .github/ # Issue templates / CI
+-- CONTRIBUTING.md # Contribution guide and branch strategy
+-- LICENSE
+-- README.md # English README (this file)
+-- README_CN.md # Chinese README
Goal: User types a sentence -> gets an installable APK
- Integrate Claude / OpenAI / Qwen APIs for code generation
- Integrate build modules (JavacTool + D8 + AAPT2)
- Single Activity + View-based app generation
- Automatic error fix loop
- APK signing + PackageInstaller guided installation
- App icon generation support
- Basic UI: chat interface + build progress
Goal: Make the generation process visible, controllable, and iterable
- Multi-project management + version snapshots
- Multi-model switching (Claude / GPT / Gemini / Qwen / Kimi / MiniMax / Groq / OpenRouter / Ollama)
- Plugin system — run generated apps inside VibeApp without installation (Shadow-based, 5 process-isolated slots)
- Build cache — pre-dex caching for library JARs, significantly faster subsequent builds
- AI multimodal support — image input across Anthropic, OpenAI, and Kimi providers
- Context compaction — multi-strategy conversation compaction to support longer multi-turn sessions
- Diagnostic logging — structured event tracking for the agent loop, viewable in-app
Goal: Generate higher-quality utility apps and lightweight data tools that anyone can use
- Richer UI component templates — more built-in patterns for common utility app layouts
- Smarter auto-fix — broader error coverage and higher first-attempt success rate
- Utility app enhancements — network requests, local storage, scheduled tasks, and other common capabilities
- Web scraping & data tools — structured data fetching and display powered by jsoup
- Continuous iteration — keep refining a generated app through multi-turn conversation
- Community template marketplace — share and reuse high-quality tool templates
VibeApp stands on the shoulders of these excellent open-source projects:
| Project | Contribution |
|---|---|
| gpt_mobile | AI Chat UI reference |
| CodeAssist | On-device full Android IDE, proving the end-to-end feasibility |
| Shadow | Tencent's plugin framework — inspired the host-delegation pattern for running generated apps inside VibeApp without installation |
We welcome contributions of any kind! Please read CONTRIBUTING.md for details.
Ways to contribute:
- Bug reports and feature suggestions
- Improve AI code generation prompt templates
- Extend supported app types and UI components
- Improve build chain stability and speed
- Improve documentation and examples
This project is licensed under the GPL-3.0 License.
VibeApp — the Chinese name is Yi Zao (意造).
"Vibe" comes from Vibe Coding — using natural language to drive AI to write code. "Yi Zao" means "creating with intention" — two characters conveying idea (意) and creation (造).
The moment an ordinary person feels "I built a real app" — that's the entire reason VibeApp exists.
Made with love for everyone who ever had an app idea but didn't know how to build it.




