Find web interfaces
across your tailnet

List dashboards, docs, admin pages, and test builds across your Tailscale network. Install WebFinder on each Mac/Linux peer you want listed.

macOS app + macOS/Linux CLI
Download on the App Store
Menubar App
WebFinder menubar app showing local and Tailscale services
iPhone App
Setup guide

Create a Tailscale OAuth client with Devices: Read scope, then paste the Client ID and Secret into the app. Install and start WebFinder on each Mac or Linux device you want to show up.

CLI Output
web-finder
$ web-finder
 
Local:
Docs Preview http://127.0.0.1:8001
 
UDM Pro:
UniFi OS https://192.168.2.1:443
 
Tailscale:
workstation Jellyfin https://workstation.example.ts.net:8096/web/
workstation qBittorrent WebUI https://workstation.example.ts.net:38080/
storage Synology NAS https://storage.example.ts.net:5001/

Install

Install the app, start the CLI publisher, or hand the prompt to an agent on a Mac or Linux device.

iOS

iPhone and iPad app. Free and open source.

Download on the App Store
  1. Create a Tailscale OAuth client with Devices: Read
  2. Install and run WebFinder on Mac/Linux devices you want to discover
  3. Paste Client ID and Secret into the app, then pull to refresh

macOS

Signed and notarized menubar app + CLI via Homebrew

brew install --cask zeulewan/tap/webfinder
  1. Installs WebFinder.app to Applications
  2. Installs the web-finder CLI publisher
  3. Works with Gatekeeper as a notarized Developer ID app
  4. Run web-finder start --auto-publish for recommended setup

Linux

CLI publisher for Linux devices on your tailnet

curl -sSL https://raw.githubusercontent.com/zeulewan/web-finder/refs/heads/main/install.sh | bash
  1. Clones repo to ~/.web-finder
  2. Requires Node.js LTS; apt-based distros install it automatically
  3. Adds web-finder CLI to PATH
  4. Run web-finder start --auto-publish for recommended setup
  5. Auto-publish may prompt for local Tailscale operator permission

Agent install

Copy this prompt into an agent with terminal access to the device

Install WebFinder from https://github.com/zeulewan/web-finder on this Mac or Linux device. It is fully free and open source, MIT licensed, and auditable, so inspect the repo and install script first if you do not trust it. On macOS, install with: brew install --cask zeulewan/tap/webfinder. On Linux, install with: curl -sSL https://raw.githubusercontent.com/zeulewan/web-finder/refs/heads/main/install.sh | bash. Use the documented install command for this OS; if it needs sudo or fails, explain why before using a custom install path. After installing, explain the two start modes: passive web-finder start, or web-finder start --auto-publish for individual setups. Ask which mode I want before starting it. Only use --auto-publish if I explicitly confirm, because it creates Tailscale Serve mappings for detected local web UIs. If WebFinder prompts for local Tailscale operator permission on Linux, explain that it lets WebFinder manage Tailscale Serve mappings without running as root and ask before answering yes; sudo may ask for my password the first time. After I choose, start WebFinder in that mode, then verify the install with web-finder version and web-finder status. If status shows Tailscale Serve permission errors, report the exact fix it recommends.
  1. Works for Mac or Linux devices where an agent has shell access
  2. Asks before enabling auto-publish
  3. Keeps the install auditable from source

To uninstall from macOS or Linux:

curl -sSL https://raw.githubusercontent.com/zeulewan/web-finder/refs/heads/main/uninstall.sh | bash

How discovery works

Use auto-publish for the recommended setup, or plain start for passive discovery.

🌐

Manifest-based discovery

Remote devices show up after WebFinder is installed and started on each Mac or Linux peer you want to discover.

🔍

Local smart detection

Each publisher fetches titles locally. Recommended auto-publish mode can create Tailscale Serve mappings for detected listening web ports.

🔒

Tailnet-safe sharing

web-finder start --auto-publish is recommended and lets WebFinder create Tailscale Serve mappings for detected local web UIs. On Linux, it may prompt for local Tailscale operator permission. Plain web-finder start is the passive default and only advertises existing mappings.

📋

Agent-friendly CLI

JSON output mode lets AI agents and scripts query your network programmatically.

CLI usage

Works great standalone or piped into scripts and AI agents.

web-finder Show local services, gateway services, and Tailscale manifests
web-finder start Passive default: advertise existing Tailscale Serve mappings
web-finder start --auto-publish Recommended: publish detected local web UIs with Tailscale Serve; may prompt on Linux
web-finder stop Stop sharing and disable autostart
web-finder status Check daemon, Tailscale Serve, MagicDNS, and version
web-finder --json Machine-readable JSON output
web-finder --debug Verbose output, diagnostics, and peers with no published services
web-finder update Pull latest CLI (and app on macOS)
web-finder version Show installed version and commit

FAQ

Common questions about WebFinder for Tailscale.

Is WebFinder for Tailscale free?
Yes, completely. There are no in-app purchases, subscriptions, or ads. The app is open source under the MIT License and available on GitHub.
Do I need a paid Tailscale account?
No. WebFinder for Tailscale works with free personal Tailscale accounts. You just need to create an OAuth client with the Devices: Read scope, which is available to all Tailscale users.
Does it work without Tailscale?
Yes, on macOS and Linux. Run web-finder on the CLI or use the macOS menubar app to discover web services running on that machine. Tailscale is needed for remote devices, and those remote devices need WebFinder running so they can publish their manifests.
What ports does WebFinder scan?
For remote peer discovery, WebFinder reads existing Tailscale Serve mappings, fetches titles from the matching local web ports, and publishes those results as a manifest. The standalone CLI and macOS app can also scan local ports on the machine where they are running. Other clients fetch peer manifests instead of port-scanning the peer.
Is there a daemon or autostart?
Yes. Run web-finder start --auto-publish once on each Mac or Linux device for the recommended setup. It starts the local manifest daemon, enables autostart where supported, and lets WebFinder create Tailscale Serve mappings for detected local web UIs. On Linux, auto-publish may prompt to set the current Unix user as the local Tailscale operator; sudo may ask for your password the first time. Plain web-finder start remains the passive default and only advertises mappings you already created. macOS uses a LaunchAgent, most Linux systems use a systemd user service, OpenWrt uses procd, and other non-systemd systems fall back to cron when available.
Is my data sent to any servers?
No. OAuth credentials are stored locally on your device. The app connects to api.tailscale.com to fetch your device list, then connects directly to WebFinder manifest endpoints and service URLs on your own tailnet. There is no analytics, tracking, or telemetry.
What is an OAuth client and how do I create one?
An OAuth client lets WebFinder read your Tailscale device list. Go to the Tailscale admin console, create a new OAuth client, select the Devices: Read scope, and copy the Client ID and Secret into the app. It takes about 30 seconds and only needs to be done once.
Which platforms are supported?
iOS (iPhone and iPad), macOS (native menubar app + CLI), and Linux (CLI). macOS installs through Homebrew, Linux installs with the shell installer, and the CLI behavior is the same on both platforms.