Set it up once and every CS2 match you play is parsed, measured and read back to you — how fast you peek, whether you actually counter-strafe, which utility was wasted, where you keep dying. On your machine, with nothing uploaded.
A real match, in the real interface — every name and Steam ID replaced. Nothing to install, nothing to sign up for.
A real 41-match history with every name and Steam ID replaced. Click a round, drag the minimap, play the 2D replay — it is the same code you would install, answering from files instead of a server.
Loading the app…
Career trends, AI-written patterns and per-match detail — running locally, in whichever of the four themes you prefer.
From high-level trends to frame-by-frame round analysis.
Full scoreboard, aim analysis, utility usage, economy timeline, side effectiveness and behavioral radar, all from a single demo file.
Track K/D, KAST%, HLTV rating, win rate, aim score and more across matches. Filter by map to see where you excel.
Watch any round play out on the radar: player movement, grenades with flight paths, kill lines and flash effects, rendered in real time.
Your CT and T roles worked out from where you actually stand, per map, on a spider chart. Anchor, rotator, lurker or entry fragger, read straight from your positions.
No cloud. No accounts. No telemetry. Your demo files stay on your machine. Everything runs through a local Docker container or Python process.
Bring your own API key (OpenAI, Anthropic, Gemini or Mistral) for match-specific feedback. Entirely optional; everything else works without it.
Pull your match demos straight from Valve instead of remembering to save each one in game. Sign in once with a QR code, no password typed anywhere.
Leave it running and it works through your backlog on its own, one match downloaded and analysed at a time. It pauses itself while you are in a game.
A demo costs about 280 MB but only 1.3 MB once analysed. Keep a rolling window of recent ones for re-analysis and reclaim the rest.
A few glimpses of what you'll see after parsing your first demo.
Watch a demo round play out on a stylized dust2 map. Movement trails, grenades and kills, just like the full app.
Every kill broken down into counterstrafe quality, engagement speed, crosshair placement, reaction time and bullet accuracy, then plotted against each other.
Every round told as a story: kills, utility, economy and positioning in one view.
Your playstyle quantified per side: aggression, trading, isolation, survival and sniper tendencies in one radar view.
Track grenade usage per round, flash effectiveness with blind durations, and your full economy timeline.
Rating, ADR and KAST across a real parsed matches — the same charts the app draws, on real data.
Add your own API key and you can talk through a match round by round. Skip it and nothing else changes.
Select a topic or ask anything about the match...
Three steps, and only the first two need you. After that it keeps itself current.
One command with Docker or Python and a local server comes up on port 8000. No account, no cloud, no telemetry — the analyzer never talks to anything but your own machine.
Point it at your CS2 replays folder and it imports whatever is new. Or connect your Steam account and it downloads matches for you — no saving demos in-game, no dragging files around.
Each demo is parsed, measured and added to your trend line on its own. Come back after a session and the work is done: what you did, what it cost you, and what to take into the next game.
Auto-Sync works the backlog unattended — one match at a time, and it pauses itself while you are in a game so a download never costs you ping.
Free, open source, and runs entirely on your machine.
docker compose up -d
Includes everything. Mount your demos folder and go.
pip install -r requirements.txt
uvicorn api:app --port 8000
Requires Python 3.11 or newer. Direct local install.
pr1maly is a passion project built in free time. Your support helps keep it going.
Found a bug? Have a feature idea? Let me know.
Open an IssueIf pr1maly helps your game, consider buying me a coffee.