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 dependencies 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.

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.

🔍

Full request inspection

Every header, every body, every status code. Inspect the full request and response cycle for each captured entry.

Smart body highlighting

JSON, GraphQL, HTML, XML, JavaScript, form data, multipart — auto-detected and syntax highlighted. Copy to clipboard with one click.

🔎

Search and filter

Filter by method (GET, POST, PUT, DELETE, PATCH) or search across URL paths in real time. Find the request you need instantly.

🛡️

100% local

The proxy and dashboard run entirely on your machine. Your traffic data never leaves localhost. No accounts, no cloud, no telemetry.

⚙️

Zero-dependency proxy

The proxy server is a single .mjs file using only Node.js built-ins. Nothing to install, nothing to update, nothing to break.

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:3000/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 inspection support help wanted
Request replay from the UI help wanted
CLI wrapper — npx tunnel-inspector good first issue
Export logs as .ndjson good first issue
Status code filter (2xx / 4xx / 5xx) good first issue