Public preview · v1.1.0 · Windows 10/11 · MIT

Put every connection to work in IDM

Speedy Bonding is a Windows desktop SOCKS5 load balancer for using multiple Internet connections with IDM, with optional Steam-only routing. Wi-Fi, broadband, Ethernet or mobile links become one local proxy at 127.0.0.1:8080.

  • Weighted connection load balancing
  • Loopback-only SOCKS5
  • Optional Steam Mode
Several Internet connections merging through a SOCKS5 load balancer into one pipe Three source connections, Wi-Fi, Ethernet and mobile, each carry a share of the traffic into the Speedy Bonding SOCKS5 load balancer at 127.0.0.1:8080. A wide pipe leaves the balancer and feeds IDM downloads. A dashed branch feeds Steam when optional Steam Mode is on. YOUR CONNECTIONS Wi-Fisource IPv4 50% Ethernetsource IPv4 30% Mobilesource IPv4 20% process-aware route SOCKS5 127.0.0.1:8080 weighted picker one local entry point aggregate of separate connections IDM multiple connections Steam Steam Mode · optional Several Internet connections merging through a SOCKS5 load balancer into one pipe Wi-Fi, Ethernet and mobile connections feed the Speedy Bonding SOCKS5 load balancer at 127.0.0.1:8080. A wide pipe leaves it and feeds IDM. A dashed branch feeds Steam when optional Steam Mode is on. Wi-Fi50% Ethernet30% Mobile20% SOCKS5 load balancer 127.0.0.1:8080 weighted picker IDM multiple connections Steam Steam Mode · optional

Illustration: separate connections share the load. Weights shown (50/30/20) are an example you set yourself; they must total 100%.

Honest by design: this is weighted connection load balancing, not packet-level multipath bonding. A single TCP connection stays on the interface where it started. IDM and Steam can benefit when they open several concurrent connections, but the byte split will not always be exactly 50/50.

What it does

One local proxy, many paths

Each new proxy connection is bound to a selected source address, so multi-connection applications can use more than one path at once.

Detects usable interfaces

Finds non-virtual IPv4 interfaces (Wi-Fi, broadband/RAS, Ethernet, mobile links) and re-scans them while the proxy is running. Self-assigned 169.254.x.x addresses are excluded.

Loopback-only SOCKS5

Opens a SOCKS5 server on 127.0.0.1:8080 (port is editable in the app). No username or password, and it is not exposed to your network.

Weighted by percentage

Assign a percentage to each connection; the total must equal 100%. Tune it to match your line speeds, or click On for an equal split across usable connections.

Source-bound TCP and UDP

Outbound TCP and UDP relay sockets are bound to the selected local IPv4 address, so each connection leaves through the interface you chose.

Optional Steam Mode

Routes steam.exe, steamwebhelper.exe, steamservice.exe and GameOverlayUI.exe through the bonded proxy while other traffic stays direct.

Works with IDM and more

The normal Local Proxy workflow stays available for IDM and any other SOCKS5-aware application. Set IDM to SOCKS5, host 127.0.0.1, port 8080.

How it works

A weighted picker in front of your connections

Applications talk to one local SOCKS5 address. For every new connection, Speedy picks a source interface according to your percentages and keeps that connection on it.

