Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

Native macOS proxy client built on mihomo, with routes, subscriptions, TUN and a built-in MCP server.

125
7
Go
NOASSERTION
new today

What it is

bowel is a native macOS client for the mihomo proxy core. The interface is written in Go with the MyGo toolkit and rendered directly on the GPU, so there is no WebView layer. It is aimed at people who want to run a mihomo-compatible subscription on a Mac and manage routing from a desktop app rather than hand-editing YAML.

The main surfaces are Routes (route by purpose, pick exit nodes manually or by speed), Connections (see app, destination, rule, exit and speed per connection, and reroute domains live), and Providers (import subscription URLs, node links, YAML or QR codes, with usage and expiry per source). A menu-bar panel toggles system proxy takeover, switches proxy modes and picks default nodes. You can also add custom domain/keyword/IP rules, verify real exit locations through Cloudflare trace, turn the Mac into a LAN gateway for TVs and consoles, and enable TUN to capture apps that ignore the system proxy. Six skins restyle the whole interface.

The bundled MCP server lets Claude Code and other agents read status and troubleshoot connections; it asks before changing settings by default. The README gives the registration command:

claude mcp add --scope user bowel -- /Applications/bowel.app/Contents/MacOS/bowel mcp

Install and first run

Released builds are Apple silicon only and target macOS 12 or later; the signed and notarized disk image is bowel-<version>-arm64.dmg on the latest release. Download it, drag the app into Applications, then add a provider (subscription URL, node links or QR code) and turn on takeover. The interface supports English, Simplified Chinese, Traditional Chinese and Japanese, and settings are searchable with ⌘F.

Develop from source

Building needs Go 1.27.3+ and no Node or Bun; GOTOOLCHAIN=auto fetches the right toolchain. Fetch the core and geo data first, then run the dev loop or build the app:

./scripts/fetch-core.sh     # mihomo + GeoSite/GeoIP data into resources/
go tool mygo dev            # runs the app, rebuilt on every change
go tool mygo build          # bowel.app and a .dmg, signed but not notarized
./scripts/release.sh        # build, notarize and staple
CGO_ENABLED=0 go test ./... # includes tests that start the real core

How the code is organized is covered in the architecture notes and the product structure in the IA document; the static website lives in site/ and goes live when changes reach main. The project was previously called Moho, so the Go module path and bundle identifier still reference that name; on first launch data in ~/Library/Application Support/Moho is moved to …/bowel.

Constraints

  • macOS 12+ and Apple silicon for released builds; there is no stated Intel build path.
  • The app is licensed under PolyForm Noncommercial 1.0.0, so commercial use needs a separate license arranged through an issue.
  • The bundled mihomo core remains GPL-3.0 and runs as a separate program rather than being linked; the matching core source is attached to each release, and core fonts and flag images keep their own licenses.
  • System proxy takeover, TUN and gateway mode change how traffic leaves the Mac, and gateway mode exposes the machine to other devices on the LAN.

HotRepo's take

The project appeared on HotRepo's Go new-project list covering roughly 2026-11-07 17:45 to 2026-11-08 14:15 UTC, recording 107 stars and 5 forks in that window. That is a single short observation window, so it says little about sustained adoption. What stands out concretely is the delivery model: a signed, notarized native app with a separate GPL core process, published architecture and IA docs, and a test suite that starts the real mihomo core. The noncommercial license is the main thing to check before deeper integration.

Written by AI from the project's README, updated . The project's own docs are the source of truth.