RoadmapThe WSS session inspector is shipped on Solo and Team. Next: mock server. Open the roadmap

Connect. Inspect. Share.

Local code.
Real traffic.

Connect your local apps to external services, inspect real traffic, and share what you're building — without deploying.

HTTP, WebSocket and TCP through one agent.

Download Mercur agent
console.mercur.sh / endpoints / webhooksagent connected

webhooks

https://webhooks.mercur.sh → localhost:3000
timemethodpathlatencystatus
14:02:04POST/stripe/webhook40 ms200
14:02:07GET/health77 ms200
14:02:11POST/linear/events114 ms200
14:02:15POST/gh/push151 ms201
14:02:18GET/assets/app.js188 ms304
14:02:21POST/stripe/webhook225 ms429
HTTP · WS · TCPProtocols on one agent. WebSocket and TCP are on paid plans.
macOS + npm CLIDesktop app for Mac, or Node.js 20+ on macOS, Linux, and Windows.
30 daysRequest logs kept on Mercur infrastructure, not on your machine.
HTTPWebSocketTCPRemote MCPWebhooksRequest replayIP allow listsnpm CLImacOS appRequest modifiersHTTPWebSocketTCPRemote MCPWebhooksRequest replayIP allow listsnpm CLImacOS appRequest modifiers
Connect. Inspect. Share.

What you can connect, inspect, and share today.

Connect

Put what you're running locally on a reachable URL.

Stop deploying just to receive a callback. Point Mercur at a local HTTP, WebSocket, or TCP port and paste the public URL into a webhook setting, a staging client, or an IP-restricted database connection. One agent runs every protocol. WebSocket and TCP are on paid plans.

  • HTTP
  • WebSocket
  • TCP
  • one agent
  • access controls
mercur — startforwarding

$ mercur list

ENDPOINTPROTOPORTSTATEURL
ep-webhookshttp3000stoppedhttps://webhooks.mercur.sh

$ mercur http 3000

Forwarding https://webhooks.mercur.sh → localhost:3000

Request log: on — inspect in the console

Inspect

See exactly what crossed the boundary.

Stop guessing what the provider actually sent. HTTP request history records method, headers, body, and timing. Replay a stored request after you fix a handler — stop manually rebuilding the failing request. Rewrite traffic in flight. Remote MCP lets an IDE agent read the same history. Stop copying request JSON into your coding agent.

  • HTTP history
  • headers
  • body
  • timing
  • replay
  • rewrites
  • MCP
Mercur console with live HTTP requests, an expanded PATCH body, and the endpoint public URL.

Share

Give a live local URL to your teammate.

Hand them the public endpoint URL. They hit the same local service you are running — a webhook receiver, a socket, or a database port you chose to expose. That is the Share job today.

  • live endpoint URL
Public endpointreachable
https://webhooks.mercur.sh→ localhost:3000

Anyone with the URL hits the service on your machine.

Install

Get the agent.

Desktop app on macOS, or the npm CLI on macOS, Linux, and Windows. Guest sessions work without an account.

CLI docs →
Mac
npm install -g @mercur_dev/cli
Linux
npm CLI@mercur_dev/cli · Node.js 20+
npm install -g @mercur_dev/cli
Windows
npm CLI@mercur_dev/cli · Node.js 20+
npm install -g @mercur_dev/cli
How it works

Four layers, from your laptop to a public URL.

Agent, relay, console, and access control — the path from your laptop to a public URL.

The macOS desktop app or the npm CLI (@mercur_dev/cli) runs the agent for every protocol. The browser console can also receive HTTP requests in Logging mode.

HTTP, WebSocket and TCP, handled by the same agent. HTTP and WebSocket get a subdomain; TCP gets a dedicated relay port. Every endpoint gets its own settings and request log.

Method, path, headers, body preview and timing for every request that lands. Take one endpoint offline and bring it back without restarting the agent. Rewrite requests in flight, and replay a stored HTTP request after you fix a handler.

Mark an endpoint private and allow only the IP addresses or CIDR ranges you name. Agent tokens rotate from settings.

