Skip to content

Repository files navigation

Trawl

See every request. Change any response. Turn live traffic into tools.

Latest release macOS 14+

Trawl is a network debugging workspace for macOS. It shows what is really moving between your app and the internet — HTTP, WebSocket, Connect, gRPC-Web, and SSE — then lets you inspect it, rewrite it, stop it in flight, or hand it to an AI agent.

Use it to understand a strange API, reproduce a production-only bug, test a fix before writing code, create a mock backend, or turn a one-off investigation into a plugin your whole team can use.

Download Trawl for macOS →

The Trawl agent builds and opens a Reddit media plugin

A single prompt becomes a working media browser inside Trawl.

What can you do with Trawl?

Find the bug between your UI and your API

Open your app and use it normally. Trawl collects the conversation happening underneath: requests, redirects, errors, images, JSON payloads, headers, cookies, and timing.

Long-lived connections get their own ordered, bidirectional timeline. Search messages, follow a live stream without losing your place, inspect decoded JSON or exact binary payloads, send text or binary WebSocket messages in either direction, and keep the history across restarts. Messages sent by the debugger remain visibly marked in that same timeline.

Instead of asking “what might have happened?”, you can see the exact request and the exact answer that produced the screen in front of you.

Inspecting a live image response in Trawl

Search a large response, expand the interesting branch, copy a value, and follow the trail back to the request that created it.

Exploring a structured JSON response

Use this to answer questions like:

  • Why is the page empty for this one account?
  • Which request made the screen slow?
  • Where did this unexpected value come from?
  • Is the bug in the frontend, the backend, or the data between them?

Try the fix before you touch the codebase

Change a response while it is travelling to the browser. Add a missing field, remove a broken item, inject content, repair a legacy shape, or simulate the API you wish you had.

Creating a live response transformation

The result appears immediately in the real application. No local backend fork, no throwaway deployment, no waiting for another team.

A live website changed through Trawl without modifying its server

This is useful for prototyping UI against future API changes, verifying a frontend fix, building demos, and exploring risky ideas without touching production data.

Freeze a request at exactly the right moment

Pause a live request before it leaves your machine. Change its search term, headers, body, or destination, then let it continue — or answer it locally.

Changing a paused request before it continues

You can pause the response too. Turn success into an error, replace JSON with an edge case, remove a permission, or load a body from a file and watch how the app reacts.

Replacing a paused JSON response

One real user flow can become a whole QA matrix: slow network, empty data, expired session, malformed payload, partial outage, or the exact rare response that caused yesterday's bug.

Ask an agent to investigate the real system

Give the built-in agent live traffic instead of screenshots and copied log fragments. It can inspect what your app is doing, follow the relevant requests, work with the project behind them, and stay present while you click through the problem.

Ask it to:

  • explain why an API call failed;
  • find the request responsible for a broken screen;
  • create a focused dashboard for an unfamiliar service;
  • watch an endpoint while you reproduce a bug;
  • turn a useful investigation into a reusable plugin;
  • build a small interface when a paragraph of text is not enough.

You can steer the same run while it works. If it needs a choice or a piece of input, it can open the right UI directly inside Trawl.

Turn discoveries into reusable tools

Keep the hosts, transformations, breakpoints, and variables for one product in a project. Switch context without rebuilding your setup from memory.

Keeping a product investigation together in a Trawl project

Save the little helpers you use repeatedly and make them available to every future experiment.

A reusable library of traffic transformations

What begins as “let me inspect this request” can become a mock server, a content browser, a compatibility layer, an API monitor, a route explorer, a test scenario switcher, or a purpose-built internal tool.

Debug the app on your phone

Put a physical phone, simulator, emulator, Chrome, or the Mac itself through Trawl. The guided setup shows the right address and walks through HTTPS trust without making you reconstruct the process from scattered documentation.

Guided setup for capturing traffic from a physical phone

Reproduce the problem on the device where it actually happens, while keeping the same inspector, transformations, breakpoints, and agent beside you.

One workspace, many jobs

Trawl can be the place where you:

  • understand an API you did not build;
  • debug a frontend without adding temporary logs;
  • simulate backend changes before they exist;
  • reproduce hard mobile and authentication bugs;
  • create convincing demos with real applications;
  • test failure states that are almost impossible to trigger on demand;
  • let an agent observe the same system you are observing;
  • build a small custom tool instead of repeating the same investigation.

Everything runs on your Mac. Your certificate, captured traffic, project values, and agent workspace stay under your control.

Connect Trawl to your AI agent

Trawl can become the eyes and hands of Claude Code, Cursor, or another MCP-compatible agent. Once connected, the agent can inspect the traffic you are looking at, search response bodies, compare requests, manage projects and breakpoints, and use tools contributed by your plugins.

Connecting Claude Code takes less than a minute:

  1. Open Settings → MCP server in Trawl.
  2. Turn on Enabled.
  3. Copy the ready-made claude mcp add ... command shown there.
  4. Run that command in Terminal and open your Claude Code session.

The generated command already contains the local address and a private bearer token, so there is nothing to assemble by hand. If the default port is busy, Trawl selects and remembers an available one automatically. The command looks like this:

claude mcp add --transport http trawl http://127.0.0.1:9910/mcp \
  --header "Authorization: Bearer <your-token>"

For Cursor or another Streamable HTTP MCP client, use the same local URL and Authorization: Bearer <your-token> header from the command Trawl generates. The server listens only on your Mac; you can disable it or regenerate its token at any time from the same Settings card.

After that, prompts such as “find the failed checkout request”, “show me what changed between these two responses”, or “pause the next call to this endpoint” work against the real traffic in Trawl.

Get Trawl

Trawl is available for macOS 14 and newer as a signed, notarized universal app for Apple Silicon and Intel Macs. It keeps itself up to date from GitHub Releases.

Download the latest release →

Launch it, press Start, follow the guided setup for your device, and use your app normally. The traffic will be waiting for you.

About

Modern HTTP(S) proxy inspector for macOS — Charles-style debugging proxy with scripting, mocks and projects (Tauri + React)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages