AsteriskMETA

Introduction: A Mihomo GUI client for Android, support VPN Service, TPROXY(ROOT), TUN(ROOT), TUN2SOCKS(ROOT) and BPF2SOCKS(ROOT)
More: Author   ReportBugs   OfficialWebsite   
Tags:

English | 简体中文

An Android Mihomo GUI client powered by Mihomo, CMFA Mihomo wrapper, and hev-socks5-tunnel.

Telegram Channel

Asterisk4Magisk

Features

  • VPN Service, TPROXY(ROOT), TUN(ROOT), TUN2SOCKS(ROOT), and BPF2SOCKS(ROOT) run modes
  • Import and manage Mihomo configurations from QR codes, local files, or URL subscriptions
  • JavaScript override scripts for advanced configuration changes
  • Profile, proxy, connection, log, and resource management
  • Material 3 Compose UI

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4

Run Modes

VPN Service

  • Works without root permission.
  • Uses Android VpnService.
  • Runs Mihomo in the app process through the CMFA bridge.

TPROXY(ROOT)

  • Runs the local Mihomo executable directly with libsu.
  • Uses a TPROXY listener with iptables and policy routing for transparent proxy traffic.

TUN(ROOT)

  • Runs the local Mihomo executable directly with libsu.
  • Managed configurations use the fixed TUN device asterisk0 with Mihomo-managed auto-route, auto-detect-interface, and auto-redirect.
  • Supports configurable Mihomo TUN stacks.
  • Selected IP CIDR rule sets are passed to route-exclude-address-set; domain rules do not apply.
  • Exact downstream interface names can be included for hotspot and tethering traffic.

TUN2SOCKS(ROOT)

  • Runs the local Mihomo executable directly with libsu.
  • Uses hev-socks5-tunnel to create the fixed TUN device asterisk0.
  • Sends tunnel traffic to a local Mihomo SOCKS5 listener.

BPF2SOCKS(ROOT)

  • Runs the local Mihomo executable and native bpf2socks helper directly with libsu.
  • Uses eBPF without creating a TUN device and sends captured TCP and UDP traffic to a local Mihomo SOCKS5 listener.
  • Defaults to bridge port 65532 and SOCKS5 listener port 65534.
  • Requires the eBPF probe to pass before startup. Devices with insufficient support cannot start this mode.

asteriskd

  • Watches local IPv4/IPv6 addresses and tethering interfaces, then refreshes the relevant iptables rules or BPF maps.
  • Cleans up networking rules owned by the active ROOT mode when the service stops.

Resource Files

  • Runtime files are stored in the app-private files/clash directory.
  • The bundled Mihomo executable can be replaced from Resource Management.
  • Custom resources can be added or replaced locally and updated from configured URLs.

Broadcast Control

Enable Broadcast Control in settings, then send an explicit broadcast to the receiver below. Actions use the org.asterisk.zcc.ameta.action. prefix.

Operation Action suffix
Start proxy PROXY_START
Stop proxy PROXY_STOP
Toggle proxy PROXY_TOGGLE
Update all URL subscriptions SUBSCRIPTION_UPDATE
Cancel broadcast subscription update SUBSCRIPTION_UPDATE_CANCEL
Update all resources RESOURCE_UPDATE
Cancel resource updates RESOURCE_UPDATE_CANCEL
adb shell am broadcast -n org.asterisk.zcc.ameta/features.automation.BroadcastControlReceiver -a org.asterisk.zcc.ameta.action.SUBSCRIPTION_UPDATE

Subscription updates skip local entries; cancellation preserves completed results and scheduled update settings. Resources use the current Resource Management configuration; resource cancellation also clears its shared queue. Repeated update commands of the same kind are merged while running.

Updates run in the background without starting the proxy. Broadcast delivery does not mean the update has finished; check the BroadcastControl app logs for results.

Development

Initialize submodules before building:

git submodule update --init --recursive

Open the project root in Android Studio, or build it with Gradle wrapper:

.\gradlew.bat assembleDebug

On macOS or Linux:

./gradlew assembleDebug

The build prepares Mihomo and the CMFA Go core, builds the configured native helper submodules, and produces ABI split APKs plus a universal APK.

If Gradle cannot find the Android NDK, configure it through Android Studio, ndk.dir in local.properties, or ANDROID_NDK_HOME.

WSA

appops set org.asterisk.zcc.ameta ACTIVATE_VPN allow

License

GPL-3.0

Credits

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools
AI Daily Digest