MCPcopy Index your code
hub / github.com/avwo/whistle

github.com/avwo/whistle @v2.10.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.10.4 ↗ · + Follow
1,718 symbols 4,063 edges 460 files 7 documented · 0% 16 cross-repo links updated 2d ago★ 15,59857 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

whistle logo

whistle

NPM version node version npm download NPM count License

中文 · English

Whistle (pronounced /ˈwisəl/) is a cross-platform network debugging and proxy tool built on Node.js. It provides powerful packet capture, request/response inspection and modification, a rule-based modification engine, and extensibility through plugins.

Key features: 1. Powerful - Capture and modify HTTP, HTTPS, HTTP/2, WebSocket, and TCP traffic - Supports HTTP, HTTPS, Socks and reverse proxy modes - Built-in tools: Weinre (remote DOM inspection), Console (console logs), Composer (request replay/editing), etc. 2. Easy to use - Rule-based request/response modification - Unified UI for captures, rules, plugins, Weinre/Console/Composer and more 3. Extensible - SPlugin support for extending rules and UI - Can be used as an NPM module in projects 4. Cross-platform - Supports macOS, Windows, Linux (Ubuntu/Fedora) desktop systems - Supports headless Linux server environments

Installation (recommended)

Desktop users (macOS/Windows/Linux) should use the Whistle client: https://github.com/avwo/whistle-client

The client skips manual installation and configuration steps

Headless Linux / Server Install (CLI)

Follow these 4 steps to deploy Whistle on a headless server:

  1. Install Whistle (recommended via npm)
  2. Install Node.js first: https://nodejs.org/
  3. Install: npm i -g whistle > Alternatively via Homebrew: brew install whistle
  4. Start Whistle
  5. Command: w2 start
  6. Install CA certificate (required for HTTPS capture)
  7. Command: w2 ca
  8. Manual confirmation may be required:
    • Windows: confirm with “Yes (Y)”
    • macOS: may require entering password or Touch ID
  9. Configure proxy
  10. Command: w2 proxy
  11. Specify host:port: w2 proxy "10.x.x.x:8888"
  12. Disable system proxy: w2 proxy 0

Other proxy options: - Recommended: use a Chrome proxy extension ZeroOmega for easy switching

Chrome Web Store (or manual install if blocked): https://chromewebstore.google.com/detail/proxy-switchyomega-3-zero/pfnededegaaopdmhkdmcofjmoldfiped - Use browser/devtools built-in proxy settings (e.g. Firefox, WeChat DevTools) - For apps that can't set proxies directly, use Proxifier (Windows/macOS)

Quick Start

See the official guide for usage and examples: https://wproxy.org/docs/getting-started.html

Common Commands

  • Start: w2 start
  • Stop: w2 stop
  • Restart: w2 restart
  • Status: w2 status
  • Install CA: w2 ca
  • Set proxy: w2 proxy [host:port] (use w2 proxy 0 to disable)

License

MIT — see the LICENSE file

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Function 1,705
Method 7
Interface 6

Languages

TypeScript100%

Modules by API surface

lib/util/index.js143 symbols
biz/webui/htdocs/src/js/util.js128 symbols
lib/util/common.js82 symbols
lib/plugins/load-plugin.js75 symbols
lib/rules/rules.js69 symbols
biz/webui/htdocs/src/js/data-center.js54 symbols
lib/plugins/index.js47 symbols
lib/https/index.js36 symbols
lib/https/ca.js33 symbols
lib/socket-mgr.js31 symbols
biz/webui/htdocs/src/js/rules-mode.js29 symbols
biz/webui/lib/index.js28 symbols

Dependencies from manifests, versioned

adm-zip0.5.16 · 1×
async-limiter2.0.0 · 1×
babel-core6.7.6 · 1×
babel-eslint6.1.2 · 1×
babel-loader6.2.4 · 1×
babel-plugin-transform-class-properties6.24.1 · 1×
babel-plugin-transform-object-rest-spread6.26.0 · 1×
babel-preset-env1.7.0 · 1×
babel-preset-react6.5.0 · 1×
babel-runtime6.26.0 · 1×
base64-js1.3.0 · 1×
body-parser1.20.3 · 1×

For agents

$ claude mcp add whistle \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page