Skip to content

danthi123/LoLProxChat

Repository files navigation

LoLProxChat

Server status Latest release License: PolyForm Noncommercial 1.0.0

Proximity voice chat for League of Legends. Hear nearby players (allies and enemies) with volume that scales by in-game distance, tied to minimap vision — if you can't see them, you can't hear them.

Standalone Windows desktop app built with Tauri 2 + WebView2. No Overwolf, no third-party voice service, no telemetry. Registered + approved on the Riot Developer Portal (App ID 809090).


Install

Download the latest lolproxchat.exe from Releases. Single portable executable — no installer.

Requirements:

  • Windows 10 1809+ or Windows 11
  • WebView2 Runtime (ships with Windows 11; pushed via Edge on Windows 10)
  • League of Legends in Borderless mode (Settings → Video → Window Mode → Borderless). Required — DX9 true fullscreen takes exclusive GPU output and no transparent overlay can render over it.

Launch the exe before or during a League match. The panel auto-attaches beside the minimap once a game is detected.

First run

Windows will show one of these on first launch (the exe isn't code-signed; this is the standard treatment for any unsigned binary downloaded from the internet):

  • "Windows protected your PC" (SmartScreen) → More infoRun anyway.
  • "This app has been blocked for your protection" (Mark of the Web) → right-click lolproxchat.exeProperties → check UnblockOK → re-launch.

Subsequent launches don't prompt.

Verify your download

Every release body includes a SHA-256 hash. Compare it against your downloaded exe to confirm you got the official build (defends against in-transit tampering, mirror reposts, typosquatted re-uploads):

# PowerShell
Get-FileHash lolproxchat.exe

# WSL / git-bash
sha256sum lolproxchat.exe

Every release exe is also auto-submitted to VirusTotal via a GitHub Action. Scan permalinks land in the release body within ~30 seconds of publish — verifiable against 70+ antivirus engines before downloading.


Quick start

  1. Make sure LoL is in Borderless mode.
  2. Launch lolproxchat.exe. The panel appears in the middle of the screen showing the current lifecycle ("Waiting for League of Legends", "In champion select", etc.).
  3. Once you load into a match, the panel jumps to the left edge of the minimap. Other players running LoLProxChat in the same match appear within a few seconds.
  4. Always Open mic is the default — just talk. MIC = self-mute, VOL = mute everyone, MUTE per row = silence a specific player.

For the rest — every Settings toggle, troubleshooting, log-grab flow, uninstall — see the user guide.


Docs

Doc When to read
User guide Day-to-day usage, every Settings toggle, troubleshooting, reporting bugs
Architecture How it actually works — CV pipeline, WebRTC flow, server design
Threat model What the design protects, what it doesn't, what we collect (and what we don't)
Compliance Relationship to Riot's third-party policy + Developer Portal status
Self-hosting Run your own signaling server
Contributing Build, test, release flow + code style
Security policy How to report vulnerabilities
Changelog What changed in each release

How it works (in 5 bullets)

  1. Game detection — reads the LCU and Live Client Data APIs for game phase + player roster. No memory reads, no injection.
  2. Position — Win32 BitBlt of the minimap region + HSV color filter + blob detection + ONNX champion classifier locates your champion icon. Position is in game coordinates.
  3. Signaling — players in the same match join a deterministic WebSocket room (room ID = hash of sorted player names) on a self-hosted Node server.
  4. Voice — WebRTC peer-to-peer audio between players (Opus 128 kbps, DTLS-SRTP). No audio touches any server.
  5. Proximity volume — AES-GCM-encrypted position blobs flow peer-to-peer; the server decrypts them just long enough to compute pairwise volumes (quadratic falloff up to 1200 game units, then quantized into 5 buckets + ±5% jitter to limit side-channel precision). Clients never see decrypted peer positions.

For depth, see docs/architecture.md.


Privacy + anti-cheat in one paragraph

LoLProxChat collects no analytics, no telemetry, no fingerprinting, no persistent user identifiers. The only data that leaves your machine is your summoner name (for room routing — same name visible on the match scoreboard), AES-GCM-encrypted position blobs (decrypted server-side, never logged), WebRTC signaling, and the voice audio itself (DTLS-SRTP, peer-to-peer, never touches the server). Want to keep your public IP private even from peers in your match? Settings → Hide IP (Force TURN) routes voice through the TURN relay. See docs/threat-model.md for the full breakdown.


License

PolyForm Noncommercial 1.0.0 — source available for personal and noncommercial use only.

Champion icon assets from the League of Legends Wiki (CC BY-SA 3.0) were used for model training only and are not distributed with this software.


Acknowledgements

  • LeagueMinimapDetectionCNN — reference code for minimap detection
  • League of Legends Wiki — champion icon assets used for classifier training
  • Tauri — desktop app framework
  • Cloudflare Realtime TURN — managed TURN relay infrastructure
  • Every user who's filed an issue or attached a log — your reports made this app actually work.