Home/Blog/Clash Dashboard Guide
Beginner

Clash Dashboard Guide: Visual Panel Setup and Everyday Features

Published 2026-06-02 · 8 min read · Applies to any Clash / mihomo core client

If you can already connect through Clash but have to dig through a config file every time you want to switch nodes or check traffic, that gets old fast. The Dashboard is a control panel that runs right in your browser — it shows live connection status, traffic graphs, and logs, and lets you switch nodes or edit rules with a click. Under the hood, it's just a front-end that talks to a local API the Clash core exposes.

01How the Dashboard Actually Works

While running, the Clash core can expose an "external controller" interface (external-controller), and the Dashboard is simply a web front-end that calls that interface. That means the Dashboard itself never touches your proxy traffic — it's purely a window into the core's state. The two most common dashboard projects are yacd (a more classic look) and metacubexd (a newer UI with more features, now bundled with most mainstream clients). Most GUI clients (Clash Verge Rev, Clash for Windows, etc.) already ship with a dashboard built in — no extra setup needed. If you're running the command-line mihomo core on its own, you'll need to enable it manually as shown below.

02Manually Enabling external-controller

Add these two lines to config.yaml, then restart the core to access the control panel from your browser:

# Allow access to the control interface on local port 9090
external-controller: 127.0.0.1:9090
# Optional: set a secret so other devices on your LAN can't access it freely
secret: "your-own-secret"

Once that's active, open http://127.0.0.1:9090/ui in your browser (some core builds require you to mount the UI's static files separately — check the release notes for your specific build for the exact path). If you set a secret, you'll be asked to enter it the first time you connect.

03The Four Panels You'll Use Most

  • Proxies: Shows every proxy group and node. Click a node to switch to it instantly, or run a latency test on the whole group at once — much faster than hunting through a client's menus.
  • Connections: A live view of every app that's currently making requests, which rule each connection matched, and whether it went direct or through a proxy. This is the fastest way to answer "why isn't this site going through my proxy?"
  • Logs: A real-time stream of the core's runtime log. When a rule isn't firing or a node fails to connect, the error usually shows up here first.
  • Rules: Shows every active rule in the order it's evaluated. Some dashboards even let you edit and test rules on the fly — just keep in mind those edits usually aren't saved back to your config file, so they're lost on restart. Good for quick experiments, not permanent changes.
PanelWhat it's for
OverviewLive upload/download graphs — a quick sanity check that traffic is actually flowing through the proxy.
ProxiesSwitch nodes, run latency tests, inspect proxy group structure — the panel you'll open most.
ConnectionsSee which rule each connection matched and where it went, to debug routing issues.
LogsCore runtime logs, for tracking down connection failures or rule errors.
ConfigCurrent run mode, port settings, and other global config values.
Tip: If you want to reach the Dashboard from another device on your LAN (like your phone), change the external-controller listen address to 0.0.0.0:9090 — and make sure you set a secret when you do. Without one, anyone on the same network can control your Clash instance without authentication, which is a real security risk.

04Common Issues

Dashboard page loads blank? This usually means external-controller is enabled but the UI's static files aren't mounted. GUI clients typically handle this automatically. If you're running mihomo from the command line, you'll need to download the UI assets separately and point to them with the external-ui field.

Switched nodes but the proxy group in the Dashboard doesn't update? Check whether that group's type is url-test or fallback — the core picks the node automatically for those types, so manual clicks won't stick. Only select-type groups support manual selection.