Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

Th0rgal/satmux

DevOps & Self-hosting

TCP multiplexer and 1-RTT TLS relay that speeds up high-latency GEO inflight Wi-Fi using warm BBR connections and zlib.

480
24
Python
MIT
new today

What it does

satmux targets the failure modes of non-Starlink inflight Wi-Fi: onboard :443 middleboxes that reset connections under load, DNS interception, multi-round-trip handshakes at roughly 620 ms per GEO hop, and Cubic congestion collapse from packet loss. It runs a small ground VM near the satellite egress and keeps a pool of 12 pre-warmed non-443 TCP carriers to that VM, bypassing the cabin proxy. Local SOCKS5 (127.0.0.1:1080) and HTTP CONNECT (127.0.0.1:8080) endpoints open streams with a local 0-RTT acknowledgment, while a separate 127.0.0.1:8081 path performs DNS, verified TLS 1.3, and redirect following on the ground side, compressing plaintext responses with zlib before they cross the link. Ground-to-cabin sockets use BBR with MSS 1280. A 0600 Unix socket helps route gh CLI traffic, and the project is pure Python 3 stdlib with zero external dependencies.

Quick start

You need a Linux ground VM (Python 3.9+, open TCP port 8444) placed near the satellite downlink, plus a paid cabin Wi-Fi session. Run curl ipinfo.io on raw cabin Wi-Fi to learn the egress country or ASN before choosing the VM region.

Generate a pre-shared key on the laptop:

git clone https://github.com/Th0rgal/satmux.git && cd satmux
openssl rand -hex 32 > mux.psk && chmod 600 mux.psk

Copy satmux.py and the key to the server, then start it:

scp satmux.py mux.psk root@<SERVER_IP>:/root/
ssh root@<SERVER_IP> 'nohup env SATMUX_PSK=$(cat /root/mux.psk) python3 /root/satmux.py server --port 8444 >/var/log/satmux.log 2>&1 &'

On the laptop, start the client and enable macOS, git, and gh routing:

SATMUX_PSK=$(cat mux.psk) python3 satmux.py client --host <SERVER_IP> --port 8444 --carriers 12 &
./bin/satmux-macos on <SERVER_IP>

Then benchmark or try a parallel range download:

./bin/satmux-bench
./bin/satmux-get https://example.com/archive.tar.gz

After landing, run ./bin/satmux-macos off. This restores macOS Wi-Fi proxy settings, ~/.gitconfig, the gh http_unix_socket, and launchctl environment variables; destroy the temporary VM afterward. According to the provided benchmark over Inmarsat GX Ka-band (about 620 ms RTT), a six-origin burst went from 19.13 s with three failures to 5.35 s with none.

Constraints

  • The physical GEO latency floor of roughly 580–650 ms remains; satmux removes extra round-trips, not the one orbital hop.
  • Per-seat shaping (typically 4–5 Mbps) still bounds already-compressed binaries such as .mp4 and .zip; zlib helps mainly with HTML, JSON, code, and API traffic.
  • It uses your authenticated cabin Wi-Fi lease and does not bypass captive portals.
  • The setup instructions and satmux-macos helpers are written for macOS clients; the ground side is a Linux VM.
  • Pause UDP VPNs such as Tailscale or WireGuard inflight, since blocked UDP retries compete for cabin airtime.

HotRepo's take

The repository appeared in HotRepo's new-project list on 2026-11-07, recording 124 stars and 3 forks over roughly 3.5 hours from the growth window start. With only that single snapshot, there is no same-metric time series to judge momentum, and the project has no recorded GitHub all-language daily rank. The practical interest here is the narrow, measurable scenario: a benchmark over a real Inmarsat GX link, a pure-stdlib implementation, and explicit performance limits rather than broad claims. That makes it a focused tool for people with coding or browsing needs on high-latency satellite Wi-Fi, not a general-purpose network accelerator.

Project source and documentation

Written by AI from the project's README, updated . The project's own docs are the source of truth.