Skip to content

Repository files navigation

MLM VPN — Android

A multi-engine VPN, network-scanning, and connectivity-boosting Android app.
Developed and maintained by mlmvpn.

English · فارسی


English

Overview

MLM VPN is an Android application that combines several independent connectivity engines behind one UI: a VPN node scanner/manager, multiple tunnel protocols, a DNS/latency "game booster" for reducing in-game ping, and a set of specialized circumvention engines for restrictive network environments. It is built with Kotlin and Jetpack Compose, targeting minSdk 24 / compileSdk 34.

⚠️ This project involves network circumvention and VPN technology. Use it in compliance with the laws of your jurisdiction. The maintainers do not encourage or condone illegal use.

Features

MLM VPN is much broader than a single-protocol VPN client — it bundles a professional-grade multi-protocol tunnel core, a full Cloudflare infrastructure control panel, a self-hosted worker/relay ecosystem, and a three-tier emergency fallback system, all in one app.

  • Professional V2Ray / Xray-core client (NodesTab, ScannerTab, utils/VpnConfig, VlessXrayInjector) — full VLESS/VMess/Trojan support with REALITY, TLS, WebSocket and gRPC transports, subscription-link import/export, batch latency/connectivity scanning of imported nodes, and manual node editing (AddNodeModal).
  • Multiple tunnel engines, selectable per use case:
    • Xray-core (VLESS/VMess/Trojan, REALITY/WS/gRPC) via VlessXrayInjector
    • AmneziaWG (obfuscated WireGuard) via AmneziaWgInjector
    • kittoku-based SoftEther/L2TP WireGuard support
    • GST relay engine (engines/gst)
    • EDG engine (engines/edg)
    • Aether engine (core/aether) — MASQUE / WireGuard / WARP-in-WARP censorship circumvention; see AETHER.md
    • VPN Gate public relay browsing (engines/vpngate, SoftEther/OpenVPN)
    • Standalone WARP, Psiphon, Tor and Geph (Geph's official, signature-checked client) engines, each on its own home-screen tile
    • OpenVPN with the user's own TunnelBear account (engines/openvpn)
    • GitHub Tunnel (engines/github) and a ready-made Quick Connect pool
  • MLM Adaptive Engine (MAE, experimental) (engines/mae) — the user picks the apps and sites they use; MAE learns, per network, which route each one needs (direct, Serverless, WARP, or a proven foreign exit from the user's own configs) and routes every app separately on one Xray tunnel, so only what truly needs a foreign IP leaves through one. "Didn't open" feedback runs a 5-step repair ladder. Gemini and Google Flow go through a US exit (a Durable Object on the user's own Cloudflare account) set up automatically. See MAE_ARCHITECTURE.md.
  • Config Studio (configstudio) — a user/quota/device-limit panel for the user's own Cloudflare Worker, with VLESS and Trojan links and multi-location exits; plus the Config Arena, which races the user's cloud panels (BPB, Edge, Nahan, MLM, Spider, Netra, Gozargah) on one clean IP.
  • Cloud panel (Cloudflare account integration) (CloudTab, data/CloudManager) — connect one or more Cloudflare accounts (email + Global API Key or scoped API token) directly in the app and, without touching the Cloudflare dashboard:
    • one-tap deploy of several self-hosted Worker backends (BPB, EDG, Nahan) straight from the phone
    • auto subdomain creation on *.workers.dev with account verification/quota checks
    • fetch nodes generated by your own deployed worker back into the app
    • live daily usage tracking against the Workers free-tier quota (100,000 requests/day)
    • per-worker user management and settings screens
    • received node groups browser (nodes your workers have produced, grouped by engine/date)
  • Game Booster — races Cloudflare/UAE Dedicated DNS and the Aether engine by real ping to minimize in-game latency, using a local pass-through DNS-only VPN when a full tunnel isn't needed.
  • Sanction-domain routing (engines/sanction, "DNS ضد تحریم شخصی") — a dedicated personal DNS engine that smart-routes sanctioned/geo-restricted services, reachable from the app's side menu.
  • Self-hosted backend tooling (engines/mlm, assets/gst, *_worker.js) — Google Apps Script and Cloudflare Worker source for running your own relay/DNS infrastructure, deployed via the Cloud panel.
  • Server-less domain fronting (mitm/MitmCertManager, mitm/MitmProfile, ui/mitm/MitmSetupCard) — reaches YouTube, Instagram, WhatsApp, Facebook, Reddit and other Fastly-hosted sites in the browser with no server or worker in the path at all: TLS is terminated locally against an RSA-2048 root certificate the app generates on-device (raw DER/X.509, no BouncyCastle dependency), then re-established to the real host under a different, unblocked SNI. The certificate is per-device and never leaves it; setup is a guided in-app card that hands the certificate to Android's own installer (or, on Android 11+, walks the user through Settings, since the platform no longer accepts a certificate handed in by an app).
  • iOS-style home screen — every engine and tool is a tile that can be reordered and grouped into folders (Fixed IP, subscription links, LAN sharing, usage and tutorials live in a Tools folder), plus an engine store that updates engines from their signed upstream releases.
  • Three-tier Emergency fallback system — guided, progressively more aggressive recovery paths (Emergency 1/2/3 in the side menu) for when primary connectivity is fully blocked.

Tech stack

  • Kotlin, Jetpack Compose, Coroutines/Flow
  • Native libraries (JNI) for Xray-core, AmneziaWG, Aether, tun2proxy
  • Cloudflare Workers / Google Apps Script for optional self-hosted backend components (see app/src/main/assets/gst/, *_worker.js)

Project structure

app/src/main/java/com/mlmvpn/
├── core/                  # Low-level engine wrappers (aether, warp)
└── scanner/
    ├── data/              # Node/subscription/cloud data managers
    ├── engines/           # Pluggable connectivity engines (one dir each)
    ├── mitm/              # On-device CA + server-less domain-fronting profile
    ├── ui/                # Compose screens
    └── utils/             # Config generators, testers, watchdogs
app/src/main/assets/       # Bundled worker scripts, geo data, sanction lists
app/src/main/jniLibs/      # Prebuilt native libraries (arm64-v8a, armeabi-v7a)

Building

Requirements: Android Studio (recent), JDK matching the Android Gradle Plugin used in build.gradle, Android SDK with compileSdk 34 installed.

git clone https://github.com/mlmvpn/mlmvpn_android.git
cd mlmvpn_android
./gradlew assembleDebug

The debug APK is written to app/build/outputs/apk/debug/.

Some native binaries (.so files under app/src/main/jniLibs/) and data files (geoip.dat, geosite.dat) are large and tracked with Git LFS. Install Git LFS and run git lfs pull after cloning if those files show up as small pointer files.

Changelog

See CHANGELOG.md for the full version history (bilingual), or the nicer-looking changelog page.

Contributing

Contributions are welcome — see CONTRIBUTING.md for project structure, coding conventions, and how to add a new engine.

License & Attribution

This project is licensed under GNU GPLv3, plus an additional term (permitted under GPLv3 §7) requiring attribution — see LICENSE. This is because the project vendors GPL-3.0 source from kittoku/mvc and shadowsocks-android, which requires the whole combined work to be GPL. In short:

Any use, fork, or derivative of this project — source or compiled — must clearly credit the original developer, mlmvpn (https://github.com/mlmvpn), wherever the software is presented to end users (About screen, README, store listing, etc.), in addition to the standard GPLv3 obligations (source availability, same license on derivatives, etc.).


فارسی

معرفی

MLM VPN یک اپلیکیشن اندرویدی است که چند موتور اتصال مستقل را زیر یک رابط کاربری واحد گرد هم می‌آورد: اسکنر و مدیریت‌کننده نودهای VPN، چند پروتکل تونل، سیستم «بوستر بازی» برای کاهش پینگ داخل بازی از طریق DNS و تست تأخیر، و مجموعه‌ای از موتورهای تخصصی دورزدن محدودیت برای شبکه‌های محدودشده. این پروژه با Kotlin و Jetpack Compose نوشته شده و minSdk 24 و compileSdk 34 را هدف قرار می‌دهد.

⚠️ این پروژه با فناوری VPN و دورزدن محدودیت‌های شبکه سروکار دارد. لطفاً مطابق قوانین کشور خود از آن استفاده کنید. توسعه‌دهندگان این پروژه استفاده غیرقانونی را تشویق یا تأیید نمی‌کنند.

امکانات

MLM VPN بسیار فراتر از یک کلاینت تک‌پروتکلی VPN است — یک هسته حرفه‌ای چندپروتکلی تونل، یک پنل کامل کنترل زیرساخت کلودفلر، یک اکوسیستم ورکر/رله خوداستقرار، و یک سیستم پشتیبان اضطراری سه‌سطحی را در یک اپ گرد هم آورده است.

  • کلاینت حرفه‌ای V2Ray / Xray-core (NodesTab، ScannerTab، utils/VpnConfig، VlessXrayInjector) — پشتیبانی کامل از VLESS/VMess/Trojan با ترنسپورت‌های REALITY، TLS، WebSocket و gRPC، وارد/صادر کردن لینک اشتراک، اسکن گروهی تأخیر/اتصال نودهای وارد‌شده، و ویرایش دستی نود (AddNodeModal).
  • موتورهای تونل متعدد، قابل انتخاب بر اساس نیاز:
    • Xray-core (VLESS/VMess/Trojan، REALITY/WS/gRPC) از طریق VlessXrayInjector
    • AmneziaWG (وایرگارد مبهم‌سازی‌شده) از طریق AmneziaWgInjector
    • پشتیبانی وایرگارد/SoftEther/L2TP مبتنی بر kittoku
    • موتور رله GST (engines/gst)
    • موتور EDG (engines/edg)
    • موتور Aether (core/aether) — دورزدن محدودیت با MASQUE / WireGuard / WARP-in-WARP؛ به AETHER.md مراجعه کنید
    • مرور رله‌های عمومی VPN Gate (engines/vpngate، SoftEther/OpenVPN)
    • موتورهای مستقل وارپ، سایفون، تور و گف (کلاینت رسمی گف با بررسی امضا)، هرکدام با آیکون خودش در صفحهٔ اصلی
    • OpenVPN با حساب TunnelBear خود کاربر (engines/openvpn)
    • گیت‌هاب تانل (engines/github) و «اتصال سریع» با مجموعه‌ای آمادهٔ سرور
  • موتور تطبیقی MLM (MAE، آزمایشی) (engines/mae) — کاربر اپلیکیشن‌ها و سایت‌هایی را که استفاده می‌کند انتخاب می‌کند؛ موتور برای هر کدام روی هر اینترنت یاد می‌گیرد کدام مسیر لازم است (مستقیم، سرورلس، وارپ، یا یک خروجی خارجیِ آزموده‌شده از کانفیگ‌های خود کاربر) و هر اپلیکیشن را روی یک تونل Xray جداگانه مسیریابی می‌کند؛ فقط آنچه واقعاً آی‌پی خارجی لازم دارد از خروجی خارجی می‌رود. بازخورد «باز نشد» یک نردبان تعمیر ۵مرحله‌ای را اجرا می‌کند. جمینای و گوگل فلو از یک خروجی آمریکا (Durable Object روی حساب کلادفلر خود کاربر) می‌روند که خودکار ساخته می‌شود. به MAE_ARCHITECTURE.md مراجعه کنید.
  • کانفیگ استدیو (configstudio) — پنل کاربر، حجم و محدودیت دستگاه برای ورکر کلادفلر خود کاربر، با لینک‌های VLESS و Trojan و خروجی چندکشوری؛ به‌همراه «میدان کانفیگ» که پنل‌های ابری کاربر (BPB، Edge، نهان، MLM، اسپایدر، نترا، گذرگاه) را روی یک آی‌پی تمیز مسابقه می‌دهد.
  • پنل ابری (اتصال حساب کلودفلر) (CloudTab، data/CloudManager) — اتصال یک یا چند حساب کلودفلر (ایمیل + Global API Key یا توکن محدودشده) مستقیماً داخل اپ، بدون نیاز به داشبورد کلودفلر:
    • استقرار یک‌لمسی چند بک‌اند ورکر خوداستقرار (BPB، EDG، Nahan) از داخل گوشی
    • ساخت خودکار ساب‌دامین روی *.workers.dev همراه با بررسی تأیید حساب/سقف مصرف
    • دریافت نودهای تولیدشده توسط ورکر خودتان مستقیماً داخل اپ
    • پایش زنده مصرف روزانه در برابر سقف رایگان ورکرها (۱۰۰,۰۰۰ درخواست در روز)
    • مدیریت کاربران و صفحه تنظیمات برای هر ورکر
    • مرورگر گروه‌های نود دریافتی (نودهایی که ورکرهای شما تولید کرده‌اند، گروه‌بندی‌شده بر اساس موتور/تاریخ)
  • بوستر بازی — DNS اختصاصی کلودفلر/امارات و موتور Aether را با پینگ واقعی مسابقه می‌دهد تا در صورت امکان با یک VPN محلی فقط-DNS (بدون تونل کامل)، تأخیر داخل بازی را کمینه کند.
  • مسیریابی دامنه‌های تحریم‌شده (engines/sanction، «DNS ضد تحریم شخصی») — یک موتور DNS شخصی اختصاصی که سرویس‌های تحریم‌شده/محدودشده جغرافیایی را هوشمندانه مسیریابی می‌کند و از منوی کناری اپ در دسترس است.
  • ابزارهای بک‌اند خوداستقرار (engines/mlm, assets/gst, *_worker.js) — سورس Google Apps Script و Cloudflare Worker برای اجرای زیرساخت رله/DNS اختصاصی خودتان، که از طریق پنل ابری مستقر می‌شود.
  • دامین‌فرانتینگ بدون سرور (mitm/MitmCertManager، mitm/MitmProfile، ui/mitm/MitmSetupCard) — یوتیوب، اینستاگرام، واتس‌اپ، فیسبوک، ردیت و سایر سایت‌های روی Fastly را داخل مرورگر باز می‌کند، بدون هیچ سرور یا ورکری در مسیر: TLS به‌صورت محلی با یک گواهی ریشه RSA-2048 که خود اپ روی گوشی می‌سازد (DER/X.509 خام، بدون وابستگی به BouncyCastle) باز می‌شود و دوباره با یک SNI متفاوت و بلاک‌نشده به مقصد واقعی وصل می‌شود. گواهی مخصوص هر گوشی است و هیچ‌جا ارسال نمی‌شود؛ راه‌اندازی یک کارت هدایت‌شده داخل اپ است که گواهی را به نصب‌کننده‌ی خود اندروید می‌سپارد (یا در اندروید ۱۱ به بالا، چون پلتفرم دیگر گواهی داده‌شده توسط اپ را قبول نمی‌کند، کاربر را قدم‌به‌قدم در تنظیمات راهنمایی می‌کند).
  • صفحهٔ اصلی به سبک iOS — هر موتور و ابزار یک آیکون است که می‌شود جابه‌جا کرد و در پوشه گذاشت (IP ثابت، لینک اشتراک، اشتراک در شبکهٔ محلی، آمار مصرف و آموزش در پوشهٔ «ابزارها»)، به‌همراه استور موتورها که موتورها را از نسخه‌های امضاشدهٔ سازنده‌شان به‌روز می‌کند.
  • سیستم پشتیبان اضطراری سه‌سطحی — مسیرهای بازیابی هدایت‌شده و به‌مرور تهاجمی‌تر (اضطراری ۱/۲/۳ در منوی کناری) برای زمانی که مسیرهای اصلی اتصال کاملاً مسدود شده باشند.

ساختار پروژه

app/src/main/java/com/mlmvpn/
├── core/                  # لایه‌های پایه موتورها (aether، warp)
└── scanner/
    ├── data/              # مدیریت داده نود/اشتراک/کلاود
    ├── engines/           # موتورهای اتصال قابل‌افزودن (هر کدام یک پوشه)
    ├── mitm/              # گواهی روی گوشی + پروفایل دامین‌فرانتینگ بدون سرور
    ├── ui/                # صفحات Compose
    └── utils/             # تولیدکننده‌های کانفیگ، تسترها، واچ‌داگ‌ها
app/src/main/assets/       # اسکریپت‌های ورکر، داده جغرافیایی، لیست تحریم
app/src/main/jniLibs/      # کتابخانه‌های native از پیش‌کامپایل‌شده

راه‌اندازی و ساخت پروژه

پیش‌نیازها: Android Studio (نسخه اخیر)، JDK متناظر با Android Gradle Plugin استفاده‌شده در build.gradle، Android SDK با compileSdk 34 نصب‌شده.

git clone https://github.com/mlmvpn/mlmvpn_android.git
cd mlmvpn_android
./gradlew assembleDebug

فایل APK دیباگ در مسیر app/build/outputs/apk/debug/ تولید می‌شود.

برخی فایل‌های باینری native (فایل‌های .so در app/src/main/jniLibs/) و فایل‌های داده (geoip.dat، geosite.dat) حجیم هستند و با Git LFS ردیابی می‌شوند. پس از clone کردن، Git LFS را نصب کرده و دستور git lfs pull را اجرا کنید.

لیست تغییرات

برای مشاهده تاریخچه کامل نسخه‌ها (دوزبانه) به CHANGELOG.md، یا نسخه شیک و تصویری آن مراجعه کنید.

مشارکت در پروژه

از مشارکت شما استقبال می‌شود — فایل CONTRIBUTING.md را برای آشنایی با ساختار پروژه، استانداردهای کدنویسی، و نحوه افزودن موتور جدید مطالعه کنید.

مجوز و ذکر منبع

این پروژه تحت GNU GPLv3، به‌همراه یک شرط اضافه (مجاز طبق ماده §۷ خود GPLv3) که ذکر منبع را الزامی می‌کند، منتشر شده است — به فایل LICENSE مراجعه کنید. دلیلش این است که پروژه از سورس GPL-3.0 پروژه‌های kittoku/mvc و shadowsocks-android استفاده می‌کند، که طبق GPL کل اثر ترکیبی باید GPL باشد. به‌طور خلاصه:

هرگونه استفاده، فورک یا اثر مشتق‌شده از این پروژه — چه به‌صورت سورس و چه کامپایل‌شده — باید هرجا که نرم‌افزار به کاربر نهایی نمایش داده می‌شود (صفحه درباره ما، README، صفحه فروشگاه و غیره) به‌طور واضح توسعه‌دهنده اصلی، mlmvpn (https://github.com/mlmvpn)، را ذکر کند.

About

Multi-engine Android VPN — Xray, WARP, Psiphon, Tor, Geph, OpenVPN, MASQUE/AmneziaWG, and the MLM Adaptive Engine that routes each app by its own best path; Cloudflare panels, Config Studio, game booster. Kotlin + Jetpack Compose. | اپلیکیشن VPN چندموتورهٔ اندروید با موتور تطبیقی

Topics

Resources

Contributing

Stars

274 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages