What is this?
Whistle is a cross-platform web debugging proxy built on Node.js — it captures and lets you modify HTTP, HTTPS, HTTP/2, WebSocket and TCP traffic, in the same niche as Charles or Fiddler (both are among its GitHub topics).
Is it a desktop app, or something I run from the terminal?
Both: on macOS, Windows and Linux desktops there's a Whistle client that removes most manual setup, while servers are driven with w2 commands — and either way you manage capture, rules and plugins in one built-in UI.
How do I get it running?
Four steps: npm i -g whistle (or brew install whistle), w2 start to launch, w2 ca to install the HTTPS root certificate, and w2 proxy to point traffic at it (w2 proxy 0 turns the system proxy off). Desktop users can skip most of this with the Whistle client.
Do I need anything preinstalled before it will run?
Node.js — whistle ships as an npm package and its package config asks for Node 14 or newer. Homebrew works as an alternative installer on macOS.
What's the fiddliest part of setting it up?
HTTPS interception: you must install whistle's root certificate (w2 ca), and the OS walks you through it manually — pick 'Yes' on Windows, and macOS may ask for your login password or Touch ID.
Which systems does it run on?
macOS, Windows and Linux desktops, with Ubuntu and Fedora called out by name; nothing ties it to a single operating system.
Would it run on a headless server, or does it need a desktop?
Yes — headless Linux server environments are explicitly supported; the command-line install path above is designed exactly for GUI-less machines.
What can it do besides passively capturing traffic?
Plenty: you can rewrite requests and responses through rule configuration, replay and edit requests with the built-in Composer, inspect a remote page's DOM with Weinre, and view page console output — all from the same UI.
What if I can't or don't want to set the system proxy?
Whistle also runs as an HTTP, HTTPS, Socks or reverse proxy. The README recommends the ZeroOmega Chrome extension for switching proxies between browsers, and Proxifier for apps that have no proxy settings of their own.
Can I extend it or embed it in my own project?
Yes — plugins can extend both the rules and the UI, and whistle can also be pulled into a project and used as an NPM module.
What are similar projects?
proxypin, nginx, goproxy, nginx-proxy, portless, http-proxy-middleware, mitmproxy, caddy
Which topics is it in?
debug, hosts, http2, mitm, http-proxy, proxy-server, https, devtools, reverse-proxy, debugging, node, websocket