The open-source desktop client for Vael, an AI voice coach for Dota 2. This repository contains the full source of the app that runs on your machine, so anyone can read exactly what it does before installing it. The AI/coaching backend is a separate hosted service and is not part of this repo.
- Website & download: https://vaelcopilot.tractioneye.xyz
- Built with Tauri v2 (Rust core + a WebView UI). Windows only.
1. Download & install. No account is needed just to download.
- Click Download on https://vaelcopilot.tractioneye.xyz, then run
Vael-Setup.exe. - Or download and launch it from PowerShell in one line:
iwr https://vaelcopilot.tractioneye.xyz/download/Vael-Setup.exe -OutFile "$env:TEMP\Vael-Setup.exe"; & "$env:TEMP\Vael-Setup.exe"On first run, Windows SmartScreen may warn about an "unknown publisher" — click More info → Run anyway (see Installing below for why that's normal).
2. Create an account. Open Vael and sign up with email or Google (or sign in if you already have an account).
3. Choose your push-to-talk key. Open Settings and pick the key you'll hold to talk to Vael.
4. Pick the game. In Library, select Dota 2 (the only supported game for now).
5. Launch with the coach. Hover the Dota 2 cover and click Play with AI companion — the game and Vael start together, and Vael tucks itself into the system tray.
6. Talk to Vael in-game. Once you're in a match, hold your push-to-talk key and ask a question — Vael answers out loud, right in the game.
Everything below is verifiable in this source tree — the relevant files are named.
How it reads the game
- Game State Integration (GSI). Dota 2's own, Valve-sanctioned feature: the game
POSTs match state to a localhost-only server the app runs on
127.0.0.1:53210, protected by a per-install token. Nothing here leaves your machine except what the app forwards to the Vael backend. Seesrc-tauri/src/gsi.rs. - Optional screen reading (OFF by default). GSI never reveals the enemy draft, so —
only if you turn it on — the app captures the Dota game window (via Windows
Graphics Capture) to recognize enemy heroes from the top bar. Only the Dota window is
captured, only while enabled. See
src-tauri/src/vision/.
What it sends
- Your own hero/state and (if enabled) recognized enemy heroes, plus your push-to-talk
voice, go over an encrypted connection to the Vael backend, which returns the coach's
reply (text + speech). You can see exactly what is sent in
ui/app.jsandsrc-tauri/src/.
What it does NOT do
- It does not send input to Dota, automate play, or read the game's memory — it is read-only and never interferes with the match.
- It does not log your keystrokes. It listens for the single push-to-talk hotkey
you configure, nothing else. See the PTT handling in
src-tauri/src/main.rs. - It does not capture your whole screen or other apps — only the Dota window, and only when screen-reading is switched on.
- The microphone is held open only while Dota is running.
Updates are verifiable. Releases are built by this repo's public CI and signed with
a minisign key. The app only accepts an update whose signature matches the public key
baked into src-tauri/tauri.conf.json. Each GitHub Release also publishes SHA-256
checksums, so the installer you download can be checked against the one CI produced.
When you run the installer, Windows SmartScreen may show a blue "Windows protected your PC — unknown publisher" warning. This is expected: Vael is open-source and is not signed with a paid Authenticode certificate, so Windows doesn't recognize the publisher. Click More info → Run anyway to continue.
This is normal for open-source software that ships without a code-signing certificate — it does not mean the app is unsafe. You can read every line of what it does in this repository, and each release ships a SHA-256 checksum so you can verify the installer matches the public build.
Prerequisites: Rust (stable) and Node.js 20+, plus the Tauri prerequisites for Windows (WebView2 is present on Windows 10/11 by default).
npm ci
npm run build # = tauri build -> installer in src-tauri/target/release/bundle/nsisFor a dev run: npm run dev.
A build from source runs the same code as the official release. Auto-update points at the
same feed, so a self-built copy will update to the next official signed release unless you
change the endpoint in src-tauri/tauri.conf.json.
Tagging desktop-v<version> triggers .github/workflows/release.yml, which builds, signs,
and publishes the installer, its signature, latest.json, and SHA256SUMS.txt to GitHub
Releases. Nothing but public source and public CI is involved.
MIT © 2026 Vasiliy Andronov (Vael).
Security reports: see SECURITY.md.