{"id":50517924,"url":"https://github.com/luminary-cloud/steam-account-manager","last_synced_at":"2026-06-03T01:04:49.685Z","repository":{"id":360511151,"uuid":"1250449321","full_name":"luminary-cloud/steam-account-manager","owner":"luminary-cloud","description":"Native Windows account manager for Steam. Encrypted vault, Steam Guard codes, mobile confirmations, one-click login. No installer, no telemetry.","archived":false,"fork":false,"pushed_at":"2026-05-26T17:34:13.000Z","size":6490,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-26T19:18:06.860Z","etag":null,"topics":["account-manager","authenticator","counter-strike-2","cpp","cpp20","imgui","mobile-confirmations","steam","steam-account-manager","steam-guard","totp","two-factor-authentication","vault","win32","windows"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luminary-cloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-26T16:34:43.000Z","updated_at":"2026-05-26T19:16:23.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/luminary-cloud/steam-account-manager","commit_stats":null,"previous_names":["luminary-cloud/steam-account-manager"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/luminary-cloud/steam-account-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luminary-cloud%2Fsteam-account-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luminary-cloud%2Fsteam-account-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luminary-cloud%2Fsteam-account-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luminary-cloud%2Fsteam-account-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luminary-cloud","download_url":"https://codeload.github.com/luminary-cloud/steam-account-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luminary-cloud%2Fsteam-account-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33843631,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["account-manager","authenticator","counter-strike-2","cpp","cpp20","imgui","mobile-confirmations","steam","steam-account-manager","steam-guard","totp","two-factor-authentication","vault","win32","windows"],"created_at":"2026-06-03T01:04:48.940Z","updated_at":"2026-06-03T01:04:49.681Z","avatar_url":"https://github.com/luminary-cloud.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# steam-account-manager\n\nNative Windows account manager for Steam. Encrypted vault, Steam Guard codes, mobile confirmations, one-click login. No installer, no telemetry.\n\n## Download\n\nGrab the latest `steam-account-manager.exe` from the [Releases](../../releases) page. The binary is statically linked, so it runs on any 64-bit Windows 10 or 11 with no Visual C++ Redistributable.\n\nOn first launch Windows SmartScreen may show \"Windows protected your PC\" because the binary is unsigned. Click **More info** then **Run anyway**. Code-signing certificates aren't free; this is normal for small open-source Windows tools.\n\n## What it does\n\n**Accounts.** Your vault, as a card grid or a list view with coloured groups (toggle in Settings).\n\n- Add manually, by `.maFile`, by `info.dat`, by walking the full mobile login flow, or by pasting an NFA refresh token.\n- Drag a `.maFile`, `info.dat`, or a folder of either onto the window to queue them.\n- Per-account password, notes, tags, trust labels, trade-hold timers. Search, filter, multi-select.\n- Privacy mode hides every login until you click to reveal one.\n- Right-click an account to copy its login, password, 2FA code, SteamID64, profile URL, or CS2 friend code; apply the CS2 video config; or change its Steam display name (honouring Steam's 5-minute persona cooldown).\n- **NFA (Non-Full-Access) accounts.** Paste a Steam JWT refresh token (`username----token`) for an account you only have token access to. It drops into an *NFA* group with a badge beside the trust dot, tracks how long the token stays valid, and warns you when it expires. Public stats (bans, level, games) still populate from the Web API key; the CS2 stats that need a full web session don't, so you can set a competitive cooldown by hand from the right-click menu.\n\n**Authenticator.** Steam Guard codes for any imported authenticator.\n\n- Add Steam Guard from inside the app via the mobile flow (phone check, AddAuthenticator, SMS finalize).\n- Remove it with the saved revocation code (scheme 1 reverts to email Guard, scheme 2 strips it; 15-day market hold either way).\n- Next-code preview so a window roll-over doesn't cost you a half-typed code.\n- Optional global hotkey copies the selected account's code without focusing the app, with auto-clear.\n\n**Confirmations.** List, approve, or deny pending mobile confirmations: trades, market listings, phone-number changes, gift redemptions.\n\n- Per-account, plus bulk approve / deny across a selection.\n- Optional background poller refreshes on an interval and toasts when new items land.\n- Auto-approve rules can clear market listings, phone changes, and trades to a trusted-partner list; everything else still waits for you.\n- Every decision goes to a local audit log with configurable retention.\n\n**Account review.** Per-account status pulled on refresh: VAC / game / community / trade ban indicators, Steam level, owned games, profile info, plus CS2 Premier rating, Wingman rank, CS2 level, Prime status, cooldown, and VAC-Live (scraped from the authenticated `/gcpd/730` page).\n\n- The public-API fields (bans, level, owned games) need a free Steam Web API key pasted into Settings; it's stored encrypted with the vault.\n- Every indicator is individually toggleable.\n- New bans, cooldown changes, and VAC-Live flips between refreshes surface as a card badge, an in-app toast, and an optional Windows tray notification, and are kept in a local log.\n\n**Launch.** One-click launch into any saved account through the standard registry login flow.\n\n- Best-effort auto-typing of the Steam Guard code into the Steam login popup via UI Automation; falls back to the clipboard with auto-clear.\n- NFA accounts sign in by injecting their refresh token into the Steam client, so they launch with no password and no code typing.\n- Optional per-launch CS2 video config: pick a `video.txt` in Settings and each launch copies it into that account's CS2 cfg folder, backing up any existing file first.\n\n**Export / import.** A passphrase-protected `.sambundle` you can carry between machines (passphrase separate from your master password). Import shows a merge preview before writing. Plain `login:password` export is gated behind a typed confirmation phrase.\n\n## Update check\n\nOn launch the app fetches `https://api.github.com/repos/luminary-cloud/steam-account-manager/releases/latest`. If the tag is newer than the version baked into the .exe, a modal offers to open the releases page or skip that version (skipping persists, so the same release stops nagging). The check runs once per launch on a background thread and stays quiet if the network is down. Turn it off in Settings.\n\n## Start with Windows\n\nEnable *Start with Windows* in Settings to register a Task Scheduler task that runs the app at logon with `--startup`: headless, it unlocks the vault (DPAPI cache required), refreshes every account, fires a tray notification for any new bans or cooldowns, then exits. It's a Scheduled Task rather than the `Run` key because the app requires administrator elevation, which the `Run` key skips.\n\n## What it doesn't do\n\n- No telemetry. The only network calls are the ones you trigger, plus the launch update check.\n- No password recovery. Lose the master password, lose the vault. There is no backdoor.\n- Windows x64 only.\n- No code signing. SmartScreen warns on first run.\n- No bundled cheats, scripts, or game modifications.\n\n## First run\n\nThe app requests UAC elevation on launch; the registry login flow and per-account `userdata` writes need it.\n\n1. Launch `steam-account-manager.exe`. The window opens on the Unlock screen.\n2. Create a master password. There is no recovery path, so pick something you'll remember.\n3. Add an account: manual, `.maFile`, `info.dat`, or full mobile login.\n4. Optional: enable *Skip master-password prompt on launch (DPAPI)* to auto-open the vault next time. Anyone signed in as you on this machine can then open it without the password.\n5. Optional: set auto-lock minutes, clipboard auto-clear, the per-indicator toggles, and your Steam Web API key.\n\n## Security\n\nThe vault (`vault.bin`) holds every account's secrets, encrypted with AES-256-GCM under a key derived from your master password (PBKDF2-HMAC-SHA256, 600 000 iterations). There is no recovery path: lose the master password, lose the vault. The optional DPAPI auto-unlock trades some of that protection for convenience.\n\n## Build from source\n\nSelf-contained: vendored deps under `third_party/` are fetched by a script, so there's no vcpkg, Conan, or submodule setup. Requires Visual Studio 2022 with the **Desktop development with C++** workload and the Windows 10 SDK.\n\n```powershell\ngit clone https://github.com/luminary-cloud/steam-account-manager.git\ncd steam-account-manager\n.\\scripts\\init_third_party.ps1\nstart steam-account-manager.sln\n```\n\nPick `Release | x64` and hit F7; the binary lands at `build\\Release\\steam-account-manager.exe`. A pre-build step runs `scripts\\gen_protos.ps1` to regenerate the protobuf sources using the vendored `protoc`.\n\nDebug builds are currently broken because the vendored libprotobuf is Release-MT only. Build Release.\n\n## Project layout\n\n```\napp/         WinMain, app state, background vault writer, job pump, drag-and-drop\ncore/\n  sda/           TOTP, confirmations, maFile / info.dat import, add and remove Steam Guard\n  steam_api/     Steam Web API (summaries, bans, level, owned games, vanity resolution)\n  steam_login/   mobile auth flow (RSA, BeginAuthSession, poll, finalizelogin)\n  profile/       Steam display-name change\n  steam_gcpd/    GCPD scraper for CS2 ranks / cooldowns\n  steam_local/   loginusers.vdf parsing and rewriting\n  steam_auth/    generated protobuf for IAuthenticationService\n  account_store/ vault types, atomic-write format, filter / sort helpers\n  crypto/        AES-GCM, AES-CBC, HMAC, PBKDF2, Rijndael-256, RSA, SecureString\n  cs2/           CS2 friend-code conversion\n  cs2_config/    CS2 video.txt deploy into the per-account cfg folder\n  http/          WinHTTP wrapper\n  launch/        steam.exe relaunch, UI-Automation login driver, clipboard auto-clear\n  update_check   GitHub release check\nplatform/    Win32 wrappers: paths, registry, process, clipboard, DPAPI, tray icon, startup task, UIA\nui/\n  screens/   one file per screen (unlock, accounts, add_account, sda, confirmations, settings)\n  widgets/   reusable composites (account_card, account_context_menu, rank_image, ...)\nthird_party/ fetched by scripts/init_third_party.ps1\nassets/      app icon and CS2 rank images, compiled into the .exe via app.rc\n```\n\nThe `core/ \u003c-\u003e ui/` split keeps everything in `core/` headless and unit-testable.\n\n## Portable mode\n\nDrop a file named `portable.flag` next to the .exe. The vault, settings, logs, and DPAPI cache live alongside the binary instead of `%LOCALAPPDATA%\\steam-account-manager`. Useful from a USB stick or sandbox.\n\n## Vendored libraries\n\n| Library | License | Used for |\n|---|---|---|\n| [Dear ImGui](https://github.com/ocornut/imgui) (docking) | MIT | UI |\n| [mbedtls](https://github.com/Mbed-TLS/mbedtls) | Apache-2.0 | AES-GCM, AES-CBC, PBKDF2, HMAC, RSA |\n| [nlohmann/json](https://github.com/nlohmann/json) | MIT | JSON, CBOR |\n| [spdlog](https://github.com/gabime/spdlog) | MIT | Logging |\n| [stb](https://github.com/nothings/stb) | MIT / public | PNG decode for avatars |\n| [utfcpp](https://github.com/nemtrif/utfcpp) | BSL-1.0 | UTF-8 / UTF-16 conversion |\n| [doctest](https://github.com/doctest/doctest) | MIT | Unit tests |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | BSD-3 | Codegen for IAuthenticationService |\n\n## License\n\n[MIT](LICENSE).\n\n## Contributing\n\nPull requests welcome. A `clang-format` config and a `/W4 /WX` build are at the repo root, so formatting is enforced and warnings break the build.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluminary-cloud%2Fsteam-account-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluminary-cloud%2Fsteam-account-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluminary-cloud%2Fsteam-account-manager/lists"}