sockLight
github.com/kosmrljt/socklight- Category
- Developer Tools
- Rank
- No. 1866Tools index
Previous survey · No. 1801 ·
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Security & Identity
- Interfaces
- CLI
- GitHub
- 4 stars
- Date
About
sockLight is a SOCKS5 development proxy with a live terminal dashboard that shows every outbound connection by hostname, category, and live speed, letting developers block, allow, and throttle traffic in real time without restarting apps or installing a CA certificate. It runs as a normal user process, supports 34 traffic categories, and can export rules to Privoxy, PAC, or Adblock formats.
What it does
A local relay that containers, browsers and command-line tools send their network requests through, so you can watch which servers they reach. Clients hand it names rather than addresses, which is why it can show readable server names instead of raw IPs. It never decrypts anything: encrypted bytes pass through untouched and it records only destination, port, byte counts and rate. A small rules language filters or slows traffic by name pattern or by named group of domains, and bandwidth changes reach connections that are already open.
Why it's ranked here
Narrow, honest and readable. It solves one developer problem, telling a stalled download from a dead one, without the certificate setup that intercepting tools demand, and it states plainly where it stops: no request bodies, no authentication, not for production. The code is small and written to teach, with long comments on the protocol and the async patterns it uses. MIT licensed. Against that: tested only on Linux, the install instructions point at the git repository rather than a package index, and its own documentation disagrees with itself on some details.
What's good
Bandwidth limits are re-read on every chunk of data, so tightening a limit on a live download takes effect on the next read with no reconnect. At low limits it shrinks each read to roughly a tenth of a second of data, so the client sees a steady trickle instead of bursts, and it resets its accounting after more than a second behind schedule so a paused stream cannot burst at full speed. Domain grouping indexes patterns by the last two name labels and tests only that small bucket per host. A headless mode logs to standard output for running as a service.
Tradeoffs
The documentation contradicts itself. The readme and command reference promise 34 built-in groups; the command-line help and architecture notes say 32. The architecture notes say added latency applies per chunk, but the relay applies it once, before any data flows, and the live-updatable settings carry only bandwidth, so a latency change does not reach an open connection. It listens on all network interfaces by default with no authentication, so anyone who can reach the port can use it. Only the plain connect command is supported, with no UDP relay. Closed-connection history keeps the last 200 entries.
How to use it well
Best for a developer running containers or coding agents who wants to see, and trim, what they call out to, or to reproduce a slow upstream without writing a mock server. Bind it to the loopback address unless containers need to reach it, and use the name-resolving proxy setting so rules match hostnames. Tools that only speak HTTP proxies need a Privoxy bridge in between. Wildcard rules skip the bare domain, so block both forms. Set latency rules before the connection opens. It never shows request contents; for that, use an intercepting proxy such as mitmproxy.
Technical notes+
socklight/relay.py runs two AnyIO tasks per connection and cancels the sibling in a finally block; each read is sized min(chunk_size, max(1024, bps // 10)) and the window resets when more than 1 s behind. delay_ms is slept once before relaying, and ThrottleState in socklight/throttle.py holds only download_bps and upload_bps, while docs/ARCHITECTURE.md describes per-chunk latency. socklight/socks5.py accepts NO_AUTH and CONNECT only. socklight/server.py keeps a two-generation DNS cache (512 entries per generation, 60 s TTL), a 10 s connect timeout and an optional semaphore for --max-connections. socklight/tracker.py caps history at deque(maxlen=200). socklight/cli.py help says 32 categories where docs/COMMANDS.md says 34, and it installs uvloop although docs/ARCHITECTURE.md names a Trio backend.
Observed
- License
- MIT (LICENSE)
- Language
- Python, requires 3.11 or newer (pyproject.toml)
- Install
- pip install from the git repository; console script socklight
- Dependencies
- anyio, pyperclip, textual, uvloop on Linux only (pyproject.toml)
- Interfaces
- Textual terminal dashboard, plus a --no-tui headless mode logging to stdout (socklight/cli.py)
- Platform support
- Developed and tested on Linux; macOS and Windows untested per README.md
- Protocol support
- SOCKS5 CONNECT only, no-authentication method only (socklight/socks5.py)
- Default listener
- 0.0.0.0 port 1080 (socklight/cli.py)
- Rule export formats
- Privoxy action file, PAC file, Adblock Plus filter list (docs/COMMANDS.md)
Read from README.md, pyproject.toml, LICENSE, docs/ARCHITECTURE.md, docs/COMMANDS.md, socklight/cli.py, socklight/server.py, socklight/socks5.py, socklight/relay.py, socklight/classifier.py, socklight/throttle.py, socklight/tracker.py.
What it can do
Display live outbound connections with hostname, category, and speed in a terminal dashboard
Outbound network traffic → Live connection list
Export traffic rules to Privoxy, PAC, or Adblock formats
Traffic rules → Privoxy/PAC/Adblock file
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.