{"id":17684951,"url":"https://github.com/spencerwooo/mihoro","last_synced_at":"2026-03-17T18:04:50.099Z","repository":{"id":65232959,"uuid":"584076870","full_name":"spencerwooo/mihoro","owner":"spencerwooo","description":"Mihomo CLI client on Linux. Formerly `clashrup`.","archived":false,"fork":false,"pushed_at":"2025-03-12T03:21:07.000Z","size":216,"stargazers_count":61,"open_issues_count":1,"forks_count":9,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-01T08:33:36.667Z","etag":null,"topics":["clash","linux","mihomo","proxy","systemd"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spencerwooo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":["https://afdian.com/a/spencerwoo","https://spencerwoo.com/sponsor"]}},"created_at":"2023-01-01T08:31:16.000Z","updated_at":"2025-05-31T12:38:48.000Z","dependencies_parsed_at":"2023-02-14T03:55:21.867Z","dependency_job_id":"4f753b0f-77de-453d-96b8-2ce021685eef","html_url":"https://github.com/spencerwooo/mihoro","commit_stats":{"total_commits":245,"total_committers":4,"mean_commits":61.25,"dds":0.4775510204081632,"last_synced_commit":"92afe2b18427a7ff4b8ac1e8d35bb43bad15bd96"},"previous_names":["spencerwooo/mihoro"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/spencerwooo/mihoro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spencerwooo%2Fmihoro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spencerwooo%2Fmihoro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spencerwooo%2Fmihoro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spencerwooo%2Fmihoro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spencerwooo","download_url":"https://codeload.github.com/spencerwooo/mihoro/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spencerwooo%2Fmihoro/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268256821,"owners_count":24221051,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clash","linux","mihomo","proxy","systemd"],"created_at":"2024-10-24T10:25:54.684Z","updated_at":"2026-03-17T18:04:50.093Z","avatar_url":"https://github.com/spencerwooo.png","language":"Rust","funding_links":["https://afdian.com/a/spencerwoo","https://spencerwoo.com/sponsor"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cdiv\u003e\u003cimg src=\"https://github.com/user-attachments/assets/b292facf-b4d0-4087-b33c-e9ffba061e73\" alt=\"mihoro banner\" width=\"512\" /\u003e\u003c/div\u003e\n\n  \u003ca href=\"https://github.com/spencerwooo/mihoro/actions/workflows/ci.yml\"\u003e\n    \u003cimg src=\"https://github.com/spencerwooo/mihoro/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/spencerwooo/mihoro/actions/workflows/release.yml\"\u003e\n    \u003cimg src=\"https://github.com/spencerwooo/mihoro/actions/workflows/release.yml/badge.svg\" alt=\"Release\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/spencerwooo/mihoro/releases/latest\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/spencerwooo/mihoro\" alt=\"GitHub release (latest by date)\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n**mihoro** - The 🦀 Rust™-based [Mihomo](https://github.com/MetaCubeX/mihomo) CLI client on Linux.\n\n- Setup, update, apply overrides, and manage with systemd. **No more, no less.**\n- No root privilege required. Maintains per-user instance.\n- First-class support for config subscription.\n\n\u003cimg width=\"1136\" height=\"911\" alt=\"screenshot\" src=\"https://github.com/user-attachments/assets/abfeb381-3ea2-45c8-ac0a-d55f7ba35fbb\" /\u003e\n\n## Install\n\n```shell\ncurl -fsSL https://raw.githubusercontent.com/spencerwooo/mihoro/main/install.sh | sh\n```\n\nOptionally, download over a mirror:\n\n```shell\ncurl -fsSL https://raw.githubusercontent.com/spencerwooo/mihoro/main/install.sh | sh -s -- --mirror https://ghfast.top\n```\n\n\u003e [!IMPORTANT]\n\u003e `mihoro` is installed to `~/.local/bin` by default. Ensure this is on your `$PATH`.\n\n## Setup\n\n`mihoro`, like `mihomo`, is a config-based CLI client.\n\nAfter installing `mihoro`, initialize its config `~/.config/mihoro.toml` first by:\n\n```bash\nmihoro setup\n```\n\nThe default config will be generated:\n\n```toml\nremote_config_url = \"\"\nmihomo_channel = \"stable\"\nmihomo_binary_path = \"~/.local/bin/mihomo\"\nmihomo_config_root = \"~/.config/mihomo\"\nuser_systemd_root = \"~/.config/systemd/user\"\nmihoro_user_agent = \"mihoro\"\nauto_update_interval = 12\n\n[mihomo_config]\nport = 7891\nsocks_port = 7892\nmixed_port = 7890\nallow_lan = false\nbind_address = \"*\"\nmode = \"rule\"\nlog_level = \"info\"\nipv6 = true\nexternal_controller = \"0.0.0.0:9090\"\nexternal_ui = \"ui\"\ngeodata_mode = false\ngeo_auto_update = true\ngeo_update_interval = 24\n\n[mihomo_config.geox_url]\ngeoip = \"https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat\"\ngeosite = \"https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat\"\nmmdb = \"https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country.mmdb\"\n```\n\n**Before doing anything, fill in `remote_config_url`, which is your remote `mihomo` or `clash` subscription url.**\n\nExample:\n\n```toml\nremote_config_url = \"https://tt.vg/freeclash\"  # DO NOT USE THIS IF YOU CAN!\n```\n\nCustomize other settings as needed, then, run setup once more:\n\n```bash\nmihoro setup\n```\n\n... to start downloading `mihomo` binary, your remote config, and geodata.\n\n\u003e [!CAUTION]\n\u003e\n\u003e :warning: **DISCLAIMER!** Use your own `remote_config_url` at all times! The link provided comes from a **free, third-party** Clash/Mihomo provider, and `mihoro` cannot guarantee its integrity.\n\n## Usage\n\nTo configure proxy for the current terminal session:\n\n```bash\neval $(mihoro proxy export)\n```\n\nTo revert proxy settings:\n\n```bash\neval $(mihoro proxy unset)\n```\n\nTo check running status of `mihomo` core:\n\n```bash\nmihoro status\n```\n\nTo update subscribed remote config:\n\n```bash\nmihoro update\n# or explicitly: mihoro update --config\n```\n\nTo apply settings changes after modifying `mihoro.toml`:\n\n```bash\nmihoro apply\n```\n\nTo update `mihomo` binary (core) and/or geodata:\n\n```bash\nmihoro update --core     # updates core\nmihoro update --geodata  # updates geodata\nmihoro update --all      # updates config -\u003e core -\u003e geodata -\u003e restarts mihomo\n```\n\nTo enable auto-update via cron job:\n\n```bash\nmihoro cron enable\n```\n\nTo disable auto-update:\n\n```bash\nmihoro cron disable\n```\n\nTo check auto-update status:\n\n```bash\nmihoro cron status\n```\n\nThe `auto_update_interval` in `mihoro.toml` controls the update frequency in hours (default: 12, range: 1-24). Set to `0` to disable.\n\nTo upgrade `mihoro` itself to the latest version:\n\n```bash\nmihoro upgrade\n```\n\nOr check for updates without installing:\n\n```bash\nmihoro upgrade --check\n```\n\nTo manually specify a target architecture (useful when auto-detection fails, e.g., on Ubuntu 20.04):\n\n```bash\nmihoro upgrade --target x86_64-unknown-linux-musl\nmihoro upgrade --target aarch64-unknown-linux-musl\n```\n\nShell auto-completions are available under `mihoro completions` for bash, fish, zsh:\n\n```bash\n# For bash:\nmihoro completions bash \u003e $XDG_CONFIG_HOME/bash_completion/mihoro  # or /etc/bash_completion.d/mihoro\n\n# For fish:\nmihoro completions fish \u003e $HOME/.config/fish/completions/mihoro.fish\n\n# For zsh:\nmihoro completions zsh \u003e $XDG_CONFIG_HOME/zsh/completions/_mihoro  # or to one of your $fpath directories\n```\n\nFull list of commands:\n\n```console\n$ mihoro --help\nMihomo CLI client on Linux.\n\nUsage: mihoro [OPTIONS] [COMMAND]\n\nCommands:\n  setup        Setup mihoro by downloading mihomo binary and remote config\n  update       Update mihomo components (config by default)\n  apply        Apply mihomo config overrides and restart mihomo.service\n  start        Start mihomo.service with systemctl\n  status       Check mihomo.service status with systemctl\n  stop         Stop mihomo.service with systemctl\n  restart      Restart mihomo.service with systemctl\n  log          Check mihomo.service logs with journalctl [aliases: logs]\n  proxy        Output proxy export commands\n  uninstall    Uninstall and remove mihoro and config\n  completions  Generate shell completions for mihoro\n  cron         Manage auto-update cron job\n  upgrade      Upgrade mihoro to the latest version\n  help         Print this message or the help of the given subcommand(s)\n\nOptions:\n  -m, --mihoro-config \u003cMIHORO_CONFIG\u003e  Path to mihoro config file [default: ~/.config/mihoro.toml]\n  -h, --help                           Print help\n  -V, --version                        Print version\n```\n\n## Dashboard\n\nOn controlling `mihomo` itself, we recommend using a web-based dashboard. Some options include [metacubexd](https://github.com/MetaCubeX/metacubexd), [zashboard](https://github.com/Zephyruso/zashboard), or [yacd](https://github.com/MetaCubeX/Yacd-meta).\n\nWeb-based dashboards require enabling `external_controller` under `[mihomo_config]`. Applying this config will expose `mihomo`'s control API under this address, which you can then configure your dashboard to use this as its backend.\n\nYou can also put the static files of these dashboards under the `external_ui` directory if defined. In this case, `mihomo` will serve the dashboard locally under `{external_controller}/ui`. Please refer to the official documentation of mihomo for more information: [docs/external_controller](https://wiki.metacubex.one/config/general/#api), [docs/external_ui](https://wiki.metacubex.one/config/general/#_7).\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspencerwooo%2Fmihoro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspencerwooo%2Fmihoro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspencerwooo%2Fmihoro/lists"}