A Material 3 VPN client powered by Citrus.
Your subscriptions, servers and routing in one place.
Download · Issues · News · Roadmap
Mikan is an open-source Android VPN and proxy client. It runs Citrus, Mikan's core based on mihomo, and works with compatible Clash / Clash.Meta subscriptions and configuration files. Mikan is a client: bring a subscription or your own server configuration.
The current interface uses expressive Material 3 surfaces, an animated mandarin connection button, country flags and a compact navigation capsule. Light, dark, OLED and preset palettes share the same screens and controls.
Signed releases and release notes: GitHub Releases.
| Device | APK |
|---|---|
| Modern Android phone or tablet (ARM64) | mikan-alpha-arm64-v8a.apk |
| All supported architectures | mikan-alpha-universal.apk |
| 32-bit ARM | mikan-alpha-armeabi-v7a.apk |
| x86_64 | mikan-alpha-x86_64.apk |
| 32-bit x86 | mikan-alpha-x86.apk |
The alpha in filenames names the build flavor. Current release builds use
io.github.miroshka000.mikan, without an .alpha suffix. The former
com.nemu.clashfest.clash.alpha package is a separate installation; export a
backup before moving between package IDs.
Check for APK updates in Settings → About & updates. Install a compatible signed APK over the existing installation to retain subscriptions and settings. Updating between Google Play and GitHub also requires matching signing certificates or a valid signing-key rotation; a matching package ID alone is insufficient. APK checksums are included with each GitHub release.
Signed beta builds appear as pre-releases. Development builds from dev are
separate debug-signed artifacts
and cannot replace a release-signed installation.
| Area | Features |
|---|---|
| Connection | One-tap VPN control, a home-screen widget and Quick Settings tile |
| Subscriptions | Import from a URL, QR code, clipboard or file; refresh feedback and retry actions |
| Mikan panels | mikan:// import links, server groups and per-group traffic when supplied by a compatible panel |
| Servers | Country flags, search, group filters, protocol/transport badges, latency checks and saved ordering |
| Routing | Rule / Global modes, custom rules, per-app VPN routing and proxy chains |
| DNS and geodata | Per-profile DNS / hosts editing, GeoIP / GeoSite sources and local database import |
| Visibility | Live connections and core logs |
| Appearance | Light, dark and OLED modes, preset and custom colors, text settings, calm or animated backgrounds |
| Devices | Phone, tablet and Android TV layouts; Companion pairing for remote control |
Subscription configuration and user edits are stored separately. Mikan composes them when applying a profile and validates the result with the actual core. Built-in network hardening and APK update identity/signature checks remain enabled.
These captures show the current Mikan interface introduced in the 0.1.3 beta series and included in 0.1.4. They use a demonstration subscription.
![]() Home |
![]() Servers |
![]() Subscriptions |
![]() Appearance |
![]() Rules |
![]() Mikan + Citrus |
По-русски
Mikan — открытый VPN-клиент для Android с ядром Citrus, основанным на mihomo. Добавьте совместимую подписку или конфигурацию своего сервера, выберите сервер и включите VPN. Приложение само по себе не выдаёт подписку или VPN-сервер.
В версии 0.1.4 собраны изменения beta-серии: интерфейс Material 3 с анимированным мандарином, новая нижняя навигация, палитры, флаги стран, группы серверов и их трафик для совместимых панелей Mikan. Доступны маршрутизация по приложениям, свои правила, DNS, цепочки прокси, логи и соединения.
Для современного телефона выбирайте arm64-v8a, универсальный APK содержит
все архитектуры. Обновляйтесь через «Настройки → О приложении и обновления» или
совместимым подписанным APK поверх установленного приложения. Для перехода со
старого ID com.nemu.clashfest.clash.alpha сначала экспортируйте резервную копию.
При переходе между Google Play и GitHub должна совпадать также подпись приложения.
Requirements: JDK 21, Android SDK 36, Build Tools 35.0.0, NDK 29.0.14206865, CMake and a compatible Go 1.26 toolchain. The checked-in wrapper uses Gradle 8.11.1 and Android Gradle Plugin 8.10.1. Direct APKs support Android 5.0 / API 21. Google Play bundles require Android 7.0 / API 24 to support Play automatic protection.
git clone --recurse-submodules https://github.com/getmikan/MikanApp.git
cd MikanAppSet sdk.dir in the ignored local.properties file. To match the official
release package, also set:
custom.application.id=io.github.miroshka000.mikan
remove.suffix=trueUse the checked-in wrapper (gradlew.bat on Windows):
./gradlew assembleAlphaDebug
./gradlew :app:assembleAlphaRelease
./gradlew :app:bundleAlphaReleaseRelease builds require the private release.keystore and ignored
signing.properties containing keystore.password, key.alias and
key.password. Reuse the existing key for updates. Never commit signing files.
Release APKs and AABs are optimized and resource-shrunk.
Run APK and AAB packaging separately. APK tasks produce the four ABI-specific APKs plus a universal APK; bundle tasks disable APK splits and let Google Play generate device-specific APKs from the AAB.
The core is pinned through core/src/foss/golang/clash; its current source is
getmikan/Citrus. Initialize submodules before
building. Use the Go runtime patches and embedded Root CA preparation from
.github/workflows/release.yml; Windows builders must supply an equivalent
non-empty CA bundle before compiling the native libraries. Build-time bundled
geodata is checked against the committed hashes.
Tagged GitHub releases use the production-release environment with
ANDROID_KEYSTORE_BASE64, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS and
ANDROID_KEY_PASSWORD. The workflow verifies package identity, version and
signing certificate before publishing APKs.
| Module | Purpose |
|---|---|
app/ |
Activities, imports, updates and packaging |
design/ |
Material 3 XML Views, palettes, animations and dialogs |
common/ |
Shared models, utilities and Android compatibility |
core/ |
JNI bridge and pinned Citrus core |
service/ |
VPN service, subscriptions, configuration composition and routing |
clash-companion/ |
Companion protocol and remote-control tooling |
Mikan is developed in getmikan/MikanApp.
The painted mandarin is shared with the Mikan panel. Source assets live under
design/; Android brand assets are generated with
node packaging/branding/generate.cjs.
Mikan is based on ClashFest by Nemu-x, which builds on Clash Meta for Android. Citrus builds on mihomo. We thank the contributors to these projects and preserve their original copyright notices. Geo data presets use Meta rules dat.






