--- permalink: /install robots: "index,follow" ---

## Bridge not running — let's wake it up

Chrome's native messaging is alive but the local host process exited. The bridge launches on demand via Chrome's `connectNative` — you don't start it manually; the popup's Retry button does that. If retries fail, the host is crashing on startup.

`which tap`

1. Run `which tap` — if it prints nothing, the CLI isn't on your PATH. Re-install with the command at the top of this page.
2. If it prints a path, open `host.log` in that same directory — the last few lines say what's crashing on startup.
3. Common causes: stale extension ID in the native-messaging manifest (run `tap bridge setup` to rewrite it), Chrome anti-DoS lockout after repeated crashes (fully quit + re-open Chrome to clear).
4. Then return to the Tap popup and click Retry connection.

## Chrome is refusing to launch the bridge

Either (a) the native-messaging manifest is missing or points at the wrong extension ID, or (b) Chrome's anti-DoS blocklist kicked in after the host crashed several times in a row.

`tap bridge setup`

1. Run the command above — it re-writes the native-messaging manifest with the right extension ID.
2. Fully quit Chrome (⌘Q on macOS) and re-open it. This clears any anti-DoS blocklist entry.
3. Click the Tap toolbar icon → Retry connection.
4. If it still fails, run `tap bridge status` in a terminal — it prints exactly which side is misconfigured.

## Bridge connection error — let's diagnose

The popup got a connection error that doesn't match any known failure mode. The diagnostic command below prints which side is unhappy.

`tap bridge status`

1. Run the command above and read the output. It checks the CLI install, the daemon socket, and the native-messaging manifest in one pass.
2. If the manifest is missing: `tap bridge setup`.
3. If the daemon isn't running: `tap bridge start`.
4. Still stuck? Open an issue with the `tap bridge status --json` output — that's the diagnostic the maintainer needs.

Extension installed · bridge not registered

# You're three commands away from
a connected extension.

The Taprun extension talks to a CLI on your machine through Chrome Native Messaging — an OS-supervised channel, no network port. After a one-time setup, Chrome launches the bridge on demand whenever you trigger a tap. Pick up the commands from the Tap popup, or copy them from here.

1

## Install the CLI and register the bridge

required · ~60 seconds · macOS / Linux

Two commands, one time. The extension ID is pinned via the manifest `"key"` field, so `tap bridge setup` takes no flag — no copy-pasting from the popup.

    # Install the CLI
    $ {{ site.data.cli.install.brew }}
    # or
    $ {{ site.data.cli.install.curl }}

    # Register the Chrome Native Messaging manifest (no daemon, no port)
    $ tap bridge setup

Then open Chrome and click the Taprun toolbar icon — the bridge launches automatically when this extension's service worker activates. The popup should say Connected to local bridge. The bridge lives only as long as the extension is active; closing all Chrome windows shuts it down, and re-opening Chrome wakes it back up.

2

## Optional · Wire your AI agent

Claude Code · Cursor · Windsurf · Codex · any MCP host

Auto-edit your MCP host's config so it can call Tap as an MCP tool. Independent from Step 1 — these are two separate channels.

    $ tap mcp connect           # auto-detects host, edits config

Then quit and reopen your AI agent (it only re-reads MCP config on launch). After that you can ask it "run the github-stars tap" and it dispatches via MCP.

3

## Optional · Run taps from the terminal

scripts · cron · CI · no AI agent involved

Saved taps run directly from the shell. The extension is only invoked when a tap needs your authenticated browser session.

    $ tap ls                      # list saved taps
    $ tap run github/stars       # execute one

Windows users: the Chrome-extension bridge is honest-warning until verified — use the headless / Playwright path via `npx -y @taprun/cli`. +1 demand for native bridge support here.

## Verify it worked

1. Click the Taprun icon in your Chrome toolbar.
2. Connected: Connected to local bridge
3. Still red? The popup tells you which failure mode you hit:
   - Setup required → Step 1 second command (`tap bridge setup`) hasn't run yet.
   - Bridge not running → the extension's service worker isn't active. Make sure a Chrome window is open and click the Taprun toolbar icon. If it persists, check `host.log` next to the `tap` binary for a host crash.
   - Chrome blocked the host → Restart Chrome to clear the crash lockout.
   - Bridge down → See troubleshooting below.

Still disconnected? Four things to check

- Native-messaging host not registered — The extension talks to the CLI through Chrome's Native Messaging transport, not a network port. The host manifest must exist at `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/dev.taprun.daemon.json` (macOS) or `~/.config/google-chrome/NativeMessagingHosts/dev.taprun.daemon.json` (Linux). Run `tap bridge setup` (no flag — the extension ID is pinned in the manifest) to (re)register it. (The filename still says ".daemon" for historical reasons; post-2026-05-14 the NM host IS the dispatch core — there's no separate daemon process. Renaming the file would force a coordinated CLI+extension release, which is impractical, so we kept the legacy name and guard it with a static cross-repo test instead.)
- Chrome blocked the host (crash lockout) — If the host has crashed ≥5 times in ~3 minutes, Chrome refuses to launch it again for ~10 minutes. The popup will say "Chrome blocked the host". Restart Chrome to clear the lockout. Then check `host.log` next to the `tap` binary for the underlying crash reason.
- MCP host not restarted — Claude Code / Cursor only re-read MCP config on launch. Quit fully (not just close the window) and reopen.
- Service worker asleep — Chrome MV3 puts background workers to sleep after ~30s idle. Click the Taprun extension icon once to wake it; it reconnects within a second.

## Once connected, try these

Login-required taps that the Taprun extension makes possible. Click any to see the tap definition and how to invoke it.

linkedin/post
Post to LinkedIn

Compose and publish a post to your LinkedIn feed using your real session — no API key, no OAuth dance.

View tap →
weibo/hot
Weibo trending

Pull Weibo's logged-in trending list. Public API blocks unauthenticated reads; the extension uses your cookies.

View tap →
instagram/explore
Instagram explore

Read the Instagram explore feed in your authenticated session — what your account actually sees, not a public proxy.

View tap →

→ Browse all 140+ taps