uditya-kumar / MultiPath
git clone https://github.com/uditya-kumar/MultiPath.git
v1.2.0 · 4d ago
Combine Wi-Fi, Ethernet and phone tethering on Windows/Linux. A local Tauri + Rust tray app, no server needed.
+3
stars, 24h · #4,185
+~21
stars, 7 days · #4,994
+86
stars, 30 days · #6,213
93
★ total · +21% this week
12
forks · 3 open issues
Star history (as recorded here)
LanguageRust
LicenseMIT
Created2026-10-12 (9d ago)
Last push4d ago
Watchers0
OwnerUser
Links
README excerpt
# MultiPath **Use Wi-Fi, Ethernet and a USB-tethered phone at the same time, for the whole PC.** A small tray app for **Windows, Linux and macOS (Apple silicon)**, built with **Tauri v2 and Rust**. Everything runs on your computer: no server, no relay, no account. ## Screenshots The tray popup, combining Wi-Fi and a USB-tethered phone A download manager with several connections: about half go over Wi-Fi and half over the phone ## What it does - Spreads your PC's connections across all your networks, so they all work at once. - Two 10 Mbps networks give you about **20 Mbps** for anything that opens several connections. - Lives in the tray as a small popup: turn it on, switch networks on or off, see each network's speed. ## What gets faster MultiPath balances **connections**. One connection always stays on one network, because splitting it would need a server on the internet. | Gets faster ✅ | Doesn't get faster ❌ | |---|---| | Speed tests (fast.com, Speedtest) | A single download over one connection | | YouTube and other streaming sites (video and audio load in chunks) | One video call or game session | | Download managers, Steam, torrents | | | Browsers loading many things at once | | | Several downloads at the same time | | ## Tech stack | Part | Technology | |---|---| | App shell | Tauri v2 | | Backend | Rust | | Async runtime | Tokio | | Traffic capture | Wintun adapter on Windows, `/dev/net/tun` on Linux, a `utun` on macOS, via the `tun` crate | | TCP/IP stack | `ipstack` (userspace) | | Packets, sockets | `etherparse`, `socket2`, `netdev` | | System APIs | `windows-sys`, `libc` with netlink on Linux, and on macOS `IP_BOUND_IF` plus `route`/`ifconfig`/`scutil` (routes, sockets, elevation) | | Frontend | React 19 | | Language | TypeScript | | Build tool | Vite | | Icons | Lucide | | Tests | Vitest, `cargo test` | | Packaging | NSIS, `.deb` and AppImage, `.app` and `.dmg` (through Tauri) | ## How it works Think of your networks as checkout counters, and each connection as a customer. MultiPath is the manager at the door. 1. **Catch the traffic.** MultiPath adds a virtual network adapter called `MultiPath`. All of the PC's traffic goes through it. 2. **Pick a network.** For each new connection, MultiPath works out which network would give it the most speed: > **network speed ÷ (connections downloading on it + 1)** The network with the biggest number gets the connection. Idle connections don't count. 3. **Send it out.** The connection is made again from that network, pinned to its adapter. 4. **Keep checking.** Every 5 seconds, each network is checked for internet. A network that fails twice in a row gets no new connections until it works again. **Example:** two 10 Mbps networks, and fast.com opens 4 connections: | Connection | Wi-Fi score | Phone score | Goes to | |---|---|---|---| | 1st | 10 ÷ 1 = **10** | 10 ÷ 1 = **10** | Wi-Fi | | 2nd | 10 ÷ 2 = 5 | 10 ÷ 1 = **10** | Phone | | 3rd | 10 ÷ 2 = **5** | 10 ÷ 2 = **5** | Wi-Fi | | 4th | 1