Find your next open-source project

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

Route selected traffic through a Tailscale exit node while keeping other traffic direct, using sing-box rules.

111
9
Go
GPL-3.0
6 days old

What it does

TailSplit is a routing client for people who use more than one Tailscale network and want to send only some traffic through an exit node. It builds on sing-box routing rules, so you can decide which domains and IP ranges go through the selected exit node and which stay direct. The app also switches between multiple Tailscale networks, and changing a network signs out the embedded device and asks you to authorize the new one.

It ships as a desktop app for macOS and Windows and as a CLI for macOS, Windows, and Linux. Two routing modes are available: Application proxy exposes local HTTP/SOCKS listeners for individual applications, while System routing captures system traffic when tun.enabled is set. Both modes create a DNS TUN and need a privileged network service—installed by the Windows Setup, requested via administrator approval on macOS at first connection.

Get started

  1. Download a desktop installer from GitHub Releases, or install on macOS/Linux with the checksum-verifying installer:

    curl -fsSL https://tailsplit.idy.dev/install.sh | sh
    

    For a user-local CLI, append sh -s -- --cli --no-sudo. macOS users can also use the Homebrew tap.

  2. Open TailSplit, sign in to Tailscale, and pick a network and exit node. Opening the app does not connect automatically; pick an exit in the connection page's picker or test exits via Tailscale Ping.

  3. Review the routing rules under Settings → Routing rules before connecting. The YAML equivalent is:

    rules:
      source: builtin
    

    You can instead choose a custom URL or file, or no rule list. Builtin rules download on first use and are cached for offline reuse.

For the CLI, start from config.example.yaml:

tailsplit init -c config.yaml
tailsplit check -c config.yaml
sudo tailsplit run -c config.yaml

Run the Windows CLI from an Administrator terminal when connecting. See CLI configuration for DNS, rule lists, network privileges, and migration.

Requirements and limits

  • Desktop support covers macOS 14+ (Apple Silicon or Intel) and Windows 10+ x64 or Windows 11 ARM64; Linux is CLI-only for amd64 or arm64.
  • Both routing modes need privileged network access: Windows Setup installs the service, while macOS asks for administrator approval on first connection.
  • Windows executables are unsigned, so verify release checksums before installing.
  • Custom rule sources accept Base64 and plain-text domain lists, including lists without an AutoProxy header.
  • Building requires Go 1.26.2+ and Python 3.11+; macOS app builds also need Xcode Command Line Tools and Swift. The project is licensed GPL-3.0-or-later, with third-party notices included.

HotRepo's take

The project appeared on the Go new-project list on 2026-11-08, adding 7 stars and 1 fork in roughly a one-hour window and reaching 108 stars within its first week. That is a small sample: it shows early interest in a niche Tailscale routing use case, not broad adoption. The README is unusually detailed for a new project—installer checksums, platform matrices, and CLI docs are all present—but the unsigned Windows binaries and the short observation period mean there is not yet enough usage evidence to judge the release side.

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