Cross-platform game server management tool written in Rust. Inspired by WindowsGSM, but designed to be modular, extensible, and platform-agnostic.
Manage dedicated game servers — install, start, stop, monitor, update, back up — from a web interface, REST API, or Discord. No RDP or VNC required.
- Plugin-based game support — onboard any game as a plugin via a GitHub repository URL. Plugins are isolated, versioned, and upgradable independently.
- Server lifecycle management — install, start, stop, restart, delete, and import existing server instances.
- Process monitoring & crash recovery — detect abnormal exits, auto-restart with configurable retries and backoff.
- System resource monitoring — track per-process memory usage with tiered alerts (warn → alert) and user-defined automated actions.
- Cron-like job scheduling — automate restarts, updates, and other recurring tasks with cron syntax.
- Backup & restore — manual and scheduled backups with configurable retention, supporting local disk and S3.
- SteamCMD integration — install and update dedicated game servers through Steam.
- Discord integration — manage servers via commands, relay chat, and receive crash/status alerts.
- Notifications — configurable alerts across Discord, email, and extensible third-party channels.
- Real-time dashboard — live server statuses, historical uptime, crash/restart events, and key metrics.
- Multi-user & RBAC — role-based access control (admin, operator, guest), session management, and audit logging.
- Documented REST API — interactive OpenAPI/Swagger UI for programmatic access and integrations.
GameSmith is built with Rust and the Loco framework:
| Component | Technology |
|---|---|
| Framework | Loco |
| Web | Axum |
| ORM / Database | Sea-ORM (SQLite, PostgreSQL) |
| Templating | Tera + Fluent (i18n) |
| Async runtime | Tokio |
src/
controllers/ # HTTP route handlers
models/ # domain entities and ORM mappings
mailers/ # email templates and delivery
tasks/ # background jobs and scheduled work
views/ # response templates
workers/ # async background workers
initializers/ # app setup (view engine, middleware, etc.)
app.rs # application configuration and routing
lib.rs # library root
bin/main.rs # CLI entry point
tests/
requests/ # integration tests for HTTP endpoints
models/ # model unit tests with snapshots
tasks/ # task tests
workers/ # worker tests
config/ # environment-specific configuration (development.yaml, test.yaml)
migration/ # database migrations (Sea-ORM)
assets/
views/ # template files
i18n/ # localization resources
static/ # static assets
make devBoots the server, runs pending migrations, and starts listening on http://localhost:5150. No external CLI tool required.
# Desktop mode (tray icon + auto-open browser)
make dev-desktop
# Production (SQLite + background workers)
make release
./target/release/game-smith startDownload the latest .deb from the releases page and install it:
sudo dpkg -i game-smith_*.deb
sudo apt-get install -f # resolves any missing dependenciesThis installs:
/usr/bin/game-smith— the server binary/usr/share/applications/game-smith.desktop— app launcher entry/usr/share/icons/hicolor/*/apps/game-smith.png— application icons
After installation the Game Smith icon appears in your application launcher under Utilities. Clicking it starts the server; a tray icon appears in your system tray with options to open the dashboard or quit.
Install the .rpm package. The change takes effect after a reboot (or immediately with --apply-live):
rpm-ostree install game-smith-0.5.0-1.x86_64.rpm
# Optional: apply without rebooting
rpm-ostree install --apply-live game-smith-0.5.0-1.x86_64.rpmThis installs:
/usr/bin/game-smith— the server binary/usr/share/applications/game-smith.desktop— app launcher entry/usr/share/icons/hicolor/*/apps/game-smith.png— application icons
The .AppImage is self-contained. Download it, mark it executable, and run it:
chmod +x game-smith_0.5.0_x86_64.AppImage
./game-smith_0.5.0_x86_64.AppImage startTo integrate with your desktop launcher:
mkdir -p ~/Applications
mv game-smith_0.4.0_x86_64.AppImage ~/Applications/game-smith.AppImage
# The tray icon and desktop entry are handled by the app itselfDebian/Ubuntu:
sudo dpkg -r game-smithFedora / Bazzite (rpm-ostree):
rpm-ostree uninstall game-smithAppImage:
rm ~/Applications/game-smith.AppImageRun the setup script to check and install missing system dependencies:
make setupDetects your OS/distro and installs GTK3, libappindicator, and xdotool (required for the desktop feature). Creates .cargo/config.local.toml with the necessary library paths.
On unsupported distributions, you'll need to install these manually.
Local build configuration goes in
.cargo/config.local.toml(gitignored). Never commit machine-specific paths to.cargo/config.toml.
make testmake qa # runs fmt-check, lint, and testRun make help for a full list of available targets including migrations, builds, and cleanup.
Environment-specific configuration lives under config/. Key sections include database connection, server port, mailer, and authentication settings. Copy config/development.yaml and adjust for your environment.
Open issues and feature proposals are tracked on GitHub. See the issues tab for the current roadmap.
See LICENSE.