What Is mihomo? The Core Behind Modern Clash Clients
On this page
mihomo is an open-source network proxy core — the engine that powers most modern Clash-style setups. It began life as Clash.Meta, a community fork of the original Clash project, and was renamed mihomo in 2023. Today it is developed by the MetaCubeX community and sits at the heart of popular clients such as Clash Verge Rev, FlClash and Clash Meta for Android.
The single biggest source of confusion for newcomers: mihomo is not an app you double-click. It is a command-line program with no graphical interface, deliberately built to be embedded inside other software. This article explains what the core actually does, why it ships without a GUI, and what that means for you when choosing what to install.
What the mihomo core actually does
Think of mihomo as the machinery room. Given a configuration file, it handles everything that makes a proxy setup work:
- Parsing the configuration — it reads a YAML file describing your servers, groups and rules, using a format that is compatible with and extends the original Clash format.
- Protocol handling and forwarding — it speaks the various proxy protocols, maintains connections to your servers and relays your traffic through them.
- Rule-based routing — it decides, per connection, whether traffic goes direct or through a proxy, based on domains, IP ranges and other rule types.
- DNS processing — it can take over name resolution with strategies such as fake-ip to keep routing decisions accurate and avoid leaks.
Because the configuration format stayed compatible with Clash, subscriptions from proxy providers generally work unchanged.
Why mihomo has no graphical interface
mihomo is a headless command-line program by design. You start it with something like mihomo -d <folder>, it loads config.yaml from that folder, opens its listening ports and prints logs to the terminal. That is the whole user experience.
This is a feature, not an oversight. A small, interface-free binary can run anywhere: inside a desktop app, on a headless Linux server, on a router. The project focuses on doing the networking well and leaves presentation to whatever integrates it — the same philosophy that lets one well-maintained engine power many different apps, and it is exactly how the ecosystem around MetaCubeX/mihomo is organized.
How graphical clients use the core
Every mainstream "Clash client" today is essentially a friendly shell around mihomo:
- Clash Verge Rev — desktop client for Windows, macOS and Linux, built with Tauri, with mihomo bundled inside.
- FlClash — a Flutter-based client with the same look on Android and desktop, also shipping mihomo.
- Clash Meta for Android (CMFA) — MetaCubeX's own Android client with the core built in.
The client writes the configuration, starts and stops the core, shows live connections and gives you switches for the system proxy or TUN mode. You never interact with the binary directly. A side-by-side look at these apps is in our client comparison.
So what should you install?
If you just want a working proxy on a phone or computer, install a graphical client from the download center and stop there — the core is included, at the right version, wired up automatically. Downloading mihomo separately would gain you nothing.
The standalone core is worth grabbing when there is no GUI to run: a headless server, a NAS, a router, or any setup where you prefer hand-written configs and systemd over buttons.
Note: client version numbers and core version numbers are independent. Clash Verge Rev 2.5.2 and mihomo v1.19.29 are different projects on their own release schedules, even though one contains the other.
Frequently asked questions
Is mihomo the same thing as Clash?
Same family, different project. The original Clash was discontinued and its repository deleted in 2023. Clash.Meta, a community fork, carried the work forward and was renamed mihomo. It remains configuration-compatible, which is why the ecosystem still casually says "Clash". The full story is in Clash vs Clash Meta vs mihomo.
Do I need to install mihomo separately from my client?
No. Clash Verge Rev, FlClash and CMFA all ship with the core embedded and manage it for you. Installing a second copy alongside a client is unnecessary and just invites confusion about which one is running.
When would I run the bare core?
Mostly on machines without a desktop: VPS boxes, home servers, containers. You write config.yaml yourself, start the binary with -d, and manage it like any other background service.