AgenticDroid is an experimental, mobile-first Android development workspace for running coding-agent CLIs, editing repositories, using Git, and building projects on a phone. It can execute locally in app-private storage or connect to configured SSH and LAN environments.
Warning
AgenticDroid is pre-release, sideload-only software. It can execute commands, modify files, install APKs, and give third-party agents access to source code and configured credentials. Use it only with repositories, devices, accounts, and remote hosts you are prepared to trust.
The project is under active development. The current Android build:
- supports Android 8.0 or newer (
minSdk 26), targets Android API 36, and compiles against API 37; - ships only for
arm64-v8a; - needs network access and substantial app-private storage to bootstrap toolchains; and
- is not represented as Google Play compatible. Its downloaded executable/toolchain model remains a policy and distribution constraint.
There are no supported binary releases yet. GitHub Actions provides explicitly marked, debug-signed development artifacts for sideload testing after major or minor version changes. Do not present those temporary artifacts as production releases or redistribute them. Public APK distribution remains blocked until the native-runtime attribution and corresponding-source checklist in DISTRIBUTION.md has been completed for that exact artifact.
- Local terminal sessions and background agent runs, with built-in launch profiles for Codex, Claude Code, Aider, and Antigravity CLI
- Workspace browsing, editing, search, previews, and project templates
- Git and GitHub workflows with Keystore-backed credential storage
- Local, SSH, and authenticated LAN execution environments
- An on-device core toolchain with Node.js, npm, Git, GitHub CLI, OpenSSH, and common utilities
- Optional on-device Python and Java/Kotlin tooling, including OpenJDK 17 and Android SDK support
- QEMU-based compatibility for supported coding-agent binaries
- Project-scoped encrypted secrets and MCP server configuration
Rust, Go, C/C++, and Hugo runner groups are not offered for new local installs at the current target SDK because their downloaded executables are not yet packaged through the app's native library path. Use an SSH or LAN environment for those toolchains. Agent availability and authentication remain subject to each third-party provider's packages, accounts, and terms.
See ARCHITECTURE_REVIEW.md and AGENT_RUNTIME_RESEARCH.md for design history and runtime research. Those dated review documents are snapshots; the source and this README are authoritative when their status descriptions differ.
| Resource | Use it for |
|---|---|
| Development guide | Repository layout, tests, and contributor workflow |
| Roadmap | Current direction and proposal process |
| Support | Questions, troubleshooting, and support boundaries |
| Governance | Roles, decisions, review, and merge policy |
| Changelog | User-visible changes and release history |
| Security policy | Private vulnerability reporting |
- Git
- JDK 21 for the host-side Gradle build (the optional on-device JVM runtime is OpenJDK 17)
- Android SDK with API 37
- Android NDK
27.2.12479018only when reconstructing the release native-library closure
Clone the repository and add your SDK path to the ignored local.properties file as usual for
an Android project. Then run the local quality gate:
.\gradlew.bat testDebugUnitTest lintDebug assembleDebugOn macOS or Linux, use ./gradlew instead. Debug builds do not require a GitHub OAuth client ID;
GitHub device login is simply unavailable when it is omitted.
To enable device login, copy .secrets.example to .secrets and add the public client ID for
your own GitHub OAuth app. Enable device flow for that app. Never put an OAuth client secret in
this repository or an APK.
Release builds require a generated, pinned native-library closure:
python3 tools/fetch_native_libs.py
python3 tools/fetch_python_native_libs.py
python3 tools/fetch_jvm_native_libs.py
python3 tools/build_libtermux.py
./gradlew assembleReleaseThe scripts download large external artifacts and fail if the fetched versions or hashes do not match the pinned manifests. Review those manifests, the release-closure workflow, and DISTRIBUTION.md before distributing the output.
Release signing is loaded only from Gradle properties or environment variables. Never commit a keystore or passwords.
| Gradle property | Environment variable |
|---|---|
agenticdroid.release.storeFile |
AGENTICDROID_RELEASE_STORE_FILE |
agenticdroid.release.storePassword |
AGENTICDROID_RELEASE_STORE_PASSWORD |
agenticdroid.release.keyAlias |
AGENTICDROID_RELEASE_KEY_ALIAS |
agenticdroid.release.keyPassword |
AGENTICDROID_RELEASE_KEY_PASSWORD |
With all four values configured, assembleRelease produces a signed artifact. Without them, any
release output is an unsigned developer artifact and is not distributable.
The optional server in tools/ gives the app filesystem and shell access on another machine.
It is high privilege by design. It uses a bearer pairing token but plain HTTP/WebSocket transport,
so run it only on a trusted local network or inside a trusted encrypted tunnel. Use a dedicated
unprivileged account and a narrow WORKSPACE_ROOT; the root contains structured file operations,
but arbitrary shell commands retain the account's full access. Do not expose the server directly
to the internet. See REMOTE_SERVER.md.
Credentials, project secrets, and pasted SSH key material are encrypted with an app-owned Android Keystore key. Workspaces and bootstrapped toolchains remain in app-private storage; cloud backup and device transfer are disabled. Agent CLIs and user-initiated Git, SSH, LAN, and download operations communicate with third parties and may disclose repository content.
Read SECURITY.md before reporting a vulnerability and PRIVACY.md before using the app with sensitive source code.
Issues and pull requests are welcome. Start with CONTRIBUTING.md and follow the Code of Conduct. Security vulnerabilities must use the private process in SECURITY.md, not a public issue.
Good ways to help include reproducing device-specific bugs, adding focused tests, improving accessibility and documentation, reviewing dependency provenance, and taking a scoped roadmap issue. First-time contributors should read DEVELOPMENT.md before starting.
AgenticDroid's original source is licensed under the Apache License 2.0. Dependencies, generated toolchains, and bundled native binaries retain their own licenses; see THIRD_PARTY_NOTICES.md. The AgenticDroid name and artwork are not separately licensed as trademarks.