# Aurelia: a command-line Steam client for Linux and Windows
**A fast, lightweight, headless Steam launcher and library manager written in Rust. Install, update and play your Steam games entirely from the terminal.**
[](LICENSE)
[](https://www.rust-lang.org/)
[](#project-status)
[](https://aur.archlinux.org/packages/aurelia)
> [!WARNING]
> **Disclaimer: read before use.**
> Aurelia is an **independent, unofficial project** and is **not affiliated with, authorized, sponsored, or endorsed by Valve or Steam** in any way. "Steam" and "Valve" are trademarks of Valve Corporation.
>
> - **It modifies Steam's files directly.** Doing so may corrupt or damage your Steam installation, potentially forcing a full reinstallation. Back up your data first.
> - **No warranty for games launched outside the official Steam launcher.** Titles started through Aurelia bypass the normal Steam client and may not behave as expected.
>
> Use Aurelia entirely **at your own risk**. The authors accept no liability for damage to your Steam installation, lost data, or banned or suspended accounts.
Aurelia is a pure command-line Steam launcher and library manager. No CEF, no WebViews,
no GUI. It talks to Steam's real network protocols through
[`steam-vent`](https://codeberg.org/steam-vent/steam-vent), so you can log in, manage your
library, install and update games, sync Steam Cloud saves, manage Steam Workshop content,
see your friends and chat with them, and launch titles (natively or through Proton or Wine)
entirely from a terminal or a script.
Because it never needs a desktop session, it runs where the official Steam client can't:
over SSH, on a headless Linux server, in a container, on a low-memory box, or as one step
inside a shell script. Every command speaks `--json`, so it is equally at home as a backend
for another launcher.
It is the modern successor to **OpenSteamClient**, rebuilt in Rust for a smaller footprint,
memory safety, and a scriptable, headless-friendly workflow. It is also a full-fledged
alternative to **SteamCMD**, one that can *launch* the games it installs.
```bash
aurelia login
aurelia list --installed
aurelia install 1245620
aurelia play 1245620
```
---
## Contents
- [Why Aurelia?](#why-aurelia)
- [How it compares](#how-it-compares)
- [Project status](#project-status)
- [Install](#install)
- [Build from source](#build-from-source)
- [Usage](#usage)
- [Configuration](#configuration)
- [Documentation](#documentation)
- [FAQ](#faq)
- [Contributing](#contributing)
- [Acknowledgments](#acknowledgments)
- [License](#license)
---
## Why Aurelia?
- **No web technology.** No Electron, CEF, or embedded browser. Idle memory stays under
~50 MB instead of the official Steam app's hundreds.
- **Fast and scriptable.** A pure Rust CLI: instant startup, easy to automate, and every
command speaks `--json` for machine-readable output.
- **Linux first.** 64-bit clean, with first-class Proton and Wine management, and it runs on
Windows too. No X11 or Wayland session required for library and download work, so it works
over SSH and on headless servers.
- **Deep Steam integration.** PICS metadata, the content CDN, Steam Cloud, app ownership
tickets, depot browsing, DLC management, and Steam Workshop, all built on open, documented
protocols.
- **Open source.** GPL-3.0 licensed, with no dependency on opaque 32-bit legacy Steam binaries.
### How it compares
| Feature | Official Steam | OpenSteamClient | SteamCMD | **Aurelia** |
|---|---|---|---|---|
| **Architecture** | Electron + C++ | C++ with Qt | C++ (proprietary) | Pure Rust |
| **Idle RAM** | ~400-800 MB | ~100-200 MB | ~50 MB (per run) | < 50 MB |
| **Interface** | Desktop GUI | Desktop GUI | CLI (scriptable) | CLI (scriptable) |
| **Scope** | Everything | Library + launch | Install, update, Workshop | Library, install, launch, Cloud, Workshop, DLC, friends, chat |
| **Download engine** | CDN + P2P LAN | Standard CDN | Standard CDN | Multi-threaded CDN |
| **Authentication** | Full | Core | Full (+ anonymous) | Full (tokens, mobile app, Guard) |
| **Steam integration** | Native | Partial | Content only | Deep (PICS, CDN, Cloud, tickets) |
| **Platforms** | Windows, Linux, macOS | Windows, Linux | Windows, Linux, macOS | Linux (first), Windows |
| **Open source** | No | Yes | No | Yes (GPL-3.0) |
**vs. SteamCMD.** [SteamCMD](https://developer.valvesoftware.com/wiki/SteamCMD) is Valve's
official command-line tool and the closest analog to Aurelia, but it is **content-only**: it
downloads and updates app and Workshop files (often anonymously, for dedicated servers) and
little else. Aurelia is a full launcher and library manager. On top of installing and
updating, it lists and searches your library, **launches** games (natively or via
Proton or Wine), syncs Steam Cloud saves, manages DLC and Workshop subscriptions, reads
achievements, and does friends & chat, with every command scriptable via `--json`. SteamCMD is
proprietary and ships only as a prebuilt binary. Aurelia is open source (GPL-3.0).
---
## Project status
Aurelia is in **experimental beta**. The core is highly functional: authentication,
library management, installs and updates, integrity verification, DLC handling, Steam Cloud
sync, and Proton or Wine launching all work today.
| Area | Status | What works |
|---|---|---|
| **Authentication** | ✅ | Password, Steam Guard (email and device codes), Mobile App confirmation, refresh-token session restore |
| **Library** | ✅ | Fetch owned games, scan local installs, search & filter, Family Sharing |
| **Install & updates** | ✅ | 4-phase download pipeline (manifest → security → chunks), updates, uninstall, integrity verification, and moving installs between library folders, with Steam's `appmanifest` and `libraryfolders.vdf` kept in sync. Installs run in the background daemon and can be listed and cancelled (`install list`, `install stop`) |
| **Version pinning and downgrade** | ✅ | Install & pin a specific depot manifest (`downgrade`, `manifests`, `pin`, `unpin`), holding a game at an older build |
| **Localized metadata** | ✅ | Store text (`info`) and achievement names and descriptions follow a `--lang` flag or the `config language` default, used by the Heroic Steam integration |
| **DLC** | ✅ | Install, enable or disable, and per-DLC ownership and install status |
| **Steam Cloud** | ✅ | Enumerate, download, upload save data |
| **Proton and Wine** | ✅ | Runtime discovery, a download manager (official Valve Proton, GE builds, and **Proton-CachyOS** with AVX2 or `x86_64_v3` microarch selection), automatic **modern unified-layout** discovery (Proton 11+, GE, CachyOS, WOW64-aware) with strict bitness filtering, per-game version pinning, and launch integration. Depot-aware executable selection (native vs Proton), running-game tracking, and graceful or forced stop (`running`, `stop --force`) |
| **Self-contained Windows Steam runtime** | ✅ | Install or repair a master Wine Steam prefix (`steam-runtime install`, `repair`, `stop`, `uninstall`, `status`) to satisfy Steamworks and DRM handshakes without a host Steam client. `play --steam` falls back to it automatically when no host Steam is installed (`config steam-runtime-policy auto\|on\|off`) |
| **Optional launch plugins** | ✅ | Linux, opt-in, never bundled: **luxtorpeda** native engines, and **umu-launcher** (Proton via `umu-run`). Both are downloaded on demand and routed per-game |
| **Steam integration (opt-in)** | ✅ | Launch with real Steam integration (`play --steam`): the host Steam client bridged in, started silently if needed, or the in-Wine Steam runtime when no host Steam exists, for Steamworks and DRM. Auto-enabled on Family-Shared games |
| **Depot browser** | ✅ | List depots, inspect manifest trees, download single files |
| **Workshop** | ✅ | Browse and search, install and uninstall, subscribe, collections, rate, and read or post comments |
| **Friends & chat** | ✅ | Friends roster with live persona status and current game, resolve a SteamID from a profile or vanity URL, send or cancel friend requests, plus direct messaging (send, history, and an interactive live session). Presence is configurable, defaulting to invisible |
| **Inventory & market** | ✅ Read-only | View your inventory, look up item prices, search the Community Market, and see your wallet and listings. Buying & selling are planned |
| **Collections and categorization** | ✅ | Create, rename and delete library collections, add and remove games, a `list` COLLECTIONS column and `--collection` filter, and on-demand pull, push and sync with Steam's cloud collections |
---
## Install
### Arch Linux (AUR)
```bash
yay -S aurelia # or: paru -S aurelia
```
### Nix and NixOS (flake)
```bash
nix run github:Drackrath/Aurelia # run it once
nix profile install github:Drackrath/Aurelia # install it
```
### Debian and Ubuntu (.deb)
Grab the `.deb` for your architecture from the
[latest release](https://github.com/Drackrath/Aurelia/releases/latest):
```bash
sudo apt install ./aurelia_*_amd64.deb
```
### Prebuilt binaries (Linux, Windows, macOS)
Every release ships static-ish binaries for `linux_x86_64`, `linux_arm64`,
`windows_x86_64`, `windows_arm64`, `macOS_x86_64` and `macOS_arm64`.
See the [releases page](https://github.com/Drackrath/Aurelia/releases/latest).
```bash
curl -LO https://github.com/Drackrath/Aurelia/releases/latest/download/aurelia_linux_x86_64
chmod +x aurelia_linux_x86_64 && sudo mv aurelia_linux_x86_64 /usr/local/bin/aurelia
aurelia --help
```
---
## Build from source
### Prerequisites
You'll need a [Rust toolchain](https://rustup.rs/) (edition 2024).
On Linux, install the system dependencies first (Ubuntu 24.04 example):
```bash
sudo apt-get update
sudo apt-get install build-essential pkg-config libssl-dev libx11-dev libxi-dev \
libxrandr-dev libxinerama-dev libxcursor-dev libxkbcommon-dev libasound2-dev \
libudev-dev libwayland-dev libgtk-3-dev libpulse-dev libdbus-1-dev \
libegl1-mesa-dev libgles2-mesa-dev liblzma-dev
```
Windows and macOS need only the Rust toolchain.
### Build
```bash
git clone https://github.com/Drackrath/Aurelia.git
cd Aurelia
cargo build --release
```
The binary is produced at `target/release/aurelia` (`aurelia.exe` on Windows).
---
## Usage
Aurelia is driven entirely from the command line. Run `aurelia --help` for the full list
of subcommands, or `aurelia --help` for a specific one.
```bash
# Account
aurelia login # authenticate (prompts for credentials and Steam Guard)
aurelia logout # clear the stored session
aurelia account # show account details
# Library
aurelia list # list your library
aurelia list --installed # only installed games
aurelia list --search elden # filter by name
aurelia list --online # add an ONLINE column (needs-connection heuristic)
aurelia info 690830 # game details (description, release, reviews, DLC)
aurelia info 690830 --extended # + requirements, Metacritic, tags, genres, categories
aurelia info 690830 --lang german # localize store text (falls back to config, then English)
aurelia dlc 690830 # list a game's DLC with ownership and install status
aurelia drm 690830 # verify DRM/ownership tickets headlessly (no Steam client)
aurelia achievements 620 # your achievements for a game (unlock state + rarity)
aurelia achievements 620 --lang german # localize achievement names and descriptions
aurelia image 1245620 # fetch cover art to the cache (prints the path)
aurelia image 1245620 -o cover.jpg # save artwork to a specific file
# Install & maintain
aurelia install 1245620 # download & install a game by app id
aurelia install 1245620 --library D:\SteamLibrary # install onto a specific drive or library
aurelia libraries # list Steam library folders (one per drive) + free space
aurelia install list # show installs running in the daemon (with progress)
aurelia install stop 1245620 # cancel a running install
aurelia update 1245620 # download the latest manifest
aurelia verify 1245620 # verify installed files
aurelia uninstall 1245620 # remove a game (--delete-prefix wipes its prefix)
aurelia move 1245620 D:\SteamLibrary # move an install to another library (updates Steam data)
aurelia relink 1245620 D:\SteamLibrary # re-point Steam at already-moved files (no copy)
aurelia import 1245620 D:\SteamLibrary # register existing on-disk files with Steam
aurelia available 1245620 # is it installed and present on disk?
aurelia duplicates # games installed in several libraries at once
# (a duplicate makes a game re-report updates forever.
# prints the copies to delete, removes nothing itself)
# Downgrade & version pinning
aurelia manifests 1245620 # each depot's current manifest id per branch
aurelia downgrade 1245620 --depot 1245621 --manifest 8593343465227540543 # install an older build & pin it
aurelia pin 1245620 # lock the current install (block Aurelia updates)
aurelia unpin 1245620 # release the pin
# Older manifest ids aren't exposed by Steam. Find them on SteamDB:
# https://steamdb.info/depot//manifests/
# DLC
aurelia enable 2001 # enable an installed DLC for its base game
aurelia disable 2001 # disable a DLC
# Branches & depots
aurelia branches 1245620 # list beta branches
aurelia set-branch 1245620 beta # switch branch
aurelia depots 1245620 # list depots
aurelia launch-options 1245620 # list Steam launch configs (exe, args, platform)
# Launch
aurelia play 1245620 # launch a game and wait for it to exit
aurelia play 1245620 --proton experimental # Linux: force a specific Proton or Wine runner
aurelia play 1245620 --steam # run with Steam online features (Family Sharing, DRM)
aurelia running # list games Aurelia is currently running
aurelia stop 1245620 # stop a running game (--force to kill a hung one)
# Steam Cloud
aurelia cloud sync 1245620 # sync saves (down then up)
aurelia cloud list 1245620 # list a game's Cloud files
# Steam Workshop
aurelia workshop browse 1245620 # discover items (search, sort, paginate)
aurelia workshop info 1234567890 # item or collection metadata
aurelia workshop install 1234567890 # download an item (collections expand to members)
aurelia workshop subscribe 1234567890 --install # subscribe, then download
aurelia workshop status 1245620 # installed vs subscribed (+ update detection)
aurelia workshop rate 1234567890 up # thumbs-up (or: down) an item
aurelia workshop comments 1234567890 # read an item's comments
aurelia workshop comment 1234567890 "Nice mod!" # post a comment
# Friends & chat
aurelia friends # list friends (name, status, current game)
aurelia friends search gabelogannewell # resolve a SteamID (id, profile URL or vanity)
aurelia friends add 76561197960287930 # send a friend request (accepts a URL too)
aurelia friends remove 76561197960287930 # remove a friend or cancel a request
aurelia chat send 76561198042323314 "hi!" # send a direct message to a friend
aurelia chat history 76561198042323314 # show recent messages with a friend
aurelia chat open 76561198042323314 # interactive live chat (type to send, Ctrl-D quits)
# Inventory & market
aurelia inventory 753 --context 6 # your Steam cards, gems and backgrounds
aurelia market price 440 "Mann Co. Supply Crate Key" # item price (no login needed)
aurelia market search "Sticker" --app-id 730 # search the Community Market
aurelia market listings # your active listings & buy orders
aurelia wallet # Steam Wallet balance
# Configuration
aurelia config show # print launcher configuration
aurelia config protons # list detected Proton and Wine runtimes
aurelia config presence online # appear online for chat (default: invisible)
aurelia config language german # default language for info and achievements text
aurelia config game 1245620 --proton GE-Proton9-20 # pin a Proton version for one game
# Proton and Wine runtimes (download manager)
aurelia proton list # installable runtimes (Valve + GE + CachyOS) and what's installed
aurelia proton install GE-Proton9-20 # download a GE build (or "Proton 9.0" via Steam)
aurelia proton install Proton-CachyOS # CachyOS build (auto-picks x86_64_v3 or AVX2 when supported)
aurelia proton default GE-Proton9-20 # set the global default (used when a game has none set)
aurelia proton uninstall GE-Proton9-19 # delete an installed GE build
# Windows Steam runtime (self-contained Steamworks and DRM handshake, no host Steam client)
aurelia config steam-runtime-runner GE-Proton9-20 # select the Wine or Proton runner (required first)
aurelia steam-runtime status # resolved master prefix, layout, steam.exe presence
aurelia steam-runtime install # install Steam into the master Wine prefix (sign in here)
aurelia steam-runtime install --reinstall # delete the prefix first, then install fresh
# (for a corrupted install, no .bak is kept)
aurelia steam-runtime login # re-open the in-Wine Steam to sign in again
aurelia steam-runtime repair # back up the prefix (keep one) and reinstall
aurelia steam-runtime stop # shut down the in-Wine Steam, keeping the prefix
aurelia steam-runtime uninstall # remove the master prefix entirely (incl. any .bak)
aurelia config steam-runtime-policy on # make `play --steam` always use the in-Wine runtime
# (default `auto`: host Steam if present, else in-Wine)
# Collections (library categories): edit locally offline, sync to Steam on demand
aurelia collections list # all collections + game counts
aurelia collections create "RPGs" # new (static) collection
aurelia collections add "RPGs" 570 730 # add games by app id
aurelia collections remove "RPGs" 730 # drop a game
aurelia collections show "RPGs" # list a collection's games
aurelia list --collection "RPGs" # filter the library to one collection
aurelia collections pull # fetch Steam's collections and merge them in
aurelia collections push --yes # upload local collections to your Steam account
aurelia collections sync --yes # pull then push (reconcile both sides)
# umu-launcher plugin (Linux only, optional: Proton via umu-run, downloaded on demand)
aurelia umu enable # turn the plugin on (off by default)
aurelia umu install # download umu-run on demand (not bundled)
aurelia umu path ~/umu # use an existing install instead (skips the download)
aurelia umu status # show enabled state + installed version
aurelia config game 1245620 --umu # route one game through umu (Proton via umu-run)
aurelia play 1245620 --umu # one-off launch via umu
aurelia umu uninstall # remove the downloaded payload
# Luxtorpeda native-engine plugin (Linux only, optional)
aurelia luxtorpeda enable # turn the plugin on (off by default)
aurelia luxtorpeda install # download the client on demand (not bundled)
aurelia luxtorpeda path ~/luxtorpeda # use an existing install instead (skips the download)
aurelia luxtorpeda status # show enabled state + installed version
aurelia config game 2270 --native-engine # route one game through a native engine
aurelia play 2270 --native-engine # one-off launch via luxtorpeda
aurelia luxtorpeda uninstall # remove the downloaded payload
# Per-game launch scripts (wrap the resolved launch command with your own script)
aurelia scripts new 2270 # scaffold /2270.sh (2270.bat on Windows)
aurelia scripts list # app ids with a script + resolved paths
aurelia scripts show 2270 # print the resolved script + its contents
aurelia play 2270 # runs through the script (e.g. gamemoderun, mangohud)
aurelia config game 2270 --launch-script ~/my/wrap.sh # pin a specific script per game
aurelia play 2270 --script ~/other.sh # one-off override for a single launch
aurelia play 2270 --no-script # bypass all scripts for this launch
aurelia scripts remove 2270 # delete the dir-based script
```
> [!NOTE]
> **Luxtorpeda** is an optional plugin that runs supported games on native Linux engines
> (GZDoom, OpenMW, …) instead of Proton or Wine. It is **never bundled**. Aurelia downloads it
> on the fly into `~/.config/Aurelia/plugins/luxtorpeda` only when you enable the feature and
> opt a game in, so the binary stays lean. Linux only. Games run outside Steam's runtime
> container, so if an engine can't find system libraries, prefer Proton for that title.
> [!NOTE]
> **umu-launcher** is an optional plugin that runs Windows games through Proton **outside**
> Steam (applying the Steam Linux Runtime and per-game protonfixes), wrapping the launch with
> `umu-run` instead of replacing the runtime. Like luxtorpeda it is **never bundled**.
> Aurelia downloads it on the fly into `~/.config/Aurelia/plugins/umu` only when you enable the
> feature and opt a game in, so the binary stays lean. Linux only. It **wraps Proton** rather
> than replacing it, so `--umu` combines with `--proton` to pick the Proton build it runs.
> [!NOTE]
> **Per-game launch scripts** let you wrap the fully-resolved launch command with your own
> shell script (`/.sh`, or `.bat` on Windows). Aurelia runs the script with
> the resolved command as its arguments (`"$@"`) and exports `AURELIA_*` env vars, so a script
> that is just `exec "$@"` is a passthrough while a custom one can prepend `gamemoderun`,
> `mangohud` or `gamescope`. It works uniformly for native, Proton, luxtorpeda and umu launches.
> Resolution precedence: `play --script ` beats `config game --launch-script `,
> which beats the auto-detected `/.sh`. `play --no-script` bypasses all of them.
Add `--json` to any command for machine-readable output (errors included). It's a global
flag, so `aurelia --json ` and `aurelia --json` are equivalent.
📖 **See [USAGE.md](USAGE.md) for complete documentation of every command and option.**
---
## Configuration
Aurelia stores its configuration and local data under `~/.config/Aurelia`
(`%USERPROFILE%\.config\Aurelia` on Windows). Set **`AURELIA_CONFIG_DIR`** to relocate it.
That is useful for an embedding driver (e.g. Heroic) that needs Aurelia's state isolated from
a standalone install.
- **Library path.** Aurelia auto-detects your existing Steam installation. Inspect the
resolved configuration with `aurelia config show`.
- **Session.** Refresh tokens are persisted in `session.json` so subsequent invocations
log in automatically.
- **Unified download pipeline.** Installs, updates, and verifications all run through a
single, robust engine for reliability and speed.
---
## Documentation
| Document | Contents |
|---|---|
| [USAGE.md](USAGE.md) | Full reference for every command and flag |
| [WINDOWS_STEAM_RUNTIME.md](WINDOWS_STEAM_RUNTIME.md) | The self-contained Wine Steam prefix (`steam-runtime`) |
| [CONTRIBUTING.md](CONTRIBUTING.md) | How to contribute |
| [SECURITY.md](SECURITY.md) | Reporting a vulnerability |
| [FILES_REVIEWED.md](FILES_REVIEWED.md) | Manual review checklist for the latest code-review changes |
---
## FAQ
### Is there a Steam client that works without a GUI?
Yes. That is exactly what Aurelia is. It is a pure CLI Steam client: no Electron, no CEF, no
embedded browser, no desktop session required. You can log in, install games, update them,
sync Cloud saves and launch titles from a terminal or a shell script.
### Can I install and play Steam games over SSH or on a headless server?
Yes. Library management, downloads, updates, verification, Cloud sync and Workshop all work
headlessly over SSH. Launching a game still needs somewhere for it to render (a display,
a virtual X server, or a remote-play setup), but everything up to the launch does not.
### How is Aurelia different from SteamCMD?
[SteamCMD](https://developer.valvesoftware.com/wiki/SteamCMD) is Valve's official CLI tool,
but it is content-only: it downloads and updates app and Workshop files and little else.
Aurelia is a full launcher and library manager. It lists and searches your library, launches
games natively or through Proton and Wine, syncs Steam Cloud saves, manages DLC and Workshop
subscriptions, reads achievements, and does friends & chat. SteamCMD is proprietary and ships
as a prebuilt binary. Aurelia is open source under GPL-3.0.
### Is Aurelia an OpenSteamClient alternative?
It is its spiritual successor. OpenSteamClient is a C++ and Qt desktop GUI. Aurelia rebuilds
the same idea in Rust as a scriptable CLI, without the 32-bit legacy Steam binaries, at a
fraction of the memory footprint.
### Does it run Windows games on Linux?
Yes, through Proton and Wine. Aurelia discovers installed runtimes, downloads new ones
(official Valve Proton, GE-Proton, and Proton-CachyOS with AVX2 or `x86_64_v3` selection),
pins a Proton version per game, and can route launches through
[umu-launcher](https://github.com/Open-Wine-Components/umu-launcher) or native engines via
[luxtorpeda](https://github.com/luxtorpeda-dev/luxtorpeda).
### Do I need the official Steam client installed?
No. Aurelia talks to Steam's real network protocols directly. For titles that insist on a
Steamworks or DRM handshake, it can either bridge to a host Steam client if you have one, or
install a self-contained Windows Steam runtime inside its own Wine prefix
(`aurelia steam-runtime install`).
### How much RAM does it use?
Under ~50 MB idle, against roughly 400 to 800 MB for the official Steam desktop app.
### Which platforms are supported?
Linux is the primary target (x86_64 and arm64), Windows is supported, and macOS binaries are
built for each release. See [Install](#install).
### Can I use it to script my Steam library?
Yes. Every command accepts `--json` for machine-readable output, including errors, so
Aurelia works as a backend for other launchers and for automation. `AURELIA_CONFIG_DIR`
relocates its state so an embedding driver can keep it isolated.
### Is it safe to use? Can I get VAC banned?
Aurelia is unofficial and unaffiliated with Valve, it modifies Steam's files directly, and
third-party tools that interact with Steam carry a risk of action against your account.
Read the disclaimer at the top of this README before using it. Use at your own risk.
---
## Contributing
Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. By
participating, you agree to abide by our [Code of Conduct](CODE_OF_CONDUCT.md).
## Acknowledgments
Aurelia grew directly out of **[SteamFlow](https://github.com/weter11/SteamFlow)**, the
earlier project it is derived from and the foundation this work is built on. Our deepest
thanks to its author: SteamFlow did the hard groundwork that made Aurelia possible.
It stands, in turn, on **[steam-vent](https://codeberg.org/steam-vent/steam-vent)** and
**[steam-vent-chat](https://codeberg.org/steam-vent/chat)**, whose reverse-engineering and
protocol work let Aurelia speak Steam's real network protocols, and on a vendored, modified
`steam-cdn` (plus the `zip` crate) for the content pipeline.
### Credits
- [SteamFlow](https://github.com/weter11/SteamFlow): the project Aurelia is derived from. Its groundwork is the base everything here is built on. Thank you!
- [steam-vent](https://codeberg.org/steam-vent/steam-vent): Steam network protocol implementation
- [steam-vent-chat](https://codeberg.org/steam-vent/chat): Steam Chat protocol implementation
- [steam-cdn](https://crates.io/crates/steam-cdn): content-delivery and depot download engine (vendored & modified)
- [SteamKit2](https://github.com/SteamRE/SteamKit): Steam .NET research code
- [SteamHelper-rs](https://github.com/saskenuba/SteamHelper-rs): SteamKit Rust port
---
## Star History
---
## Related projects
- [SteamCMD](https://developer.valvesoftware.com/wiki/SteamCMD): Valve's official,
content-only command-line tool
- [OpenSteamClient](https://github.com/OpenSteamClient/OpenSteamClient): open-source C++ and
Qt Steam client. Aurelia is its Rust CLI successor
- [SteamFlow](https://github.com/weter11/SteamFlow): the project Aurelia is derived from
- [steam-vent](https://codeberg.org/steam-vent/steam-vent): the Steam network protocol
implementation Aurelia is built on
- [Heroic Games Launcher](https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher):
GUI launcher that can drive Aurelia for its Steam integration
- [umu-launcher](https://github.com/Open-Wine-Components/umu-launcher): optional launch plugin
that runs Proton outside Steam
- [luxtorpeda](https://github.com/luxtorpeda-dev/luxtorpeda): optional launch plugin for
native Linux engines
*Topics: steam client cli, headless steam, steam launcher linux, steamcmd alternative,
open source steam client, terminal steam, install steam games from command line,
proton launcher cli, steam library manager, rust steam client.*
---
## License
Aurelia is released under the [GPL-3.0 License](LICENSE).