A modern, cross-platform Steam achievement manager. Browse your library, view global rarity stats, and unlock or lock achievements — all from a clean, Steam-themed desktop app. Native on both Windows and Linux/Steam Deck, with no .NET or Proton required.
Disclaimer: SteamForge modifies achievement data through the Steamworks SDK. Use at your own risk — modifying achievements may violate Steam's terms of service. This project is provided for educational and personal use.
| SteamForge | SAM | |
|---|---|---|
| Linux / Steam Deck | Native binary | Requires .NET / Proton workarounds |
| UI | Modern Steam-themed (Svelte 5) | Legacy WinForms |
| Global rarity stats | Built-in | No |
| Library browsing | Grid/list with filters & sorting | Flat list |
| Dependencies | Single binary, no runtime | .NET Framework required |
| Bulk operations | Select & modify multiple achievements | One at a time |
| Keyboard navigation | Full keyboard support | Mouse only |
| Platform | Link |
|---|---|
| Windows | steamforge.exe |
| Linux | steamforge |
Browse your Steam library in grid view with achievement progress
Fullscreen achievement view
/ to focus search, Escape to close| Layer | Technology |
|---|---|
| Backend | Go 1.23 |
| Frontend | Svelte 5, TypeScript 5.7 |
| Desktop | Wails v2 |
| Styling | Tailwind CSS 4 |
| Build | Vite 6 |
WebKit2GTK is required:
# Ubuntu/Debian
sudo apt install libwebkit2gtk-4.1-dev
wails dev -tags webkit2_41
This starts a Vite dev server with hot reload for the frontend and live reloads the Go backend.
# Linux
wails build -tags webkit2_41 -ldflags="-s -w"
# Windows
GOOS=windows wails build -ldflags="-s -w"
The compiled binary is output to build/bin/.
steamforge/
├── app.go # Main Go API surface
├── main.go # Wails entry point
├── internal/
│ ├── models/ # Achievement & Game data models
│ ├── services/ # GameService, AchievementService, WebAPI
│ ├── steam/ # Steamworks SDK wrapper, local stats parsing
│ ├── settings/ # Persistent settings & achievement cache
│ └── cache/ # Image caching
├── frontend/
│ ├── src/lib/
│ │ ├── pages/ # GamePicker, GameManager
│ │ ├── components/ # GameCard, AchievementRow, AchievementToolbar, etc.
│ │ ├── stores/ # Svelte stores (games, achievements, settings, app)
│ │ └── utils/ # Steam image URLs, rarity tiers, date formatting
│ └── wailsjs/ # Auto-generated Go bindings
├── wails.json # Wails configuration
└── Makefile # Build scripts
SteamForge connects to Steam through the Steamworks SDK to read and modify achievement state. When your Steam profile is public, it can also fetch achievement data from the Steam Community without requiring a game connection. Global unlock percentages are fetched from the Steam Web API with rate limiting and retry logic.
Achievement changes are written back through the Steamworks SDK, which requires the target game to be connected via Steam. The app handles connection management automatically when needed.
If you find SteamForge useful, consider buying me a coffee.
This project is licensed under the MIT License.