Routing model of Speedy Bonding Apps such as IDM, Steam and other SOCKS5 clients connect to the local SOCKS5 proxy at 127.0.0.1:8080. A weighted connection picker sends each new connection to one of the source paths, Wi-Fi, broadband or RAS, or Ethernet or mobile, each bound to its own source IPv4 address. Separate connections reach the Internet over their own paths. Steam Mode adds a process-aware layer in front: matched Steam processes go to the bonded proxy, other traffic goes direct. STEAM MODE (OPTIONAL) · WINDOWS TUN LAYER Steam processes → bonded proxy · everything else → direct Apps IDM Steam other SOCKS5 clients Local SOCKS5 proxy 127.0.0.1:8080 weighted connection picker each new connection → one path Wi-Fibound to its source IPv4 Broadband / RASbound to its source IPv4 Ethernet or mobilebound to its source IPv4 Internet separate connections A single TCP connection stays on the path where it started. Routing model of Speedy Bonding Apps connect to the local SOCKS5 proxy at 127.0.0.1:8080. A weighted picker sends each new connection to one of three source paths, each bound to its own source IPv4 address, and from there to the Internet. Steam Mode is an optional process-aware layer in front. Apps IDM · Steam · other SOCKS5 clients Local SOCKS5 proxy 127.0.0.1:8080 weighted connection picker Wi-Fisource IPv4 Broadband/ RASsource IPv4 Ethernetor mobilesource IPv4 Internet separate connections A single TCP connection stays on its path.
  1. Point an app at the proxy

    Turn Local Proxy on and set IDM (or any SOCKS5 client) to 127.0.0.1:8080.

  2. Pick a path per connection

    A weighted picker assigns each new connection to one interface using your percentages.

  3. Bind to the source address

    Outbound TCP and UDP relay sockets are bound to that interface's local IPv4 address.

  4. Let concurrency do the work

    When IDM opens several connections, they spread across paths. Steam Mode adds a process-aware TUN layer in front of the same proxy.

Steam Mode

Steam-only routing, everything else direct

Steam Mode is an optional, process-scoped Windows TUN route placed in front of the same local SOCKS5 load balancer. It detects that Steam is running and routes matching Steam processes whenever they generate traffic. It is process-aware, not download-aware.

  • steam.exe
  • steamwebhelper.exe
  • steamservice.exe
  • GameOverlayUI.exe
  • Matching Steam traffic goes to the bonded proxy; the final route for non-Steam traffic is direct.
  • A temporary SpeedyGlobal adapter exists only while Steam Mode is active.
  • Requires a Windows administrator prompt to create and remove that adapter.
  • Powered by the bundled sing-box runtime (pinned version 1.13.18), downloaded and checksum-verified by npm run prepare-runtime.
  • Steam games are not automatically included. Add and verify game executable names before claiming game traffic is bonded.

The app

One window. Two switches.

A single Electron window with a port field, an On/Off switch for Local Proxy, a Steam Mode switch, a percentage per connection and a live proxy log.

Illustrative rendering of the app layout (names, addresses and log lines are placeholders, not a real screenshot). Wording follows the app's own UI text.
Presentation artwork: Wi-Fi and Ethernet streams merging through a shield into one download arrow, with a game controller beside it
Presentation artwork from the repository. The README notes it is generated, presentation-only art.
Routing architecture diagram from the repository: apps to local proxy to Wi-Fi and broadband source paths to the Internet
The repository's architecture diagram, which the README calls the source of truth for the routing model.

Quick start

Run it from source in four commands

Requirements: Windows 10/11, Node.js 20+, npm, and two or more usable IPv4 Internet paths. The README documents running from source; it is a public preview, so test with a small download first.

1 Run from source

PowerShell
git clone https://github.com/MHJoy99/speedy-bonding.git
cd speedy-bonding
npm ci
npm run prepare-runtime
npm run lint
npm run start

prepare-runtime fetches the pinned, checksum-verified sing-box runtime used by Steam Mode.

2 Use IDM

  1. Turn Local Proxy on.
  2. Leave the percentages at 50/50 for an equal start, or tune them to your line speeds.
  3. In IDM, set SOCKS5 to host 127.0.0.1, port 8080.
  4. Start a download with multiple IDM connections.

3 Use Steam Mode

  1. Open Steam first.
  2. Turn Local Proxy on.
  3. Turn Steam Mode on and approve the Windows administrator prompt.
  4. Pause and resume a download so Steam creates fresh connections.

Verify and package

npm run lint
npm run typecheck
npm run package

Check that routing worked

Inspect the Steam Mode log:

%APPDATA%\Speedy Bonding\global-mode\sing-box.log

