mrkeyoor.com_
Tue 01 Sept 17:43 UTC
Self-Hostedevaluationupdated 26 Aug 2026

tg-ws-proxy review

The project is primarily documented in Russian, and a complete English README plus platform guides are available under `docs/EN/`. TG WS Proxy runs a local MTProto proxy for Telegram Desktop and carries eligible Telegram traffic over TLS WebSocket connections, with direct TCP or optional Cloudflare routes as fallbacks.

+108stars / 7d
Verdict

Our TG WS Proxy run installed in 29 seconds and passed its build and tests, but pip-audit found 34 known vulnerabilities. It is worth trying for Telegram Desktop traffic on supported data centers, especially when a local loopback proxy is enough. Do not mistake it for a VPN, and do not expose the listener to a network until the secret, bind address, and firewall rules are deliberate.

We ran it

Lab card: what happened when we ran tg-ws-proxyScreenshot of tg-ws-proxy (github.com/Flowseal/tg-ws-proxy)
Install✓ · 29s45 packages · 72 MB
Build✓ · 8s
Tests✓ · 10sran, no count parsed
Known vulns34(pip-audit)
Repo89 files~7,344 lines of source · 2 MB · 2 CI workflows · Dockerfile · tests dir

Answers from our run

Does tg-ws-proxy build from source?

Dependencies installed in 29 seconds (45 packages), and the build succeeded in 8 seconds. We cloned commit b2a8074 into a clean Debian container with 3 CPUs and no project-specific setup.

Do tg-ws-proxy's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Does tg-ws-proxy have known vulnerabilities in its dependencies?

pip-audit flagged 34 known advisories in the dependency tree at the time of our run.

Who should not use tg-ws-proxy?

Anyone needing a full VPN: the proxy handles Telegram MTProto traffic and does not change other applications.

What are the alternatives to tg-ws-proxy?

TG WS Proxy Android, tg-ws-proxy-rs, mtg. Our TG WS Proxy run installed in 29 seconds and passed its build and tests, but pip-audit found 34 known vulnerabilities.

Setup4/5Fast local install with clear binaries, source, and Docker paths
Docs5/5Russian and English guides state setup and hard network limits
Community4/59,514 stars and active reports after the August release
Maturity3/5v1.10.0 is packaged widely, but 34 advisories need review

Who it’s for

Telegram Desktop users whose text or media traffic benefits from the supported DC2 and DC4 routes.
Linux, macOS, and Windows users who want a local proxy with tray and console modes.
Operators who prefer to supply their own Cloudflare Worker or domain when shared routes are overloaded.
Developers who want a small Python proxy with Docker and PyInstaller packaging paths.

Who it’s NOT for

Anyone needing a full VPN: the proxy handles Telegram MTProto traffic and does not change other applications.
Users who need Telegram voice calls or voice chats: the project FAQ says MTProto proxy architecture does not carry them.
Accounts whose media lives outside DC2 or DC4: the documented fallback may be slow or provide no benefit.
IPv6-only environments: IPv6 is listed as unsupported.
Mobile-network users who require guaranteed access: the README says some operators block MTProto more aggressively and there may be no fix.
People unwilling to inspect packaged binaries: the docs warn that PyInstaller triggers antivirus alerts and recommend checking official downloads with VirusTotal.

Setup reality

Our sandbox installed 45 Python packages in 29 seconds and used 72 MB on disk. The build succeeded in 8 seconds, and the available tests passed in 10 seconds. Pip-audit reported 34 known vulnerabilities in the installed environment.

Console mode needs Python 3.8 or newer and can generate a random 32-character secret. The default listener is 127.0.0.1:1443; sharing it with another device requires a non-loopback bind, firewall decisions, and the secret. Cloudflare routing is optional, but a private Worker or domain may be needed when shared endpoints are overloaded.

Tray requirements vary: macOS needs Python with Tk support, and Linux needs AppIndicator for the packaged tray interface. The 89-file checkout included 2 CI workflows, a Dockerfile, and a tests directory.

TG WS Proxy reroutes part of Telegram, not the whole device

The project starts an MTProto proxy on 127.0.0.1:1443, extracts the Telegram data-center identifier from the connection, and opens a TLS WebSocket route toward the matching Telegram endpoint. If WebSocket routing is unavailable, it can try a configured Cloudflare proxy or direct TCP. Telegram Desktop connects to the local address with a generated secret, either through a tg://proxy link or manual proxy settings.

This is a narrow networking tool. Games, browsers, Discord, and other applications do not pass through it. Voice calls and voice chats are outside MTProto proxy support. The FAQ also says reactions and stickers may use separate CDNs that the proxy does not accelerate. A user who needs every Telegram feature or all device traffic to cross the same tunnel needs a VPN or a different network design.

