Multi ISP Proxy is a local HTTP and SOCKS5 proxy that distributes new outbound connections across selected network interfaces. It is intended for machines with multiple active internet connections, such as Wi-Fi, Ethernet, or mobile tethering.
Windows is the primary supported platform. Linux support is experimental and is validated by GitHub Actions on Ubuntu; Linux system-proxy configuration is still manual.
- Runs an HTTP proxy on
127.0.0.1:1080by default. - Runs a SOCKS5 proxy on the next port,
127.0.0.1:1081by default, when that port is available. - Selects an outbound interface using round-robin or failover mode.
- Can configure and restore the current-user Windows HTTP proxy.
- Displays interface health, traffic counters, and connection counts in a TUI.
Load balancing happens per connection, not per packet. A single TCP connection uses one interface and will not migrate seamlessly if that interface goes offline. Multi-connection applications can use more than one interface, but this is not equivalent to network-layer bonding.
| Platform | Status | System proxy |
|---|---|---|
| Windows 10/11 | Primary | Optional automatic setup and restore |
| Ubuntu/Linux | Experimental | Manual application configuration |
SOCKS5 TCP is supported. SOCKS5 UDP is experimental and should be verified with the target application before relying on it.
Download one of these assets from the latest release:
multi-isp-proxy_windows_amd64.exemulti-isp-proxy_linux_amd64checksums.txt
Verify the downloaded binary against checksums.txt before running it.
Go uses the version declared in go.mod.
git clone https://github.com/YudaKusumaID/multi-isp-proxy.git
cd multi-isp-proxy
go mod downloadWindows PowerShell:
New-Item -ItemType Directory -Force dist | Out-Null
go build -o dist/multi-isp-proxy.exe ./cmd/multi-isp-proxy
.\dist\multi-isp-proxy.exeLinux:
mkdir -p dist
go build -o dist/multi-isp-proxy ./cmd/multi-isp-proxy
./dist/multi-isp-proxyBuild output belongs in dist/, which is ignored by Git.
multi-isp-proxy [-addr 127.0.0.1:1080] [-allow-remote] [-auth-file PATH] [-version]
- Select one or more interfaces.
- Choose round-robin or failover mode.
- On Windows, choose whether the application may configure the current-user HTTP proxy. On Linux, configure the browser or application manually.
- Press
rto reset displayed counters orqto stop and restore settings.
Use a complete loopback address when changing the port:
.\dist\multi-isp-proxy.exe -addr 127.0.0.1:8080Loopback is enforced by default. A wildcard, LAN, or other non-loopback address
is rejected unless -allow-remote is supplied. Remote mode also requires
non-empty credentials, shared by HTTP Basic proxy authentication and SOCKS5
username/password authentication.
Prefer an environment variable so the secret is not exposed in command-line history or process arguments:
$env:MULTI_ISP_PROXY_AUTH = "proxy-user:use-a-long-random-password"
.\dist\multi-isp-proxy.exe -addr 0.0.0.0:1080 -allow-remoteAlternatively, put username:password in a user-readable credential file and
pass -auth-file PATH. Do not use both methods. Remote mode should also be
restricted with the operating-system firewall; it is not intended to be an
internet-facing public proxy. See SECURITY.md.
New runs write multi-isp-proxy.log below the operating system's user cache
directory instead of the repository root. At 5 MiB, it rotates to
multi-isp-proxy.log.1:
- Windows:
%LocalAppData%\multi-isp-proxy\multi-isp-proxy.log - Linux:
$XDG_CACHE_HOME/multi-isp-proxy/multi-isp-proxy.log, or~/.cache/multi-isp-proxy/multi-isp-proxy.log
Existing venn.log and old binaries may be kept under dist/legacy/; they are
not used by the new build workflow.
Only one instance may run per user. Before changing Windows proxy settings, the application writes a recovery journal below the user configuration directory. After power loss or hard termination, the next launch restores the saved values before opening the TUI. If the current settings were changed externally after the crash, recovery refuses to overwrite them and preserves the journal for manual inspection.
Typical Windows files:
%AppData%\multi-isp-proxy\instance.lock%AppData%\multi-isp-proxy\proxy-recovery.json
Do not delete the recovery journal while Multi ISP Proxy controls the Windows proxy. For conflict recovery guidance, see SECURITY.md.
Runtime ownership, dependency direction, lifecycle invariants, and protocol boundaries are documented in docs/architecture.md.
Run the local verification commands before opening a pull request:
gofmt -w .
go mod tidy
go vet ./...
go test -race ./...CI runs formatting, module consistency, vet, tests, and the race detector on
Linux, plus native tests on Windows. Tagging a commit with a semantic version
such as v1.2.0 runs the same CI before producing release binaries.
See CONTRIBUTING.md. Linux support was initially contributed by @anugrahiyyan.
Licensed under the MIT License.