Inspiration
Developers are increasingly on the go, but mobile coding solutions often fall short. They either require a constant internet connection for cloud-based workspaces or are just glorified text editors without a real terminal or runtime. I wanted to build a true, local-first development environment for Android—one that brings a full Linux-backed IDE to your pocket without requiring a rooted device.
What it does
iCode is a native Android development environment that embeds a real Ubuntu 24.04 Linux runtime (ARM64). It features:
- A rich code editor: Includes syntax highlighting for 31 languages using bundled TextMate grammars, quick open, and fast workspace-wide search powered by ripgrep.
- Full Terminal & Linux Runtime: Runs an Ubuntu base rootfs through PRoot (no root needed). You can install any compatible CLI, compiler, or language server protocol (LSP).
- Git Integration: Complete local version control including clone, stage, commit, push/pull, branch management, merge conflicts, and SSH/HTTPS/GPG support.
- AI Assistant: Built on Koog, it can read files, run commands, and edit code. It supports Bring Your Own Key (BYOK) for OpenAI, Anthropic, Google, OpenRouter, and Ollama.
How we built it
The app is built natively for Android (API 30+) using Kotlin and Jetpack Compose for a modern, fluid, and customizable UI (supporting semantic tokens and AMOLED themes). To achieve the local runtime, I used C++, PRoot, and libandroid-shmem to load an Ubuntu rootfs seamlessly into the Android environment without requiring root permissions. The AI assistant was integrated using the Koog engine, and core file search relies on ripgrep for maximum performance. Challenges we ran into Getting a full Linux runtime to operate smoothly on an unrooted Android device using PRoot was a significant technical hurdle. Additionally, bridging the native Jetpack Compose UI with background terminal processes, Git operations, and language servers required careful management of state and background sessions. Accomplishments that we're proud of Successfully running CLI agents like Claude Code inside a mobile terminal and implementing a robust, local-first architecture where the editor, Git, and terminal do not depend on any cloud account or website.
What we learned
Deepened my understanding of Android NDK, PRoot sandboxing, and architecting complex, state-heavy Compose applications that interact directly with file systems and shell processes.
What's next for iCode
Expanding the ecosystem of pluggable LSP servers, improving the agentic capabilities of the AI assistant with more autonomous actions, and continuously optimizing the terminal and runtime performance for lower-end devices. Built with
Demo video URL https://www.youtube.com/watch?v=YOUR_UNLISTED_OR_PUBLIC_VIDEO_ID
Log in or sign up for Devpost to join the conversation.