Use the bundled script for repeatable Mihomo operations instead of re-discovering paths and API auth each time.
Quick start
Run:
scripts/mihomo-cli.sh status
The script auto-detects common Mihomo installs by checking:
~/Library/Application Support/clashmac/work/config.yaml~/.config/mihomo/config.yaml~/.config/clash/config.yaml
It extracts:
external-controllersecret
Common commands
scripts/mihomo-cli.sh status
scripts/mihomo-cli.sh proxies
scripts/mihomo-cli.sh groups
scripts/mihomo-cli.sh test
scripts/mihomo-cli.sh test "🇭🇰 E0 香港核心"
scripts/mihomo-cli.sh connections
scripts/mihomo-cli.sh flush dns
scripts/mihomo-cli.sh flush fakeip
scripts/mihomo-cli.sh restart
scripts/mihomo-cli.sh config
When switching a group
- List groups first:
scripts/mihomo-cli.sh groups
- Switch the selector/group to a target proxy:
scripts/mihomo-cli.sh switch GLOBAL "🇭🇰 E0 香港核心"
Use exact group and proxy names.
For latency / node quality questions
Default to:
scripts/mihomo-cli.sh proxies
This shows the latest recorded delay from Mihomo's history.
If the user wants a live test for one node, run:
scripts/mihomo-cli.sh test "<proxy-name>"
Treat 0ms with caution: it may indicate missing/failed measurement rather than a truly perfect route.
For deeper API work
Read references/api.md when you need raw endpoint details, request shapes, or want to call an endpoint not wrapped by the helper script.
Practical notes
- Prefer read-only commands first (
status,proxies,groups,connections) before mutating state. - Before
switchorrestart, be sure that changing the active route is actually what the user wants. - If API requests return
Unauthorized, re-checksecretfrom the detected config. - If the script cannot find config automatically, inspect running processes for
mihomo,clash,verge, orclashmac, then locate the active config path from process args. - On macOS with ClashMac, the real core may run as
mihomounder~/Library/Application Support/clashmac/core/while the GUI runs asClashMac.app.
Useful fallback detection
When auto-detect fails, use:
ps aux | grep -iE "clash|mihomo|verge" | grep -v grep
Then inspect the config path from the process command line.