Steam · Go · Cross-platform

One command surface.
Three operating systems.

Millennium Helpers installs, upgrades, diagnoses, repairs, and configures the Steam client homebrew hook from one Go CLI.

Design throughlineKeep platform mechanics behind a stable contract while making every privileged or destructive step visible.

Role
Design and implementation
Coverage
Linux · macOS · Windows
Project
Project site Repository
Jump to a Millennium Helpers case study sectionCONDITIONCAUSECORRECTIONCONFIRM

Condition

Steam customization needed more than an installer.

Millennium hooks into the Steam client, which means a healthy setup depends on paths, permissions, injection state, client channels, themes, plugins, and background updates. Once installed, users still need a reliable way to understand and repair that state.

The workflow also has to feel consistent on Linux, macOS, and Windows despite different schedulers, privilege models, paths, and package ecosystems.

Cause

Platform scripts drift when they own the product contract.

Separate shell and PowerShell entry points can begin with the same intent and quietly diverge in flags, checks, or recovery behavior. That leaves documentation describing an average of several implementations rather than one dependable interface.

Repairs are particularly risky when diagnosis, mutation, backup, and rollback are split across unrelated scripts.

Correction

Put the contract in one binary and keep platform work at the edges.

The Go CLI owns diagnostics, doctor repairs, upgrades, rollback, scheduling, configuration, themes, injection, and the built-in MCP server. Platform adapters handle systemd, launchd, cron, Task Scheduler, sudo, and UAC without changing the user-facing command shape.

Dry-run and JSON output make changes inspectable. Atomic config writes preserve unknown settings, upgrades verify downloads, and backups bound the cost of a bad update.

Confirm

Installation and recovery now share the same vocabulary.

Users can check health, repair common faults, switch client channels, manage plugins and themes, or pause injection without reconstructing the original install path. Sanitized diagnostic sharing keeps troubleshooting useful without casually leaking local details.

Packaging spans Arch, Homebrew, Scoop, Nix, deb, rpm, Chocolatey, and Winget, while feature CI exercises the Go-owned contract on Linux, Windows, and macOS.