📈 GH Trending Explorer 🎲 Surprise me

← all repos

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)

2026-10-20 · 83 ★ 2026-10-22 · 93 ★
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