steamforge-app/steamforge
A modern Steam achievement manager for Windows & Linux/Steam Deck. Browse your library, view global rarity, unlock/lock achievements. Native single binary — no .NET required.
SteamForge
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.
Why SteamForge?
| 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 |
Download
| Platform | Link |
|---|---|
| Windows | steamforge.exe |
| Linux | steamforge |
Screenshots
Browse your Steam library in grid view with achievement progress
Features
- Game Library - Browse your Steam games in grid or list view with search, filtering (all, incomplete, perfected, no achievements), and sorting (name, last played, achievement %)
- Achievement Management - View, unlock, and lock individual achievements or bulk modify selections. Supports auto-save or manual save workflows
- Global Rarity - Displays global unlock percentages from the Steam Web API with color-coded rarity tiers
- Achievement Scanning - Scan your entire library to fetch achievement counts and track overall completion
- Carousel Navigation - Switch between games with carousel-style card transitions (modal view) or arrow navigation (fullscreen view)
- Profile Detection - Automatically detects whether your Steam profile is public or private and adapts data sources accordingly
- Local Caching - Caches achievement counts and rarity percentages to minimize API calls
- Keyboard Navigation - Arrow keys to switch games,
/to focus search,Escapeto close
Tech Stack
| Layer | Technology |
|---|---|
| Backend | Go 1.23 |
| Frontend | Svelte 5, TypeScript 5.7 |
| Desktop | Wails v2 |
| Styling | Tailwind CSS 4 |
| Build | Vite 6 |
Prerequisites
- Go 1.23+
- Node.js 18+
- Wails v2 CLI
- Steam must be running on the same machine
Linux
WebKit2GTK is required:
# Ubuntu/Debian
sudo apt install libwebkit2gtk-4.1-devDevelopment
wails dev -tags webkit2_41This starts a Vite dev server with hot reload for the frontend and live reloads the Go backend.
Building
# 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/.
Project Structure
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
How It Works
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.
Support
If you find SteamForge useful, consider buying me a coffee.
License
This project is licensed under the MIT License.
