A Clash Meta for Android build you can talk to.
Configure profiles, routing and proxies by conversation — or inspect any node's real protocol details with a long press.
English · 简体中文
Important
This is a modified fork of
MetaCubeX/ClashMetaForAndroid,
not the upstream project, and is not endorsed by MetaCubeX. Forked from upstream
v2.11.32; modifications began August 2026. Licensed under
GPL-3.0 like upstream — this repository is the corresponding source
for any build made from it.
For everything inherited from upstream — what Clash Meta is, supported protocols, automation intents, kernel contribution — see the upstream README. This document only covers what the fork adds.
![]() |
![]() |
![]() |
| The assistant sits alongside the usual screens | Three starting points, or just type | A read-only diagnosis in progress |
A tool-calling agent with 32 operations across profiles, per-app routing, VPN settings, proxy groups, providers, connections and logs. Point it at any OpenAI-compatible endpoint — you supply the URL, model and key; nothing is hardcoded and no service is bundled.
It reads state before it writes, validates every profile change against the bundled core, keeps backups, and rolls back if a change fails to apply.
Three starting points, or just type what you want:
- Create a profile from scratch — builds a working config, asking for what it needs
- Plan per-app routing — reads your actually-installed apps and proposes a split
- Diagnose the current setup — read-only pass over config, VPN, network and connections
Each of the 32 tools declares a risk level. The approval gate is enforced in code from that level, so no prompt can talk its way past it.
| Mode | Behaviour |
|---|---|
| Cautious | Every change needs confirmation |
| Balanced (default) | Routine changes run; high-risk ones ask |
| Full auto | Nothing asks |
Read-only operations always run. Approval is granted per operation — never "always allow". If the screen is closed while a run is waiting for approval, the operation is denied rather than silently performed.
The run header is built from tool results, not from the model's prose — it states either how many writes landed or that nothing was changed. If a reply claims a change that never executed, the header contradicts it. Expanding the card shows every step and its outcome.
That record is also replayed to the model on later turns, so a turn that only claimed to have written something cannot become evidence that it did.
Both Chat Completions and Responses API formats, streamed. Your API key is encrypted with a key held in the Android Keystore, and is excluded from cloud backup along with conversation history.
Nodes carry a protocol badge (VMESS, TROJAN, SS…). Long-press any node
for its real configuration read live from the core — cipher, transport, TLS, SNI,
fingerprint, ALPN and more. Chained nodes render as a hop-by-hop stepper from entry
to exit. Tap a row to copy it; credentials are masked before they ever leave the
core.
Records why the VPN process died — low-memory kill, ANR, native or Java crash, user stop — and recovers a service the system killed unexpectedly.
Download from Releases:
| File | Size | For |
|---|---|---|
cmfa-<version>-agent-arm64-v8a-release.apk |
~44 MB | Every phone from roughly 2017 on |
cmfa-<version>-agent-universal-release.apk |
~105 MB | Anything not arm64 — carries all four ABIs |
Take the arm64 build unless you know you need otherwise.
The package is io.github.viewer12.cmfa.agent, so it installs alongside an
existing Clash Meta instead of replacing it. Builds are signed with this fork's own
key and cannot update an upstream install.
Android 5.0+ (7.0+ recommended).
Note
The assistant's own screens are currently Chinese only; the rest of the app is localised as upstream ships it. The model replies in whatever language you write in.
Warning
The assistant sends what it needs to the endpoint you configure. For profile edits that includes the full YAML — proxy passwords, UUIDs and subscription URLs among it.
Nothing is sent until you configure a model, and nothing is ever sent to this project — it operates no server. Your model provider's policy governs that data. See PRIVACY_POLICY.md.
git submodule update --init --recursive
./gradlew :app:assembleAgentDebug -PagentArm64Only=trueRequires JDK 21, Android SDK, CMake and Go. -PagentArm64Only=true builds only
arm64-v8a and is much faster.
Release builds need your own signing key — the key committed to this repository is inherited from upstream and public:
scripts/generate-release-key.shSee docs/SIGNING.md.
GPL-3.0, same as upstream. Third-party attributions are in NOTICE.
Built on ClashMetaForAndroid by MetaCubeX and the mihomo core.