mercur — startforwarding

$ mercur list

ENDPOINTPROTOPORTSTATEURL
ep-webhookshttp3000stoppedhttps://webhooks.mercur.sh

$ mercur http 3000

Forwarding https://webhooks.mercur.sh → localhost:3000

Request log: on — inspect in the console

SchematicOne agent · three protocols · one endpoint each
HTTP · webhooksWebSocket · streamsTCP · databases
console.mercur.sh / endpoints / webhooksagent connected

webhooks

https://webhooks.mercur.sh → localhost:3000
timemethodpathlatencystatus
14:02:04POST/stripe/webhook40 ms200
14:02:07GET/health77 ms200
14:02:11POST/linear/events114 ms200
14:02:15POST/gh/push151 ms201
14:02:18GET/assets/app.js188 ms304
14:02:21POST/stripe/webhook225 ms429
Settings · Access

Security

Restrict access with an IP allowlist when the endpoint is not public.

Public accessRestricted
IP whitelist
192.0.2.0/24198.51.100.10
IP or CIDR, one per line. Only listed addresses can connect.

CLI tokens

Authenticate the mercur CLI. Revoking a token stops tunnels started with it.

  • Laptopmcrcli_… active
  • CImcrcli_… active
Create CLI token
FAQ

Questions worth answering before you start.

Including the limits, and the ones where the answer is no.

Which protocols are supported?

HTTP, WebSocket and TCP. HTTP and WebSocket endpoints get a subdomain; TCP gets a dedicated relay port. The free plan covers HTTP; WebSocket and TCP are part of the paid plans.

Can I try it without creating an account?

Yes. The webhook inspector at /webhook-inspector provisions a temporary public URL immediately, with no account and no card: 1,000 requests per month, 50 stored requests, and a 24-hour TTL. Register to unlock Endpoints. Walkthroughs live under /blog.

What does the free plan include?

After registering: one HTTP endpoint of your own, 10,000 requests per month, 100 stored requests, 5 request rewrites and 8 concurrent sessions. Each of those is enforced in code, and when a monthly limit is reached the relay answers 429 rather than dropping traffic quietly.

Can I pay for a plan today?

Yes. Open /pricing to compare Free, Solo, and Team with country-localized Paddle prices. Checkout happens in the console under Settings → Plan & usage (sign in first). Solo includes a one-time 7-day trial with a card on file; the free plan stays available without paying.

What is remote MCP, and which plans include it?

Remote MCP lets an MCP client (Cursor, Claude Desktop, and others) inspect HTTP request history for this workspace’s tunnels via /api/mcp and a Bearer API key. Included with Solo and Team — Free shows an upgrade path in Workspace Settings → API keys. Setup: /mcp and the MCP guide under /blog.

Which platforms can run the agent?

The macOS desktop app runs the agent for all three protocols, as a DMG for Apple Silicon and Intel. The npm CLI (@mercur_dev/cli) does the same on macOS, Linux, and Windows with Node.js 20+. The browser console can receive HTTP traffic in Logging mode without installing anything.

How is access controlled?

Console routes require an authenticated session, the agent authenticates with a token you can rotate, and any endpoint can be marked private with an IP or CIDR allow list.

Where are request logs stored, and for how long?

On Mercur infrastructure, not on your machine, for 30 days. Bodies are truncated to a 256 KB preview and headers to 32 KB. An endpoint only records logs in Logging mode, or in Tunneling when full traffic capture is enabled.

What happens when my agent disconnects?

The endpoint stops serving within about 15 seconds and returns 503 until the agent reconnects. Requests that arrive during that window are not queued or replayed.

Can I replay a stored request?

Yes. In the console request history, Retry re-sends a stored HTTP request through the endpoint so you can re-test after fixing a handler. The endpoint must be in proxy mode with the agent connected. Replay respects plan retention and stored-request limits; payloads omitted for size cannot be replayed.

Open the full FAQ page →

Point a public URL at localhost.

Open the webhook inspector for a temporary public URL without an account. Registering unlocks Endpoints on the free plan.