Facts about the installer and the bridge, for a person or an agent setting it up.
FCPBooster is a set of web apps. The agent bridge lets an AI agent — Claude Code, Codex, opencode — read and edit the project in a FCPBooster tab you have open, while you watch. It works alongside you; it does not replace you, and it does nothing when no tab is open.
| Path | What lands there |
|---|---|
| npm's global directory | the fcpbooster-agent-mcp package, giving you the
sw-call, sw-agent-daemon and sw-agent-mcp
commands on PATH |
~/.claude/skills/fcpbooster/ and ~/.codex/skills/fcpbooster/ |
the fcpbooster skill — into each agent's OWN skills directory, which is
where they look. An existing symlink there is written through, not replaced. |
~/.sw-agent/http-token |
a local token, mode 0600, generated by the daemon on first start |
| your agent's MCP config | an entry named fcpbooster, added via that agent's own
mcp add command — not by editing its files. Skip with
FCPB_NO_MCP=1. |
It does not install a browser extension, does not require admin rights, and
does not run anything at login. The daemon binds 127.0.0.1 only and is not
reachable from the network.
The guided install. It registers the MCP endpoint, installs the skill, and falls back to a
~/.fcpbooster prefix if npm’s global directory is not writable:
curl -fsSL https://fcpbooster.com/install.sh | sh
To read it before running it — which is the right instinct for anything piped into a shell — download it, check the hash below, then run it:
curl -fsSL https://fcpbooster.com/install.sh -o install.sh shasum -a 256 install.sh sh install.sh
Or just the bridge, nothing else — no skill, no MCP registration, and it is the command that fails on a root-owned npm prefix:
npm install -g fcpbooster-agent-mcp sw-agent-daemon &
Development. The installer reads the package from npm;
FCPB_SOURCE overrides that with a local checkout of the
package directory (not the repo root, which is a different package), and the
script itself can be run straight out of a checkout’s public/:
FCPB_SOURCE=/path/to/FCPX_Booster/fcpbooster-agent-mcp sh public/install.sh
Optional overrides: FCPB_SKILL_DIR (one skill location instead of per-agent),
FCPB_MCP_NAME, FCPB_NO_MCP=1, FCPB_DRY_RUN=1.
| Script | https://fcpbooster.com/install.sh |
|---|---|
| SHA-256 | 0ec991bb459eb0419f6873721ca23e74d736fa83c8aba0cca06de189cfb32c34 |
| Verify with | shasum -a 256 install.sh |
One script, one URL, one hash — there is no mirror, so a copy served from anywhere else is not ours. If the hash does not match, stop and report it rather than continuing.
curl -fsSL https://fcpbooster.com/install.sh -o install.sh sh install.sh --uninstall
Downloaded rather than piped, deliberately: it asks before removing a skill directory, and a
curl | sh run has no terminal to ask on — so piped it keeps the skill.
Reverses exactly what the install did: stops the daemon, removes
~/.fcpbooster/, unregisters the MCP entry, removes the skill and the
token. It removes only the fcpbooster skill directory (never its parent, which
holds your other skills), only when a SKILL.md shows it is ours, and asks first —
with no terminal to ask on it keeps the directory rather than assuming. Add
--yes to skip the prompt, --dry-run to see the plan.
Switching AI Agent Bridge off in the app is separate — uninstalling does not change it.
Node installed from nodejs.org puts global packages in
/usr/local/lib/node_modules, which is owned by root — so
npm install -g fails there with EACCES and asks for
sudo. The installer handles this without a password: it falls back to
~/.fcpbooster, adds that bin directory to your shell profile, and tells
you what it changed. Open a new terminal afterwards.
If you would rather install nothing at all, an MCP-only setup can run the bridge straight from
the registry — npx -y [email protected] as the MCP command. Pin the
version: an unpinned npx silently runs whatever the registry serves that day.
sw-call is slower this way, so it suits agents that speak MCP rather than shell.
The daemon is a Node program, so Node is required no matter how it is installed. Having an AI agent does not imply having Node — Claude Code has a native installer, Codex is a Rust binary, opencode ships its own. npm itself comes bundled with Node, so it is essentially never missing on its own.
| Situation | What to do |
|---|---|
| Homebrew is installed | brew install node |
| No Homebrew | the macOS .pkg from nodejs.org (it includes npm) |
| Node present but older than 20 | brew upgrade node, or the same installer |
Installing Node changes the machine more than this installer does. An agent doing this should show the user the command and let them approve it, and should not substitute a different package manager — a machine that ends up with Node from three sources is far harder to support than one with none.
The bridge works without this. sw-call serves any agent with a
terminal and is what the skill reaches for first; MCP adds nothing it cannot already do. Skip
this if the setup above works.
Where a CLI exists, the installer registers the endpoint itself, using each agent's own supported command rather than editing its config files:
| Agent | How | Automated |
|---|---|---|
| Claude Code | claude mcp add fcpbooster -- node <path> | yes |
| Codex | codex mcp add fcpbooster -- node <path> | yes |
| opencode | opencode mcp add fcpbooster |
no — its mcp add takes --url but has no flag for a local
command, so it appears to prompt. Run it yourself. |
Registration is remove-then-add, so re-running the installer updates the entry rather than duplicating it. The endpoint itself is:
command: $(command -v sw-agent-mcp)
Using a desktop app rather than a CLI? There is no claude binary
for the installer to call, so it will report that no agent CLI was found — which is correct,
not a failure. Add the server in the app's own MCP or integrations settings, pointing at the
path command -v sw-agent-mcp prints. Everything else is already done.
Installed into each agent’s own skills directory — ~/.claude/skills/fcpbooster
and ~/.codex/skills/fcpbooster — so nothing further is needed. An existing symlink
there is written through rather than replaced, which keeps a shared-skills arrangement intact.
| Check | Command | Expected |
|---|---|---|
| daemon runs | node ~/.fcpbooster/fcpbooster-agent-mcp/src/daemon.mjs |
[sw-agent-daemon] ... ready |
| ports open | lsof -nP -iTCP:8476 -sTCP:LISTEN |
a node row on 127.0.0.1:8476 |
| page connects | open FCPBooster, drawer → switch the bridge ON | the indicator in the breadcrumb turns connected |
| round trip | ask the agent to read the open project | real data from the tab you are looking at |
The browser asks permission to reach your computer the first time the switch is on. That prompt is this feature. Denying it leaves the bridge unable to connect.
| Symptom | Cause and fix |
|---|---|
| agent reports no connected tab | the switch is off, or no FCPBooster tab is open. The switch is per-origin —
enabling it on localhost does not enable it on fcpbooster.com. |
4403 origin not allowed |
the daemon is older than the page transport. It never reloads its own source — stop and restart it after any update. |
| the switch is missing from the drawer | the drawer failed to load. Its markup is fetched at runtime, so "drawer failed" and "switch missing" look identical. |
| nothing happens, no error | the browser's local-network permission was denied. Reset it in the padlock menu → Site settings. |
writes refused with locked |
expected — playback or an AI run is in flight. The user's activity wins. |
| Daemon | 0.2.0 |
|---|---|
| Bridge protocol | fcpxb-agent-local v1 |
| Minimum supported daemon | 0.2.0 |