📚 Usage Guide
Your quick reference for day-to-day Steam Idle Bot commands. For setup, configuration, and architecture, see the full README.
🔁 Everyday commands
# Preview config + chosen games — no Steam contact, no login
./run.sh --dry-run
# Start idling (terminal). Steam Guard prompt appears if needed (python backend)
./run.sh
# Desktop GUI
./run-gui.sh
# Direct module entry (run.sh sets PYTHONPATH for you)
uv run python -m steam_idle_bot --dry-run
🕹️ CLI flags cheat sheet
| Flag | What it does |
|---|---|
--dry-run |
Preview games and settings without touching Steam |
--gui |
Launch the desktop GUI (same as ./run-gui.sh) |
--no-trading-cards |
Skip card detection and accept the supplied game list |
--keep-completed-drops |
Include games that already exhausted their drops |
--max-games N |
Override the maximum number of concurrent games |
--refresh-interval-seconds N |
Re-run selection every N seconds; refreshes use quiet logging and short-lived caches |
--checkpoint-minutes N |
Write JSON/Markdown progress checkpoints every N minutes |
--duration-minutes N |
Stop idling automatically after N minutes |
--post-run-verify-seconds N |
Re-scrape counts/inventory after stopping to catch Steam badge lag |
--config PATH |
Load configuration from a custom location |
--no-cache |
Ignore the on-disk caches for this run |
--max-checks N |
Stop card lookups after N checks (large libraries) |
--skip-failures |
Suppress non-timeout warnings while checking cards |
Combine flags to suit the session:
# Idle the first ten games regardless of card status
./run.sh --no-trading-cards --keep-completed-drops --max-games 10
# Cut down on API calls for massive libraries
./run.sh --max-checks 50 --skip-failures
# Timed farm with quicker rotation opportunities and final badge/inventory verification
./run.sh --duration-minutes 30 --refresh-interval-seconds 120 --post-run-verify-seconds 30
# Runner controls: faster startup during development, or verbose environment sync
STEAM_IDLE_SKIP_SYNC=1 ./run.sh --dry-run
STEAM_IDLE_RUNNER_VERBOSE=1 ./run.sh
# One-off dry-run with inline credentials
USERNAME=foo PASSWORD=bar ./run.sh --dry-run
📝 Configuration reminders
- Preferred: copy
.env.exampleto.envand fill it in. Never commit.env. - Precedence: CLI flags → environment variables →
.env→ defaults. - For accurate drop filtering you need an authenticated
web:communitysession. The easiest path: stay logged into Steam in your browser and keepAUTO_BROWSER_COOKIES=true(the default). See the Authentication section. - Refreshes are optimized: badge payloads and positive drop verdicts are cached briefly in memory, and inventory snapshots can rotate out a game whose known remaining cards have all dropped before badge pages catch up.
- A legacy
config.pyis still read if present, but is discouraged.
Handy environment variables
| Variable | Quick note |
|---|---|
STEAM_API_KEY |
Enables library sync + badge data (recommended) |
IDLING_BACKEND |
python (Steam Guard / 2FA) or steam_utility |
AUTO_BROWSER_COOKIES |
Auto-recover a valid community session from your browser |
MAX_GAMES_TO_IDLE |
Cap concurrent games (Steam limit: 32) |
LOG_LEVEL |
INFO for clean output, DEBUG for troubleshooting |
STEAM_IDLE_SKIP_SYNC |
Set to 1 to skip the runner’s preflight uv sync |
STEAM_IDLE_RUNNER_VERBOSE |
Set to 1 to show uv sync output while ./run.sh prepares the environment |
STEAM_IDLE_PRESERVE_ENV |
Set to 1 when exported variables should intentionally override .env |
📚 More resources
- Installation, architecture, authentication, and troubleshooting: README.md
- Security policy: SECURITY.md