Clash Mi: a Flutter GUI for the mihomo core on desktop and mobile
Clash Mihomo for iOS/MacOS/Android/Windows/Linux
At a glance
- What is it?
- Clash Mi bundles the mihomo (Clash.Meta) core behind a Flutter interface and ships on iOS, macOS, Android, Windows and Linux. It is a subscription-driven proxy client for people who want a graphical front end rather than a terminal, and its usefulness depends almost entirely on the YAML profile you feed it.
- Who is it for?
- Adopt Clash Mi if you already have a mihomo-compatible YAML subscription and want the same profile on a phone, a laptop and a desktop without running a separate client on each. Do not adopt it if you need a self-hosted server component, an auditable proxy implementation, or a client where the tunnel logic is not a prebuilt binary inside the app bundle.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly Dart, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Clash Mi actually is, and who it is built for
Clash Mi is a graphical client for the mihomo core, which the README describes as the Clash.Meta core. The project is written in Dart and built with Flutter, which is the reason one codebase produces binaries for iOS, macOS, Android, Windows and Linux. The README's own summary is blunt about this: it calls the project "another mihomo-core proxy tool" and describes itself as a GUI for mihomo.
The intended user is someone who has a subscription from a proxy provider and wants to paste it into an app rather than write routing rules by hand. The README states that the core runs from a YAML configuration and that users with a subscription can get going without understanding the format. That is the whole pitch: the client is a wrapper, the intelligence lives in the profile.
It is not a server. Nothing in the repository layout suggests a daemon, a relay or a self-hosted component. The top-level entries are platform folders (android/, ios/, linux/, macos/, windows/) plus Dart source under lib/, which is what you would expect from a Flutter application and not from a service.
The mihomo core plus a bundled zashboard panel
The architecture is a Flutter shell around an embedded mihomo binary. The README lists the bundled core as the first feature and says it tracks the current mihomo release. The client itself does not implement proxy protocols; it starts the core, hands it a YAML profile, and renders the state that comes back.
Because the core exposes the standard Clash API, Clash Mi can embed zashboard, a web dashboard that talks to that API. The README credits zashboard explicitly and describes it as a dashboard using the Clash API. This matters for anyone migrating: if you already know the Clash API surface, the panel inside Clash Mi will look familiar, because it is the same kind of client, not a bespoke one.
The practical consequence is that routing rules, proxy groups, rule providers and DNS settings are all decided by the YAML, not by the GUI. The GUI edits and selects; the core interprets. If a profile uses a directive the bundled core version does not support, the failure appears at load time in the core, not as a validation error in the interface.
Installing Clash Mi on iOS, macOS, Android, Windows and Linux
iOS is the constrained platform. The README points to the App Store listing, with the search term "clash mi", and separately to a TestFlight build. There is no sideloading instruction in the README, and the repository does not ship an IPA in its top-level layout.
For macOS, Android, Windows and Linux the README gives three routes: the project site at clashmi.app/download, the GitHub releases page, and a Homebrew formula. The Homebrew command in the README is:
brew install clash-miAfter that, the first real use is importing a profile. The README does not walk through the import flow, but it states that the core runs from a YAML configuration and that a provider subscription is enough. In practice that means obtaining a Clash.Meta format subscription URL from your provider and adding it in the app; the profile, not the app, determines which nodes exist and how traffic is routed.
The README also lists minimum system versions, which are worth checking before you download: iOS 15 or later, macOS 12 or later on both Intel and Apple Silicon, Android 8 or later on arm64-v8a and armeabi-v7a, Windows 10 or later on amd64, and Linux on amd64. Note that the Android build targets two ABIs and the Linux and Windows builds are x86-64 only, so an ARM Linux machine is not covered by the published binaries.
Where Clash Mi stops being the right tool
The first limitation is the profile format. Clash Mi runs mihomo, so it consumes Clash.Meta YAML. A provider that hands out only a base64 node list, a sing-box JSON profile, or a proprietary subscription format will not work without conversion, and the README offers no conversion path. The README's own framing, that users with a subscription can use it, quietly assumes the subscription is already in Clash format.
The second is platform coverage. The README lists iOS, macOS, Android, Windows and Linux, but the architecture notes are narrow: Android is arm64-v8a and armeabi-v7a, Windows is amd64, Linux is amd64. There is no mention of an ARM Windows build or an ARM Linux build in the README's system requirements. If your target is a Raspberry Pi or an ARM server, the published binaries do not cover it.
The third is update coupling. The README states the core is bundled and tracks current mihomo releases. That is convenient, but it means the core version moves with the app version, not on your schedule. A user who needs to pin a specific core build for a rule set that depends on it has no documented way to do so.
Finally, the README's warning about distribution deserves weight: it states that Clash Mi and KaringX have never opened a channel on any video platform, that clashmi.app is the only official site, and that users should not trust other URLs or repackaged downloads. For a proxy client, a repackaged build is a serious risk, and the project treats it as one.
Clash Verge and Karing: different answers to the same question
Clash Verge is the closest comparison for desktop users. It is also a GUI over a Clash-family core, but it is a desktop application, and the repository does not place it on mobile at all. Clash Mi's distinguishing bet is one Flutter codebase spanning iOS, Android, macOS, Windows and Linux, which means a phone and a laptop can share the same profile and the same panel.
Karing is the more interesting comparison because it comes from the same team. The README lists Karing and Clash Mi side by side under the Karing Team heading, along with sing-poet. The README does not explain how the two differ in core or feature set, so the honest statement is that the repository presents them as sibling projects without a comparison table. If you are choosing between them, the README will not decide it for you.
The bundled zashboard panel is the other differentiator worth naming. A desktop client that ships its own dashboard UI and a client that embeds a known Clash API dashboard are different bets, and Clash Mi takes the second. That is a smaller surface for the maintainers to build and a shorter learning curve for anyone who has used a Clash API panel before.
Maintenance cadence, licence and upgrade cost
The repository is not archived, and the last push was on 2026-09-17. That is recent enough that the project is being worked on now, and the release list supports it: v1.0.30.1604 on 2026-09-16, v1.0.30.1603 on 2026-09-15, and v1.0.30.1602 on 2026-09-09. Three releases inside eight days is a fast cadence, and the version numbering suggests frequent rebuilds rather than milestone releases.
The licence is GPL-3.0. For an end user installing a client, that is mostly a non-issue. For anyone who wants to redistribute a modified build or bundle the app into a product, GPL-3.0 carries obligations around source availability and derivative licensing that are worth reading before you ship anything. This is a description of the licence, not legal advice; the LICENSE file in the repository is the authoritative text.
Upgrade cost is low by design. Because the core is bundled, updating the app updates the core, and the README does not document a separate core update path. The cost that does exist is the opposite of effort: you give up control over when the core changes. If a new core build changes behaviour for a rule you depend on, the only documented remedy is to wait for or install a different app release.
Editorial conclusion
Adopt Clash Mi if you already have a mihomo-compatible YAML subscription and want the same profile on a phone, a laptop and a desktop without running a separate client on each. Do not adopt it if you need a self-hosted server component, an auditable proxy implementation, or a client where the tunnel logic is not a prebuilt binary inside the app bundle. Before committing, verify that your subscription provider publishes a Clash.Meta format profile rather than only a raw node list, check that your OS version clears the floor the README sets (iOS 15, macOS 12, Android 8, Windows 10), and confirm the download comes from clashmi.app or the GitHub releases page, since the README explicitly warns about repackaged builds.
Frequently asked questions
What is Clash Mi?
Clash Mi is a Flutter-based graphical client for the mihomo (Clash.Meta) core, published by KaringX for iOS, macOS, Android, Windows and Linux. The README describes it as a GUI for mihomo that runs from a YAML configuration and bundles a zashboard panel.
How do you install Clash Mi?
On iOS the README points to the App Store listing and a TestFlight build. On macOS, Android, Windows and Linux it points to clashmi.app/download, the GitHub releases page, or the Homebrew formula installed with brew install clash-mi.
How do you use Clash Mi with a VPN subscription?
The README states that the core runs from a YAML configuration and that users with a provider subscription can start using it directly. That means the subscription has to be in a Clash.Meta compatible format for the bundled mihomo core to read it.
How is Clash Mi different from Clash Verge?
Both are GUIs over a Clash-family core, but Clash Mi is built with Flutter and the README lists iOS, macOS, Android, Windows and Linux as supported platforms, while the repository does not place Clash Verge on mobile. Clash Mi also bundles the zashboard panel, which talks to the standard Clash API.
How is Clash Mi different from Karing?
The README lists Karing and Clash Mi together under the Karing Team heading but does not compare their cores or feature sets. The repository does not support a more specific answer than that they are sibling projects from the same team.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/karingx-clashmi)