outbound/socks[bonded] means a matched Steam connection used the bonded proxy. outbound/direct[direct] means it followed the direct fallback.

Limitations and safety

Know what it is and is not

Taken from the project's own README. It is a public preview.

Not packet-level bonding

It does not create a single bonded tunnel. For that, use a multipath VPN or a server-assisted bonding product.

IPv4 interfaces with a real route

Windows must have a real IPv4 address and route for an interface to be usable; an APIPA address such as 169.254.x.x is excluded.

Keep the listener on loopback

The unauthenticated SOCKS5 listener binds to loopback only. Do not change it to 0.0.0.0 without adding authentication and a firewall policy.

Steam Mode needs elevation

Steam Mode requires elevation to create and remove its temporary TUN adapter. Games are not automatically included just because Steam is.

Use responsibly: respect the terms of your Internet providers and of the services and apps you use with it. Test with a small download before relying on it for a long transfer.

FAQ

Questions, answered

Is Speedy Bonding true packet-level Internet bonding?

No. It is a local weighted SOCKS5 proxy that distributes separate outbound connections across eligible IPv4 interfaces. A single TCP connection remains on the interface selected when it starts.

For packet-level bonding, the README points to a multipath VPN or a server-assisted bonding product.

How do I use Speedy Bonding with IDM?

Enable Local Proxy, then set IDM to SOCKS5, host 127.0.0.1, port 8080, with no username or password. IDM downloads with multiple connections can then use multiple selected paths.

Can one download use Wi-Fi and Ethernet at the same time?

Only when the application opens multiple connections. Speedy does not split one TCP flow packet-by-packet, and it cannot guarantee an exact 50/50 byte split or a specific speed increase.

What is Steam Mode?

Steam Mode is an optional process-scoped Windows TUN route. It matches Steam-related processes (steam.exe, steamwebhelper.exe, steamservice.exe and GameOverlayUI.exe) and sends their traffic through the local SOCKS5 load balancer while other traffic stays direct.

Turn Local Proxy on first, then Steam Mode, and approve the Windows administrator prompt. Pause and resume a download afterwards so Steam creates fresh connections.

Which network connections does it use?

It detects usable, non-virtual IPv4 interfaces (Wi-Fi, broadband/RAS, Ethernet or mobile links) and re-scans them while the proxy is running. Virtual adapters such as vEthernet, TAP-Windows, VPN and WSL adapters are skipped, and so are interfaces with only a self-assigned 169.254.x.x address.

You then assign each connection a percentage; the total must equal 100%.

Is the SOCKS5 proxy exposed to my network?

No. The SOCKS5 listener binds to loopback only (127.0.0.1, default port 8080) and has no authentication. The README warns not to change it to 0.0.0.0 without adding authentication and a firewall policy.

Do I need administrator rights?

Only for Steam Mode. It requires elevation to create and remove its temporary SpeedyGlobal TUN adapter. The normal Local Proxy workflow for IDM does not use that adapter.

Will my Steam games download through the bonded proxy?

Steam Mode routes the Steam client processes. Steam games are not automatically included just because Steam is, so add and verify game executable names before claiming game traffic is bonded.

To check, open %APPDATA%\Speedy Bonding\global-mode\sing-box.log: outbound/socks[bonded] means a matched connection used the bonded proxy, and outbound/direct[direct] means it went direct.

How do I install it? Is there a prebuilt installer?

The README documents running from source on Windows 10/11 with Node.js 20+ and npm: npm ci, npm run prepare-runtime, npm run lint, then npm run start. It also lists npm run package for packaging, and it does not mention a prebuilt installer. The project is a public preview, so test with a small download first.

Where does Speedy Bonding come from?

It is a maintained fork of the open-source RezaRafia/Speedy project. The original project and its author are credited; the repository contains MHJoy99's Windows routing, SOCKS5, Steam Mode, packaging and documentation changes. It is MIT licensed.

Two lines in, one proxy out

Free and open source under the MIT license. Read the code, run it from source, and tune the weights to your lines.