This release is a pre-release and may not be stable for production use.
Steam, from modern Python.
An asyncio SDK and CLI for Steam authentication and content preservation.
pysteam-sdk installs as pysteam. It is an independent Steam SDK built on secure CM WebSockets and current protobuf messages. This first release is an alpha; APIs and archive formats may change.
What you can do
| Area | Possibilities |
|---|---|
| Explore Steam | Inspect PICS app data, branches, depot manifests, and SteamIDs. |
| Sign in | Use anonymous, password, refresh-token, or QR login; handle Steam Guard codes and interactive challenges. |
| Manage accounts | Import a maFile, enroll an authenticator, and switch between encrypted saved profiles. |
| Preserve content | Archive raw depot manifests and encrypted chunks; verify and extract offline. Import or export Steam backups. |
| Explore updates | Snapshot app metadata, query Workshop, and archive Steam client packages. |
| Build integrations | Call Unified Messages and WebAPI endpoints, or exchange Game Coordinator messages. |
Get started
With uv installed, add the SDK to a Python project:
uv add pysteam-sdk
To use the standalone CLI:
uv tool install pysteam-sdk
pysteam app 220
pysteam doctor
The last two commands inspect public app data and test connectivity without an account.
Use your account
uv run pysteam init
uv run pysteam account add YOUR_NAME --mafile "path/to/account.maFile"
# Or: uv run pysteam account add YOUR_NAME --enroll
uv run pysteam login
uv run pysteam guard code
uv run pysteam depot list 220 221
uv run pysteam archive app 220
uv run pysteam archive verify 221 MANIFEST_ID
uv run pysteam archive extract 221 MANIFEST_ID --output restored
init creates a protected vault under ./.pysteam; account setup offers it automatically. Later commands ask for its password once per run. Set PYSTEAM_VAULT_PASSPHRASE through a secret manager for unattended use. Existing PYSTEAM_STORE_PASSPHRASE remains an alias. The maFile backup password is separate. Use vault change-password to rotate the vault and registered archive key capsules. See the account and archive guide.
Use the SDK
import asyncio
from pysteam import SteamClient
async def main() -> None:
async with SteamClient() as steam:
await steam.login_anonymous()
app = await steam.get_app_info(220)
print(app["appid"])
asyncio.run(main())
See the Python examples for authentication, WebAPI, CDN, and Game Coordinator usage.
Project links
- CLI and SDK examples · protobuf updater · issue audit
- Development and release checks · package layout · content references
Licensed under MIT. Independent of Valve and Steam.
Metadata
Release files for pysteam-sdk 0.1.0a0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pysteam_sdk-0.1.0a0.tar.gz | 206.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pysteam_sdk-0.1.0a0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 444.1 kB
Release files / pysteam_sdk-0.1.0a0.tar.gz
| Download URL | pysteam_sdk-0.1.0a0.tar.gz |
|---|---|
| Size | 206.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2b13983cb6e2552844063898f1ef472375c3f3e5b0b86df871f6806cda930267
|
|
BLAKE2b-256 checksum How to use checksums |
9d89dee92ed7a5644de2920a7e0bb55bc19fbd0c74c3d695971cc3bf938655cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pysteam_sdk-0.1.0a0-py3-none-any.whl
| Download URL | pysteam_sdk-0.1.0a0-py3-none-any.whl |
|---|---|
| Size | 238.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b1351cdfa55a84c707a045bfe2d2b634f3ec8db9954eecc2bf6afbaabcad0f52
|
|
BLAKE2b-256 checksum How to use checksums |
69ac4e20c0d460141f4535f59202c7aaac09a7e1cc2f5f01d1a604f174719a1c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|