Steam CLI (Rust)
A local-first Steam CLI designed for LLM/tool workflows.
This project is intentionally not a "smart recommender". Instead, it exposes a set of stable primitives so an LLM (or any automation) can:
- discover the right tags / genres / categories
- compose Steam Store searches
- fetch structured app details
- optionally enrich with a user's library + playtime (Steam Web API)
Why this exists
Steam has great data, but it's scattered across:
- Steam Store endpoints (search + app details)
- Steam Web API (user/library)
- community-driven dictionaries (genres/categories)
This CLI normalizes that into a small, predictable interface:
- human-readable output by default
- machine output via
--json/--format json - fast local search for tags/genres/categories via SQLite + FTS5
Features
- LLM-friendly primitives (no "magic")
- Stable JSON envelope (
ok,data,pagination,meta,error) - Fast local lookup for:
- Steam Tags (id <-> name)
- Genres (id <-> name)
- Categories/Features (id <-> name; e.g. Local Co-op)
- Steam Store search by tag IDs
- optional facet extraction (related tags)
- Steam app details via
appdetailswith caching (TTL) - User owned games + playtime (optional; requires Steam Web API key)
Install / Build
Quick start
List and search tags:
Search the Steam Store using tag IDs:
Fetch app details (cached):
(Optional) Load user library + playtime:
Commands
Tags
Genres
Categories (Store "features")
Search (Steam Store)
Notes:
- Search uses Steam Store endpoints and currently parses HTML results.
--with-facetsextracts related tag IDs from the response (useful for iterative discovery).
App details
User library (optional)
Install skill (interactive or flags)
Notes:
- If
--providers,--scope, or--methodare missing, the command prompts interactively. - Provider selection prompt supports keyboard multi-select (up/down + space + enter).
- Interactive flow order: providers -> scope -> method -> summary -> confirm.
projectscope defaults to current working directory unless--project-rootis provided.- Fully non-interactive mode: provide
--providers,--scope, and--method. - Providers that share
.agents/skillsare normalized touniversalautomatically.
JSON mode
All JSON output uses a stable envelope:
meta.source values:
local_dbsteam_storesteam_webapiinternal
Data model (local)
The CLI uses a small SQLite database containing tags/genres/categories:
- Runtime location:
~/.steam-cli-rs/steam.db - Search engine: SQLite FTS5
The seed DB is embedded from assets/steam.db and copied to ~/.steam-cli-rs/steam.db if it does not exist.
Steam Web API key
steam-cli user owned requires:
STEAM_API_KEYenvironment variable- User profile "Game details" visibility set to Public:
Development
Regenerate the seeded DB from JSON dictionaries:
Non-goals
- No built-in recommendation engine
- No server component
- No attempt to fully mirror SteamDB datasets