CAREER
100% Local · Open Source · Free

Stop guessing what to
practise next.

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.

50+ Metrics per match
10 Supported maps
0 Data sent to servers

This is the actual app. Use it.

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…

Open it full size → See the career view Read-only · nothing is saved · nothing is sent anywhere

The whole thing, in one screen

Career trends, AI-written patterns and per-match detail — running locally, in whichever of the four themes you prefer.

The pr1maly trends page: a sidebar with upload, sync and theme controls; overall performance tiles for rating, ADR, K/D, KAST, headshot rate, win rate, aim and utility, each with one dot per match; an AI career patterns panel naming aim, utility, behaviour and map-pool habits; and a match-by-match performance trend chart
Trends view, Intense theme · 76 matches analysed locally

Everything you need to improve

From high-level trends to frame-by-frame round analysis.

Match Breakdown

Full scoreboard, aim analysis, utility usage, economy timeline, side effectiveness and behavioral radar, all from a single demo file.

Trend Tracking

Track K/D, KAST%, HLTV rating, win rate, aim score and more across matches. Filter by map to see where you excel.

2D Round Replay

Watch any round play out on the radar: player movement, grenades with flight paths, kill lines and flash effects, rendered in real time.

Map Roles & Callouts

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.

Fully Local & Private

No cloud. No accounts. No telemetry. Your demo files stay on your machine. Everything runs through a local Docker container or Python process.

Optional AI Coaching

Bring your own API key (OpenAI, Anthropic, Gemini or Mistral) for match-specific feedback. Entirely optional; everything else works without it.

Demos from Steam

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.

Auto-Sync

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.

Disk that behaves

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.

Built for deep analysis

A few glimpses of what you'll see after parsing your first demo.

de_inferno 13 : 9 Apr 8, 2026
Player K D ADR Rating
► pr1me 28 14 98.3 1.42
Dusius 22 16 82.1 1.18
donk 19 17 76.4 1.05
Brabrabrupt 16 18 68.9 0.92
farruhkt 14 19 61.2 0.81
Match Scoreboard
1.24 HLTV Rating
72.4% KAST
84.1 ADR
48.2% HS%
Performance KPIs
Behavioral Radar

Interactive 2D Replay

Watch a demo round play out on a stylized dust2 map. Movement trails, grenades and kills, just like the full app.

de_dust2 Round 14 8 : 5
1.0×
0:00 / 0:23

Six dimensions of aim

Every kill broken down into counterstrafe quality, engagement speed, crosshair placement, reaction time and bullet accuracy, then plotted against each other.

AIM AIM : 52/100
OVERALL AIM
52 GOOD
COMPARE vs
Kill Death Dmg Only
COUNTERSTRAFE / MOVEMENT u/s avg
75% Still 17% C-Strafed 8% Running
PEEK SPEED u/s median
ENGAGEMENT TIME sec avg
PRE-AIM / CROSSHAIR ° avg
75% <3° 8% <10° 8% <25° 8% 25°+
REACTION TIME ms avg
13% <180ms 13% <230ms 25% <320ms 50% 320ms+
ACCURACY % avg
42% 1st bullet 41% Head 41% Chest 18% Limbs

Round-by-round breakdown

Every round told as a story: kills, utility, economy and positioning in one view.

R4 T FULL BUY $4600 WIN 5K 0D 476dmg
[D-Snake]avenger (at A Site) — AK-47 HS 81.4 u/s TTK 0.109s
rokot (at Goose) — AK-47 5.7° TTK 0.406s
MegaCalvoo (at Catwalk) — AK-47 util TTK 0.203s
◆ Flashed: hanz 0.82s, Boostmihi 0.5s ● Planted
Mid Area → Mid Area unknown → A Side Goose → unknown
R5 T HALF BUY $3900 LOSS 3K 1D 330dmg
R6 T FULL BUY $4800 WIN 2K 0D 208dmg
R7 T HALF BUY $3900 LOSS 1K 1D 157dmg
R8 T FORCE BUY $2000 WIN 1K 0D 222dmg
🗺 MINIMAP — ROUND 4
KILL DEATH PLAYER POS FLASH SMOKE
Killed [D-Snake]avenger — AK-47 HS
Killed rokot — AK-47
Killed MegaCalvoo — AK-47
Flash from Mid Area → A Site
Smoke from unknown → A Site

Behavioral assessment

Your playstyle quantified per side: aggression, trading, isolation, survival and sniper tendencies in one radar view.

CT SIDE ★ Isolation (64)
AGGRESSION
25% 1W/3L
🤝 TRADING
0% 0W/5L
👁 ISOLATION
67% 2W/1L
T SIDE ★ Isolation (78)
AGGRESSION
67% 2W/1L
🤝 TRADING
0% 0W/3L
👁 ISOLATION
100% 6W/0L

Utility impact & economy

Track grenade usage per round, flash effectiveness with blind durations, and your full economy timeline.

PER-ROUND UTILITY IMPACT
FLASH HE MOLLY
FLASH EFFECTIVENESS — PER INSTANCE (ENEMY VS FRIENDLY BLIND DURATION)
ECONOMY TIMELINE — ITEMS BOUGHT & ROUND IMPACT

Optional sparring partner

Add your own API key and you can talk through a match round by round. Skip it and nothing else changes.

🤖
PULSE_AI SPARRING
READY TO ANALYZE MATCH
OPENAI GPT-5.4-MINI ▾

Select a topic or ask anything about the match...

MATCH OVERVIEW ROUND-BY-ROUND POSITIONING & TRADES

Set it up once

Three steps, and only the first two need you. After that it keeps itself current.

1

Download & Run

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.

2

Import or Fetch

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.

3

Analyze & Improve

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.

Download

Free, open source, and runs entirely on your machine.

🐳

Docker (Recommended)

docker compose up -d

Includes everything. Mount your demos folder and go.

🐍

Python

pip install -r requirements.txt
uvicorn api:app --port 8000

Requires Python 3.11 or newer. Direct local install.

📦

Source Code

View on GitHub

Star the repo, open issues, or contribute.

Support the project

pr1maly is a passion project built in free time. Your support helps keep it going.

💬 Feedback & Ideas

Found a bug? Have a feature idea? Let me know.

Open an Issue

☕ Donate

If pr1maly helps your game, consider buying me a coffee.