Open-source BYOK AI agent for Android. Full phone control, native Shell & Python 3, with Skills and MCP support, Material 3 Expressive. Works via Shizuku (root optional). Bring any provider: OpenRouter, GLM, and more.
Kotlin
177
791 commits
updated Sep 16, 2026
中文 | English
Zafiro is an open-source intelligent Agent running on Android devices, with BYOK support. It understands your screen, controls your device, and carries out operations across apps — with full support for Skills, MCP, and memory. It can also run Shell and Python 3 natively and wrap tools on its own to perform tasks such as web search and file downloads, or connect to a remote dev machine via SSH.
![]() | ![]() | ![]() | ![]() |
| Device Control | Research | Install Apps from the Web | Settings |
[!IMPORTANT] Zafiro is still in Beta — functionality and experience are being continuously improved. Zafiro runs via Shizuku — no Root required; Root users get the full experience.
You can download a release from Releases, or build from source.
Through the LSPosed framework, Zafiro can take over your system voice assistant — wake Breeno or XiaoAi, and the one actually answering is your own Agent. You can decide, based on keywords, which requests go to Zafiro and which pass through to the native assistant. After takeover, the assistant retains full Agent capabilities including device control.
[!NOTE] Taking over the system voice assistant requires Root + LSPosed, and currently supports:
- OPPO / OnePlus / Realme | Breeno Assistant
Xiaomi | XiaoAi(no longer maintained — community contributors welcome)Voice takeover availability may be affected by phone model, system version, voice assistant version, and vendor system restrictions. When your device does not yet support system assistant takeover, you can still use Zafiro's chat interface with all Agent capabilities.
![]() | ![]() | ![]() |
| Category | Technology |
|---|---|
| Language | Kotlin |
| UI Framework | Jetpack Compose |
| Design Language | Material Design 3 Expressive |
| Liquid Glass | Android Liquid Glass |
| Agent Runtime | Okia |
| Python Runtime | Chaquopy |
| System Takeover | LSPosed + Xposed API |
| Terminal / SSH | libterm |
| SVG Rendering | coil-resvg (resvg) |
| G2 Rounded Corners | Capsule |
./gradlew assembleDebug
To build a Release version yourself, use your own signing key:
keytool -genkeypair -v -keystore my-release.jks \
-keyalg RSA -keysize 2048 -validity 10000 -alias my_key
./gradlew assembleRelease \
-PRELEASE_STORE_FILE=/absolute/path/to/my-release.jks \
-PRELEASE_STORE_PASSWORD=yourStorePassword \
-PRELEASE_KEY_ALIAS=my_key \
-PRELEASE_KEY_PASSWORD=yourKeyPassword
agentic-nexus/
├── app/ # Main app: settings UI, AgentRuntimeService, Xposed hooks
├── agent-runtime/ # Agent runtime: LLM calls, tool/Skill/MCP execution, Python runtime
├── xposed-api/ # Xposed event types, shared constants (shared by main app and host process)
├── xposed-runtime/ # Xposed runtime, hook base classes
├── store/ # Store persistence, IPC bridge (XIpcBridge)
├── ui-kit/ # Shared Compose components, LiquidScreen shell, navigation
└── libs/
├── logging/ # Logging library
├── okia/ # Okia Agent runtime base library
└── libterm/ # Terminal library (with multiple backends)
├── libterm-core
├── libterm-runtime
├── libterm-backend-libsu
├── libterm-backend-shizuku
└── libterm-backend-ssh
Pull requests are welcome!
git checkout -b feat/your-feature)git commit -m 'feat: add your feature', following Conventional Commits)git push origin feat/your-feature)When reporting an issue, please include as much detail as possible: phone model and Android version, system voice assistant and its version, Zafiro version, steps to reproduce, and screenshots or screen recordings.
MIT — see LICENSE.
Made with ✨️ by niki914
791 commits
Kotlin
98.6%
Python
1.3%
Open-source BYOK AI agent for Android. Full phone control, native Shell & Python 3, with Skills and MCP support, Material 3 Expressive. Works via Shizuku (root optional). Bring any provider: OpenRouter, GLM, and more.
Kotlin
177
791 commits
updated Sep 16, 2026
中文 | English
Zafiro is an open-source intelligent Agent running on Android devices, with BYOK support. It understands your screen, controls your device, and carries out operations across apps — with full support for Skills, MCP, and memory. It can also run Shell and Python 3 natively and wrap tools on its own to perform tasks such as web search and file downloads, or connect to a remote dev machine via SSH.
![]() | ![]() | ![]() | ![]() |
| Device Control | Research | Install Apps from the Web | Settings |
[!IMPORTANT] Zafiro is still in Beta — functionality and experience are being continuously improved. Zafiro runs via Shizuku — no Root required; Root users get the full experience.
You can download a release from Releases, or build from source.
Through the LSPosed framework, Zafiro can take over your system voice assistant — wake Breeno or XiaoAi, and the one actually answering is your own Agent. You can decide, based on keywords, which requests go to Zafiro and which pass through to the native assistant. After takeover, the assistant retains full Agent capabilities including device control.
[!NOTE] Taking over the system voice assistant requires Root + LSPosed, and currently supports:
- OPPO / OnePlus / Realme | Breeno Assistant
Xiaomi | XiaoAi(no longer maintained — community contributors welcome)Voice takeover availability may be affected by phone model, system version, voice assistant version, and vendor system restrictions. When your device does not yet support system assistant takeover, you can still use Zafiro's chat interface with all Agent capabilities.
![]() | ![]() | ![]() |
| Category | Technology |
|---|---|
| Language | Kotlin |
| UI Framework | Jetpack Compose |
| Design Language | Material Design 3 Expressive |
| Liquid Glass | Android Liquid Glass |
| Agent Runtime | Okia |
| Python Runtime | Chaquopy |
| System Takeover | LSPosed + Xposed API |
| Terminal / SSH | libterm |
| SVG Rendering | coil-resvg (resvg) |
| G2 Rounded Corners | Capsule |
./gradlew assembleDebug
To build a Release version yourself, use your own signing key:
keytool -genkeypair -v -keystore my-release.jks \
-keyalg RSA -keysize 2048 -validity 10000 -alias my_key
./gradlew assembleRelease \
-PRELEASE_STORE_FILE=/absolute/path/to/my-release.jks \
-PRELEASE_STORE_PASSWORD=yourStorePassword \
-PRELEASE_KEY_ALIAS=my_key \
-PRELEASE_KEY_PASSWORD=yourKeyPassword
agentic-nexus/
├── app/ # Main app: settings UI, AgentRuntimeService, Xposed hooks
├── agent-runtime/ # Agent runtime: LLM calls, tool/Skill/MCP execution, Python runtime
├── xposed-api/ # Xposed event types, shared constants (shared by main app and host process)
├── xposed-runtime/ # Xposed runtime, hook base classes
├── store/ # Store persistence, IPC bridge (XIpcBridge)
├── ui-kit/ # Shared Compose components, LiquidScreen shell, navigation
└── libs/
├── logging/ # Logging library
├── okia/ # Okia Agent runtime base library
└── libterm/ # Terminal library (with multiple backends)
├── libterm-core
├── libterm-runtime
├── libterm-backend-libsu
├── libterm-backend-shizuku
└── libterm-backend-ssh
Pull requests are welcome!
git checkout -b feat/your-feature)git commit -m 'feat: add your feature', following Conventional Commits)git push origin feat/your-feature)When reporting an issue, please include as much detail as possible: phone model and Android version, system voice assistant and its version, Zafiro version, steps to reproduce, and screenshots or screen recordings.
MIT — see LICENSE.
Made with ✨️ by niki914
791 commits
Kotlin
98.6%
Python
1.3%