Releases: Bluscream/steam-cli
Release list
v0.9.0
steamcli server — the desktop client's Game Servers dialog, on the command line.
steamcli server browse 730 --not-empty --secure
steamcli server info 10.0.0.5:27015 --players --rules
steamcli server favorites --refresh
steamcli server add 10.0.0.5:27015
steamcli server lan
steamcli server connect 10.0.0.5:27015- browse searches Valve's master list with a typed filter (map, gametype, name, version, secure, dedicated, not-empty…). Any APPID accepts a game name.
- info queries a server directly over A2S — status, scoreboard and rules — with no API key.
- favorites and history read and write Steam's own file, so changes show up in the client. Writes are atomic, preserve everything they do not model, and keep a backup. Close Steam first; the commands warn when it is running.
- lan broadcasts a query and reports whoever answers.
Uses rumblefrog/go-a2s (MIT, zero transitive dependencies) rather than reimplementing the protocol. A panic in that library, triggered by a malformed reply from a real server, is contained so one bad host cannot take down a listing.
v0.8.2
Refactoring pass over the 0.8.0 work.
- Fixed a data race.
searchandinfofan out across goroutines that each resolved the configuration, which writes back to shared state when a profile setsallow_http. Settings are now resolved once, which also removes four redundant config reads perappsrun. - Unified logged-in-user resolution. Three commands had their own copy and
searchhad lost the desktop-client fallback, so it resolved a different account fromwebandinfoon the same machine. - CSV is machine-readable. It carried
546,909and33.4 MiB; numbers are now bare and sizes are raw bytes, while tables keep the readable form. - Covered the new local-config readers —
internal/library47% → 84%, project 72.6%. - Documented
info,search,appsandweb apps, none of which appeared in the README.
v0.8.1
Fixes for regressions introduced in 0.8.0.
--output parsedworks again as a deprecated alias forshort; every documented example had started erroring.STEAM_WEB_API_KEYis read again as a fallback forSTEAM_API_KEY.steamcli infonow reports sections it could not fetch instead of silently omitting them.- Launch-option values that look like credentials are redacted in
library custom;--show-secretsprints them. - The test suite is hermetic again — three tests had begun requiring live internet. The store endpoint is configurable via
store_url/STEAM_STORE_URL.
v0.8.0
What's Changed
- UI & Formatting: Upgraded all human/terminal outputs with
go-pretty, ANSI colors, clean borders, and formatted cards/tables. - ASF 2FA & Status: Added styled cards and tables for ASF 2FA codes and ASF status; added
-o shortto output raw 2FA tokens. - CSV Output: Added
--output=csvwith optional--with-headersupport. Removed obsoleteparsedoutput format. - Config & Auth: Switched default API key environment variable from
STEAM_WEB_API_KEYtoSTEAM_API_KEY(with backward-compatible fallback). - Client & Local: Styled path, install, and player detail views.
v0.7.1
steamcli web profile — a rendered profile view, aliased from web player.
Shows persona, all three SteamID forms, online status or the game being played, community visibility, country, account creation date, primary group and profile URL. Several IDs at once render as a table sorted by persona. -o json returns Valve's payload unchanged.
Aliases: profile, profiles. Not players — that is already the current player-count command.
v0.7.0
Rendered output by default.
--output auto is the new default (-o shorthand): each command prints the clearest form it has — a table, a report, or a reduced ASF value — and falls back to indented JSON where it has none.
statusshows its full report without--output rawlibrary,id,doctor,workshop collection/search/subs/installedand batch summaries render as tablesasf botsgained a table;asf tokenreduces to the bare code automatically
ASF envelopes are reduced only when they carry an outcome. A bot listing or asf status carries data, so it is printed whole rather than flattened to its envelope message.
Breaking: the previous default was json. Scripts parsing stdout should pass -o json.
v0.6.0
First public release.
One static binary for Steam from the terminal — no telemetry, no hosted middleware, no browser automation, and no Python, Node or .NET runtime. CGO-free, so it runs anywhere.
Install
curl -fsSL https://raw.githubusercontent.com/Bluscream/steam-cli/main/scripts/install.sh | shVerifies the download against SHA256SUMS below. Also available as an AppImage, an Arch PKGBUILD, or a plain binary for six platforms.
What it does
status— service health, latency, live player counts, connection managers, CS2 game coordinator with matchmaking queues and per-region datacenter capacityweb— discovery over ~170 Web API methods with an offline catalog, typed helpers, and a raw call escape hatchworkshop— cursor-paged search, subscriptions, favorites, and collection create / edit / delete including membershipcmd— SteamCMD bootstrapped from Valve on demand, with checksum verification and app/workshop downloadsasf— ArchiSteamFarm IPC: bots, commands, OpenAPI, two-factor codes, with--botsselectors and--output parsedclient— forwards to the desktop Steam client for launching, installing andsteam://URLslibrary,id,doctor— local inspection and diagnostics, fully offline
Notes
Some operations are genuinely not available through the Steam Web API: collection membership, your own subscription and favorite lists, and deleting your own Workshop files. Those use a browser session cookie, exactly as the Workshop web UI does, and the CLI tells you so plainly rather than reporting a success that changed nothing.
Credentials are never persisted. Profiles store only the names of environment variables and files.
Public domain under the Unlicense. Not affiliated with or endorsed by Valve Corporation.