Tunneling & relay
A persistent outbound WebSocket to a self-hosted relay: multiplexed frames, heartbeats and automatic reconnect. No inbound port, no firewall changes.
One small Go binary that tunnels public traffic to your machine, lets you watch, rewrite, break and replay requests, and diff two implementations side by side.
Live inspector
Try the filters — this is the same split-view the dashboard gives you at localhost:4040.
{
"id": 8821,
"email": "ada@lovelace.dev",
"plan": "pro"
}Architecture
Your machine never accepts an inbound connection. The agent holds an encrypted WebSocket open to the relay, the relay maps a generated hostname to that tunnel, and the inspection layer observes traffic without altering normal request and response behaviour.
Capabilities
A persistent outbound WebSocket to a self-hosted relay: multiplexed frames, heartbeats and automatic reconnect. No inbound port, no firewall changes.
Requests stream into localhost:4040 in real time with full headers, bodies, query params, status and a timing breakdown you can search and filter.
Re-fire any captured request, or change method, URL, headers and JSON body inline first. Replays are tagged and linked to their parent request.
Point Stripe, GitHub, Shopify, Discord, Slack, Twilio, SendGrid or PayPal at a generated endpoint. Provider and signature headers are detected automatically.
Declarative patterns like /api/v1/* and /auth/* fan a single public URL out across as many local microservices as you run.
Fixed or jittered latency, configurable error rates, forced status codes, dropped connections and artificial timeouts on the routes you choose.
Mirror live traffic to a second implementation and compare status, headers and nested JSON bodies side by side before you ship the rewrite.
Save request collections as JSON fixtures and replay whole interactions in order, with the original delays preserved.
Access tokens, named tunnels, expiry rules and an instant kill switch — plus redaction of secrets before anything is written to disk.
Quick start
go install github.com/7uyash/routa/cmd/routa@latestGo 1.21+, or grab a release build.
routa dev 3000Node, Go, Python, Rails — anything serving HTTP locally.
http://localhost:4040Traffic starts streaming immediately.
routes:- path: "/api/v1/users/*"target: "http://localhost:8081"mutations:- name: "Inject Debug Header"request:set_headers:X-Debug-Mode: "true"simulations:- latency_ms: 250error_rate: 0.1shadows:- shadow_url: "http://localhost:9090"compare_response: true
Capture a real webhook once, save it as a fixture, and replay the whole sequence on demand — no provider, no waiting, no flaky reproduction steps.