Important
Disclaimer: We are not affiliated with Wizard101Rewritten in any way and do not tolerate any use of this project in reference to Wizard101Rewritten!
- Introduction
- What's New in the Rework
- Architecture
- Getting Started
- Configuration
- HTTP API
- Migrating from v3.x
- Contributing
- Community
- License
Aurorium is the backbone of the Revive101 project: it fetches, tracks, and serves the game assets that the Wizard101 client needs to patch and run. Our goal is to keep this process open and easy for the community to run, inspect, and contribute to.
The rework branch is a substantial rewrite of Aurorium, moving it from a CLI-driven downloader into a persistent service with its own file server and database:
-
Built-in HTTP server (axum): Aurorium now has an additional route called
/latestwhich is updated every$n$ hours. -
SQLite-backed asset tracking: Revisions and assets are tracked in a proper database (via
rusqlite+async-sqlite, with schema migrations), replacing the old flat-file bookkeeping. - Smarter asset resolution: Because assets are deduplicated and indexed by name/CRC/size, unchanged files aren't re-downloaded or re-stored between revisions, and requests are resolved to whichever revision actually owns the file.
-
TOML configuration file: Runtime settings now live in
config.tomlinstead of CLI flags/environment variables, and a default one is generated for you on first run. -
Structured logging: Switched to
tracing/tracing-subscriber, with optional file logging and configurable log levels. -
Friendlier errors: Errors are now reported via
miettewith human-readable diagnostics and hints instead of bare error messages.
Aurorium runs two tasks concurrently:
- Revision checker: periodically polls the configured patch server, compares the latest manifest against what's already in the database, and downloads only new or changed assets into
save_directory. - File server: an axum-based HTTP server that exposes the tracked revisions and assets to clients (e.g. a patched Wizard101 client, or downstream tooling).
Both share the same AppState (config + database handle), so newly fetched assets become servable as soon as they land on disk.
Note
If you are not a developer, you can skip to the releases page and download the latest version directly.
- Rust (edition 2024 toolchain)
- A code editor like VS Code
- rust-analyzer extension
git clone https://github.com/Revive101/Aurorium.git
cd Auroriumcargo run # Debug
cargo build --release # Optimized buildOn first launch, if no config.toml is found in the working directory, Aurorium generates one with sensible defaults (see Configuration).
link.exe not found (Windows):
- Install Microsoft C++ Build Tools
- run:
rustup toolchain install stable-x86_64-pc-windows-msvc
rustup default stable-x86_64-pc-windows-msvcOn Linux: use target x86_64-unknown-linux-gnu.
Aurorium is now configured entirely through config.toml in the working directory:
[server]
endpoint = "127.0.0.1:12369"
[fetcher]
concurrent_downloads = 2
save_directory = "data"
fetch_interval = 28800
[patch]
host = "patch.us.wizard101.com"
port = "12500"
[database]
path = "aurorium.db"
# Optional
[debug]
level = "info"
file_logging = false| Section | Field | Description | Default |
|---|---|---|---|
[server] |
endpoint |
Address the file server binds to | 127.0.0.1:12369 |
[fetcher] |
concurrent_downloads |
Number of assets to download in parallel | 2 |
[fetcher] |
save_directory |
Where fetched assets are stored on disk | data |
[fetcher] |
fetch_interval |
Seconds between revision checks | 28800 (8 hours) |
[patch] |
host |
Patch server host to poll for revisions | patch.us.wizard101.com |
[patch] |
port |
Patch server port | 12500 |
[database] |
path |
Path to the SQLite database file | aurorium.db |
[debug] (optional) |
level |
Log level (trace, debug, info, warn, error) |
info |
[debug] (optional) |
file_logging |
Whether to also write logs to logs/ |
false |
Once running, Aurorium exposes:
| Method | Route | Description |
|---|---|---|
GET |
/revisions |
Lists all revisions currently tracked in the database (JSON) |
GET |
/latest |
Returns the name of the most recently tracked revision |
GET |
/{revision}/{file_path} |
Serves a specific asset, resolving it to the revision that owns it |
LatestFileList.xml/.bin are always served from the requested revision directly; any other file is resolved to whichever revision first introduced it, so unchanged assets aren't duplicated on disk.
The rework branch changes enough that a v3.x setup can't be dropped in as-is:
- Configuration moved from CLI flags/env vars to
config.toml— recreate your settings there (see table above). - A SQLite database (
aurorium.dbby default) now tracks revisions/assets; it's created and migrated automatically on first run, but existing on-disk data from v3.x isn't imported. - Aurorium now also serves files over HTTP itself, so downstream consumers can point at
/{revision}/{file_path}instead of reading straight off disk.
If you're upgrading a running instance, we recommend starting from a fresh save_directory and database rather than trying to reuse v3.x state.
We welcome all contributions! Whether you're a Rust wizard or a curious apprentice, your input helps!
- 🍴 Fork the repo, make your changes on top of
rework, and submit a pull request. - 🐛 Report bugs or suggest features via issues.
Note
Contributors can request the @Contributor role in our Discord. Make sure your GitHub is linked to your Discord account.
Join us on Discord to meet other fans, developers, and contributors!
Aurorium by Phill030 is licensed under CC BY-NC-SA 4.0.
