Request inspection
For HTTP tunnels you can inspect every request and response — live in the terminal or in the dashboard.
Request logging is off by default for each account: it costs CPU and memory, and the host is kept light. An admin enables it per user (see Limits & permissions).
What is captured
When enabled, each exchange captures:
- Method, path, status, and latency
- Byte counts
- Request and response headers
- A bounded prefix of the bodies (default 32 KB cap; the most recent ~50 requests are kept per tunnel)
In the terminal
While tnnl http <port> runs, each request prints a colored line:
12:30:01 GET /api/users 200 12ms · 1.2kBStatus is colored by class, and WebSocket upgrades show as 101.
tnnl logs [id] attaches the same live feed to an already-running tunnel — pass a tunnel id, or omit it if you have exactly one.
In the dashboard
The inspector shows a live table (streamed over SSE). Click a request to see its headers and pretty or raw body, and a Replay button re-runs a captured request.
What is not inspected
Everything is in-memory and bounded: history is dropped when the tunnel closes or the server restarts. Nothing is persisted to disk. TCP tunnels are opaque and are not inspected.
tnnl logs say request logging is disabled — ask an admin to enable it.