DC2 and DC4 decide whether media improves

The project's clearest limitation is account routing. Its FAQ says only Telegram DC2 and DC4 receive the intended proxy treatment; other data centers fall back to slower TCP or may not be proxied. Phone-number region and the other party can influence which data center handles traffic. One account may improve while another account on the same computer does not.

That makes a local trial more useful than a generic speed claim. Send a file to Saved Messages, inspect the log for the data-center route, and compare the same item with the proxy disabled. The README gives troubleshooting steps for media that does not load, including clearing custom DC mappings and configuring a private Cloudflare domain. It also concedes that some cases have no solution.

What happened when we ran it

Our sandbox installed 45 Python packages in 29 seconds and occupied 72 MB. The build finished successfully in 8 seconds, and the available tests passed in 10 seconds. We ran commit b2a8074 inside an unprivileged Debian container with 3 CPUs, 8 GB of RAM, no secrets, and Python 3.12.

Pip-audit reported 34 known vulnerabilities in the installed environment. The supplied measurement does not include severity counts or the affected package names, so we cannot rank their practical exposure from that result alone. A networking utility processes untrusted bytes and opens sockets, which makes the count worth resolving before broad deployment even though the build and tests were green.

The checkout had 89 files, about 7,344 source lines, and measured 2 MB before dependencies. It included 2 CI workflow files, a Dockerfile, and a tests directory. Those facts support a reproducible developer path, but our run did not measure Telegram throughput, latency, data-center coverage, Cloudflare availability, or behavior under a specific ISP block.

Loopback is the safe default, while sharing needs care

Console mode listens on 127.0.0.1 by default and chooses a random 32-character hexadecimal secret unless one is supplied. That is a sensible desktop posture because other machines cannot reach the socket. The source guide exposes --host, --port, per-DC addresses, buffer size, connection-pool size, logging, Fake TLS, Cloudflare domains, and HAProxy PROXY protocol support.

Binding to 0.0.0.0 changes the risk. A phone or second computer can then connect, but so can any host allowed by the firewall. Keep the authorization secret private, restrict the listening port, and avoid publishing a home machine directly. The project supports Docker with port 1443 exposed, which is convenient for a server but does not supply the surrounding firewall or ingress policy.

Desktop packaging covers old and new systems

Release assets cover Windows 10 x64 and ARM64, separate Windows 7 builds, Intel macOS 10.15 or newer, Apple Silicon macOS 11 or newer, and Linux x86_64. Source mode requires Python 3.8 or later. macOS tray mode needs a Python build with Tk, while Linux tray packaging requires AppIndicator. Console mode avoids the tray dependencies.

The docs warn that PyInstaller-packed executables can trigger antivirus detections. They recommend downloading only from the official Flowseal repository, checking VirusTotal, and adding a specific file exception rather than disabling antivirus permanently. That advice matters because lookalike forks and repackaged binaries are an obvious distribution risk for a proxy. Building from the MIT-licensed source avoids trusting a third-party binary, though the 34 dependency findings remain.

v1.10.0 is maintained, with fresh connectivity reports

GitHub showed 9,514 stars, 218 combined issues and pull requests, and a last push on August 13, 2026. Release v1.10.0 arrived the same day with a redesigned macOS interface, Docker image fix, and English documentation. Issue activity continued on August 26, including reports about Linux startup, media loading, and recovery after laptop sleep. That pattern shows active use and unresolved environment sensitivity at once.

Issue 1268 describes a proxy that stops fully or loses media after an Arch Linux laptop resumes and Wi-Fi reconnects. Issue 1267 says the latest Linux release fails to start for one reporter while v1.9.1 works. These are user reports, not universal results, but they identify two checks for a trial: cold startup on the target distribution and reconnection after network loss. The project is useful when its narrow route matches the account and network, not as a promised cure for every Telegram block.

Alternatives

ProjectWhat it isPick it when
TG WS Proxy AndroidAn Android fork of the same local MTProto WebSocket proxy idea.pick this instead when the proxy must run on an Android device rather than a desktop.
tg-ws-proxy-rsA Rust port of Flowseal's proxy with a smaller native runtime goal.pick this instead when you want a Rust implementation and will accept a younger fork.
mtgA server-oriented MTProto proxy implementation for Telegram.pick this instead when you control a public server and want a conventional remote MTProto proxy rather than a local WebSocket bridge.

What people are saying

  1. [github-trending] Flowseal/tg-ws-proxy

Sources

  1. TG WS Proxy English README
  2. Building from source guide
  3. TG WS Proxy v1.10.0 release
  4. Network resume issue
  5. Linux startup issue

More self-hosted reviews

v2 · OpenShell · wigolo · Mindwtr · club-3090 · reclip · the whole board →