Open source dev tool

The inspector
cloudflared
never had.

A real-time HTTP request inspector for Cloudflare Tunnels. See every request, header, and body flowing through your tunnel — locally, instantly, beautifully.

MIT License Zero-dependency proxy 100% local
Tunnel Inspector
Live
GET /api/v1/users 200
POST /api/auth/login 201
DEL /api/posts/8231 404
PUT /api/settings 200
GET /api/config 304
PATCH /api/profile 200
Overview
Request
Response
Metadata
Method
GET
Status
200 OK
Duration
142ms
Time
14:23:41
Request headers
Authorization Bearer eyJ...
Content-Type application/json
User-Agent Mozilla/5.0

ngrok has it.
cloudflared doesn't.

ngrok ships with a beautiful inspector at localhost:4040. cloudflared gives you nothing. You're left debugging in the dark.

Without Tunnel Inspector

Flying blind through your tunnel

A webhook fires, something breaks. You have no idea what payload arrived, what headers were sent, or what your app returned. You're adding console.logs and crossing your fingers.

With Tunnel Inspector

Full visibility, zero changes to your app

Every request and response is captured and shown in a live dashboard. Click any entry to inspect full headers, parsed bodies, status codes, and timing — all in real time.

A thin proxy.
Full visibility.

One line change in your cloudflared config. The proxy sits invisibly in between, capturing everything without touching your app. Responses stream straight through, so SSE endpoints and large downloads behave exactly as they would without it. Every port here is configurable with a flag or an environment variable.

Internet
client request
cloudflared
tunnel daemon
Proxy
:8080 — captures all
SSE server
:4040
Inspector UI
/inspector
Your app
:3000

Everything you need
to debug your tunnel.

Real-time live feed

Requests stream into the dashboard via SSE the instant they hit your tunnel. No polling, no page refreshes, no delay — and the proxy never holds a response back to inspect it.

🔍

Full request inspection

Every header, every body, every status code — plus duration, time to first byte, and transferred size. Replay any captured request from the UI, or copy it as a runnable cURL command.

Smart body highlighting

JSON, GraphQL, HTML, XML, JavaScript, form data, multipart — auto-detected and syntax highlighted. Gzip and brotli are decoded for you; binary and oversized bodies are labelled, never dumped as mojibake.

🔎

Search and filter

Filter by method (GET, POST, PUT, PATCH, DELETE) or status class (2xx, 3xx, 4xx, 5xx), and search across paths and status codes in real time. Your filters survive a reload.

🛡️

100% local, redactable

Both servers bind to loopback and the API refuses non-local origins, so captured traffic never reaches your network. Add --redact to mask auth headers and cookies before they ever enter the feed — safe to screen-share.

⚙️

Built for agents too

A built-in MCP server hands your captured traffic to Claude Code, Cursor, or any MCP client — list, inspect, summarise, and replay requests without pasting a thing. The proxy itself stays Node.js built-ins only.

Up and running
in 3 steps.

No configuration required. One command and you're inspecting traffic.

01
Clone and install
Clone the repo and install dependencies.
$ git clone https://github.com/BlockbusterAndy/cloudflare-tunnel-inspector
$ cd cloudflare-tunnel-inspector
$ npm install
02
Update your cloudflared config
Point cloudflared at the proxy port instead of your app.
# ~/.cloudflared/config.yml
ingress:
- hostname: yourdomain.com
service: http://localhost:8080 # proxy, not :3000
- service: http_status:404
03
Start the inspector
Run both the dev server and the proxy together, then open the dashboard.
$ npm run dev:inspect
# Open http://localhost:3001/inspector

Help make it
even better.

Tunnel Inspector is open source under the MIT license and actively looking for contributors. Here's what's on the wishlist.

WebSocket frame inspection — upgrades are proxied and logged, frames aren't decoded yet help wanted
Edit headers and body before replaying help wanted
CLI wrapper — npx tunnel-inspector good first issue
Export logs as .ndjson good first issue
Persist captures across proxy restarts good first issue