Access your Tailscale network directly from Chrome. No system VPN required.
https://tesseras.org/tailchrome/ | Chrome Web Store
Tailchrome runs a full Tailscale node per browser profile, without touching system networking. Tailnet traffic is routed through a local SOCKS5/HTTP proxy using a PAC script, so it works alongside (or without) the Tailscale system app.
- Per-profile isolation — each Chrome profile gets its own independent Tailscale node and identity
- Exit nodes — route all browser traffic through any exit node on your tailnet
- MagicDNS — access devices by name, not IP
- Subnet routing — reach resources behind subnet routers
- Taildrop — send files to other devices on your tailnet
- Profiles — create and switch between multiple Tailscale identities
The extension has two parts:
- A Chrome extension (Manifest V3) that manages proxy configuration and provides the popup UI
- A native host (Go, using
tsnet) that runs the actual Tailscale node and exposes a local proxy
They communicate over Chrome's native messaging protocol.
- Install Tailchrome from the Chrome Web Store
- Click the extension icon and follow the prompts to install the native host
- Log in to your Tailscale account
- Go 1.21+
- Node.js / npm
- macOS (native host currently targets Darwin)
make all # build everything
make extension # extension only
make host # native host only
make dev # extension watch mode
The extension is built to extension/dist/. The native host binary goes to dist/tailscale-browser-ext.
- Build the extension and native host with
make all - Go to
chrome://extensions, enable Developer Mode, and loadextension/dist/as an unpacked extension - Copy the extension ID Chrome assigns
- Install the native host:
./dist/tailscale-browser-ext --install=<extension-id>
This project is still early. Bug reports and feature requests are welcome. Please open an issue first before submitting a PR so we can discuss the approach.
MIT
