AI-powered full-stack development on Android
Lyra Code turns an Android device into an AI-assisted full-stack development environment. Its core is not just chat, file management, or code editing: the Agent can work inside app-managed PRoot Linux environments or an existing Termux environment to edit projects, install toolchains, run commands, build and test code, start services, and debug applications directly on Android.
| Chat | Settings | Agent Tools |
|---|---|---|
![]() |
![]() |
![]() |
- Complete Linux userspace with PRoot: download the verified Debian Trixie seed or import compatible rootfs archives such as Ubuntu and Alpine. Keep multiple environments, use distro package managers and development toolchains, and access each environment from the shared terminal or the Agent's
proot_commandtool. - First-class Termux integration:
run_commandcalls Termux RunCommandService and returns the exit code, stdout, and stderr. This lets the Agent use your existing Termux packages, scripts, and workspace; Termux:API is optional. - Agent-driven coding loop: use OpenAI-compatible, Anthropic, or Gemini APIs to search, read, edit, and review project files; execute commands; inspect diffs; follow TODO plans; search the web; and use Skills.
- On-device app and web workflows: run front-end or back-end development commands in Linux/Termux, then preview static sites with the built-in HTTP/HTTPS mini server and inspect live request and JavaScript-error logs.
| App-internal PRoot Linux | External Termux | |
|---|---|---|
| Environment | Full Linux userspace managed by Lyra Code | Your existing Termux installation and packages |
| Agent tool | proot_command(linux_id, ...) |
run_command(...) |
| Terminal | Built in; one persistent session per Linux environment | Continue using Termux itself |
| Best for | Debian/Ubuntu/Alpine toolchains and isolated distro environments | Android-native Termux workflows and an existing setup |
PRoot is available without installing Termux; the two modes can coexist. PRoot uses the Android host kernel, so it is not a VM, root access, or a security boundary.
- Workspace file search and editing, change review, diff visualization, TODO/process records, native downloads, background tasks, and scheduled tasks.
- Sora Editor with TextMate highlighting, line numbers, search, navigation, wrapping,
.bakbackups, and an AI editing panel; plus a dual-pane Android file manager. - MCP client/server, SSH, SMTP/IMAP, WebDAV, FTP/FTPS/SFTP, native HTTP/HTTPS downloads, and natural-language configuration.
- Importable Skills, image input and annotation, Markdown/LaTeX/media rendering, device diagnostics, usage statistics, and local/WebDAV backups.
- Optional Shizuku and Root tools, each independently switchable.
- Add a model provider and select a model.
- Open Settings > PRoot Linux, then download Debian or import a compatible rootfs. No Termux installation is required for this path.
- Open a terminal or let the Agent use
proot_commandto set up the project's language runtimes, dependencies, build tools, and services. - Optionally connect Termux to reuse an existing Termux development environment.
To enable Termux command execution, run this once in Termux:
mkdir -p ~/.termux && (grep -qxF 'allow-external-apps=true' ~/.termux/termux.properties || echo 'allow-external-apps=true' >> ~/.termux/termux.properties) && termux-reload-settingsThen grant the Termux RUN_COMMAND permission from Lyra Code settings. Without that permission, only run_command is disabled; app-internal PRoot Linux continues to work.
- Every APK includes the small PRoot engine, but not a rootfs. The managed runtime matches your device's architecture and does not emulate other architectures.
- Granting Android “All files access” mounts shared storage at
/storageand primary storage at/sdcard; a directly accessible workspace is mounted at/workspace. Android app-UID and SELinux restrictions still apply. - Workspace selection starts with shared storage or proot. Shared storage keeps the system directory permission flow; proot lets you choose a Linux ID and then a directory inside that instance. Proot workspaces use the app-private filesystem without shared-storage permissions, supporting development with Unix permissions, symbolic links, and binary files.
- Linux rootfs instances are mutable app data. Clearing app data or uninstalling Lyra Code removes them, and they are excluded from Android cloud backup/device transfer.
- See App-internal PRoot Linux environments for supported archives, lifecycle, storage, limitations, and source information.
Requirements: JDK 17, Android SDK 37, and Android Studio or a command-line Android SDK. The minimum supported version is Android 8.0 (API 26).
.\gradlew.bat assembleDebugThe APK is generated under app/build/outputs/apk/debug/. Configure release signing locally, and never commit signing keys, keystores, API keys, .env, local.properties, or other private files.
Lyra Code can execute commands, modify files, start servers, and connect to third-party services. Review Agent tool calls, use HTTPS/TLS or trusted networks for remote endpoints, protect backups that contain secrets, and only install rootfs archives, Skills, scripts, and MCP servers you trust. PRoot processes have Lyra Code's Android permissions and must not be treated as isolated from the app.
Pull requests are accepted from organization members; contact the administrator if you would like to join. AI-assisted contributions are welcome, but contributors must test and review their changes, remain responsible for the result, and describe the test scope in the PR.
Original Lyra Code source code is licensed exclusively under GNU AGPL v3. Third-party components retain their own licenses. See LICENSE and THIRD_PARTY_NOTICES.md.



