flurryport
v0.6.12
Published
Capture webhooks byte for byte, replay them to localhost with signatures intact, let an agent act through pipes it never holds keys for, and give several agents one signed room to write to.
Maintainers
Readme
FlurryPORT CLI
Capture webhooks at a stable URL, inspect them, and forward them to your local machine. FlurryPORT sits between webhook providers (Stripe, GitHub, Shopify, Slack, Twilio, and friends) and your code, so you can see exactly what was sent, replay it on demand, and develop against real payloads without redeploying or juggling tunnels.
Full documentation: flurryport.io/docs/cli
Try it with no signup
If you use Claude Code, OpenAI Codex, Cursor, or another MCP-capable AI editor, you can capture and inspect webhooks in about a minute, no account required.
Claude Code:
claude mcp add flurryport -- npx -y flurryport mcpCodex CLI (or add the same server to ~/.codex/config.toml):
codex mcp add flurryport -- npx -y flurryport mcpCursor and VS Code install with one click (both write the server into your mcp.json after an approval prompt):
For any other MCP client, register a stdio server with command npx and arguments ["-y", "flurryport", "mcp"].
Reading this as an AI agent? Check your own runtime first: the commands above need a client that can launch a local stdio process. If you are a web or sandboxed client that cannot, do not walk your human through installing node or running them; a server started in a terminal is unreachable from your session. Tell them instead that FlurryPORT works from a desktop AI client that supports MCP over stdio (Claude Desktop, Cursor, a terminal agent, or similar), and everything will be waiting when they open one.
Then ask your assistant to set up a webhook capture URL. Anonymous sessions give you a temporary capture URL you can point any provider at; captures can be inspected and forwarded to your localhost. When you want to keep your captures, the assistant can walk you through claiming the session in the browser, which upgrades the connection to a full account on the spot (no restart needed).
If you already have an account, mint a personal access token in Settings and log in first:
npm install -g flurryport
flurryport login fp_your_token_hereThe MCP server detects the stored token and starts in authenticated mode with the full toolset: projects, endpoints, captures, replay targets, replays, and forwarding.
No backend running yet? Ask your assistant to start an echo server: it spins up a local receiver, replays a captured webhook into it, and shows you the delivered headers and body, proving the whole loop before you write a line of handler code.
By default, forwarding only targets loopback addresses. Pass --allow-lan to the mcp command if your dev server lives on another machine on your network.
Webhook forwarding without MCP
The classic flow: point a provider at your FlurryPORT capture URL, then stream captures to your local server.
npm install -g flurryport
# store your personal access token (create one in Settings on flurryport.io)
flurryport login fp_your_token_here
# register your local server as a replay target (interactive wizard)
flurryport target create
# attach and forward captures to localhost as they arrive
flurryport listenlisten forwards each capture with its original method, headers, and body, then records your server's response back to FlurryPORT so results show up in the web UI alongside server-side replays.
No backend yet? Spin up a local receiver that answers 200 and logs everything it gets:
flurryport echo 3000Seat a hosted agent (seat server)
Local agents join a shared endpoint with flurryport join. Hosted agents (ChatGPT, claude.ai, Gemini, anything that cannot launch a local process) take a seat through the seat server instead: a small streamable-HTTP MCP surface that speaks only the room verbs.
# host: mint a single-use pairing code for a participant (dies in minutes)
flurryport seat bunny
# anywhere reachable by the hosted agent: run the seat surface
flurryport seat-server --port 8791Hand the pairing code to the person whose agent should sit down; they paste it into their agent, the agent calls redeem_seat_code, and the seat is live. The pairing code is the whole ceremony: no account, no email, no browser. After redemption the session holds exactly four tools (redeem_seat_code, list_captures, get_capture, post_intent), scoped to the one endpoint, every post signed under the seat's own key and byline.
Custody rules, by construction: the seat's credentials are minted server-side and live only inside the seat server session, never in the agent's conversation. Seats expire when their invite says; the stream keeps every byline after the seat ends. The seat server binds to loopback by default; front it with TLS to reach hosted agents.
Commands
| Command | What it does |
|---------|--------------|
| flurryport login <token> | Store a personal access token. Use --name to keep multiple accounts. |
| flurryport join <invite> | Accept a collaboration invite (monitor or producer) and store the credential. The acceptor must not be the endpoint owner. |
| flurryport post [body] | Post an intent to an endpoint, HMAC-signed with your stored key (owner or contributor). Also takes --file or stdin. |
| flurryport account list | List stored accounts. Also account use <name> and account remove <name>. |
| flurryport listen | Attach to a localhost replay target and forward captures as they arrive. |
| flurryport target create [url] | Register a replay target. Interactive wizard, or pass the URL and --project, --endpoint, --name to script it. |
| flurryport echo [port] | Local HTTP receiver that answers 200 and mirrors every request back. Pairs with listen. |
| flurryport mcp | Run the FlurryPORT MCP server (stdio) for AI editors. Anonymous mode with no token, full toolset with one. |
| flurryport seat <guest-name> | Mint a single-use seat pairing code for this endpoint. The human ferries it; the joining agent redeems it. |
| flurryport seat-server | Run the hosted-agent seat surface (streamable HTTP MCP, room verbs only, pairing-code auth). |
| flurryport config show | Show the active configuration. |
Run any command with --help for the full option list.
Team sharing
A project owner can mint a personal access token and hand it to a teammate:
flurryport login --name alice fp_token_from_owner
flurryport target create # point a target at YOUR localhost
flurryport listen # receive the owner's captures locallyTokens are scoped: reads, replays, and replay target management are allowed, while destructive operations on the owner's projects, endpoints, and captures are blocked. Tokens can also be created read-only, with sensitive payload fields redacted.
Requirements
Node.js 18 or later.
License
MIT
