Skip to content
Trailswitch

Debug one service locally. Leave appsettings alone.

Trailswitch decides, per service, whether a request goes to the copy on your machine or to QA. Set it up once, then switch with a click: no more config edits, no code changes, no redeploys.

Windows 10 and 11 · macOS and Linux soon · Early access

Trailswitch proxy :9000

Every service behind one proxy, each with its own Local, QA, or Mock switch. Edges show which calls succeeded and which failed.

Tap a screenshot to see it full size.

Drag or scroll to look around.

Stop rewriting config to test one change.

To run one service locally against everything else on QA, most teams edit base URLs, restart, and hope the edit never gets committed.

Without Trailswitch

appsettings.Development.json
 {
   "Services": {
-    "OrdersApi": "https://orders.qa.internal",
+    "OrdersApi": "http://localhost:5101",
     "UsersApi": "https://users.qa.internal",
     "PaymentsApi": "https://payments.qa.internal"
   }
 }
  • Edit the file, restart every caller, and do it again for the next service.
  • Remember to undo it, or the localhost URL ends up in a commit.
  • Nothing shows you what each request actually did.

With Trailswitch

routes via localhost:9000
  • /orders routed to Local localhost:5101
  • /users routed to QA users.qa.internal
  • /payments routed to QA payments.qa.internal
  • Flip a service to Local or QA while traffic runs. No restart.
  • After one-time setup, config files stay put, so no localhost URL leaks into a commit.
  • Every request is captured, so you see where it went and what came back.

One proxy. Every service on its own switch.

Requests reach Trailswitch first. The first path segment names the service, and each service goes wherever you pointed it: your machine, QA, or a mock.

Your app, browser, or test

GET /orders/42

Trailswitch

localhost:9000

capture · route · mock

  • /orders Local localhost:5101
  • /users QA users.qa.internal
  • /payments QA payments.qa.internal
  • /inventory Mock mock response

Three ways to send traffic through it

Ask Claude what went wrong.

Trailswitch runs an MCP server on your machine. Connect Claude Code, or any MCP client, and it can read the traffic you just captured, pull up the exact request and response that failed, and replay it after you change something.

Prefer to stay in the app? Explain error sends one failed request to the model you choose, including Claude with your own Anthropic key, and redacts sensitive headers first.

  • The MCP server runs while the app is open, on 127.0.0.1 by default, behind a token.
  • Requests Claude reads over MCP go to the model you connected, so connect it to the projects where that is fine.
Connect Claude Code MCP · Streamable HTTP
$ claude mcp add trailswitch http://127.0.0.1:9002/mcp -t http -H "Authorization: Bearer <token>"

Copy the ready-made command from the app with your token filled in. It also has configs for Cursor, Windsurf, VS Code, and Zed.

  • get_recent_traffic

    The latest captured requests: method, URL, status, timing, service.

  • search_traffic

    Find requests by text across URLs, headers, and bodies.

  • get_request_detail

    Full headers and bodies for one request.

  • get_service_health

    Which registered services are up.

  • get_sessions

    Named capture sessions and their time ranges.

  • replay_request

    Send a captured request again and capture the new result.

Once traffic flows through it

Routing is the start. Because every request passes through one place, the rest of the debugging toolkit is already there.

Per-service routing
Each service points at Local, QA, or a mock on its own. Switch while traffic runs.
Traffic capture
Every request and response, with headers, bodies, timing, and the chain it belongs to.
Diff vs QA
Replay a captured request against QA and compare both responses line by line.
gRPC and WebSocket mocks
Answer a call yourself by method or URL pattern. Upstream is never touched.
Production replay
Replay HAR imports or live captures against any environment, with a PII scrub first.
Export as test
Turn a capture into a Playwright test, a Jest + supertest test, or a curl script.
Compose injection
Route a whole docker-compose stack through the proxy without editing it by hand.
Analytics
p50, p95, and p99 latency, error rates, and the slowest endpoints per service.

Send what you found to the tools you already use

Connect Notion, Linear, Slack, Sentry, GitHub, or Docker through their MCP servers from the Integrations panel. Notion, Linear, and Slack actions send a request summary, never its body.

Any other MCP server can be added too, and its tools become available alongside Trailswitch's own.

Your captures stay on your machine.

Captured traffic is stored in a local database on your PC, not on a server we run. It leaves your machine only when you export or replay it, or let an AI model you connected read it, and only to where you send it.

Notion, Linear, and Slack actions send a request summary (method, URL, status, latency, service), never the body.

Runs on
Windows 10 and 11; macOS and Linux soon
Stored
Locally, on your PC
Exports
HAR, Playwright, Jest, curl, OTLP
Status
Early access

Try it on your own stack.

Trailswitch is built by Hrishikesh Ukarande and in early access on Windows 10 and 11. Send a line about which services you run locally and which stay on QA, and I will get back to you about access.