Steam Idle Bot syncs your library, idles only the games that still have cards to drop, and remembers what's finished β so every run scans less and starts faster.
Most idlers blindly run every game forever. This one knows where the drops are.
Detects which games have trading cards and how many drops remain β idles just those, never wasting a slot.
A persistent no-drop cache records fully-farmed games and skips them forever. Each run scans less.
Verifies the Steam web session is genuinely logged in, and auto-recovers a valid session from your browser.
Live panel of game names, cards remaining and idle time; structured report + JSON/Markdown checkpoints.
Built-in Python client (Guard / 2FA) or a local steam-utility install β with transparent fallback.
uv-managed, fully typed, 242 tests across Python 3.12β3.14. Green on every push.
An orchestrator drives a swappable backend and three card services; game selection is a funnel.
# install uv, clone & sync
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/bernardopg/steam-idler-python.git
cd steam-idler-python && uv sync
# configure (never commit the filled .env)
cp .env.example .env # set USERNAME, PASSWORD, STEAM_API_KEY
./run.sh --dry-run # preview, no Steam contact
./run.sh # go β or ./run-gui.sh for the GUI