SMAMS mirrors a Lethal Company (BepInEx) modpack exactly — same mods, same versions, same configs — for your whole friend group, through your own Forgejo, Gitea or GitLab server. It is a full mod manager too. Free and open source, for Windows and Linux.
GUI, CLI and an MCP server for AI agents · English & Magyar · Friends join with an invite code, no account
The owner links a profile to a repo on their Forgejo, Gitea or GitLab server and publishes. Every publish is a commit — the history is the changelog, and rolling back always works.
File contents are stored once in the server's package registry, keyed by SHA-256. Updates download only what changed, and everything is verified before a single file is replaced.
Friends paste a short invite code and get an exact mirror of the pack. The code holds no secrets — safe to paste into chat.
Paste the invite code you got from the modpack owner. SMAMS shows the pack's name, version and size before downloading anything.
Pick where it goes — a fresh profile, a fast hard-linked copy of one of your Gale profiles, or any folder you choose. Your existing setup is never touched by default.
Update now → Launch. SMAMS downloads and verifies everything first, then swaps files in. All up to date? Launch starts the game through Steam — a vanilla launch is one click away.
Mark files an update must
never overwrite (e.g. BepInEx/config/…/*) — your keybinds stay yours, everything else stays in
lockstep.
Before an update you see exactly what happens, per mod (added, removed, updated x → y, toggled) and per file. Any mod in the list opens its Thunderstore page.
Log in (browser OAuth or a token), link a profile to a repo — SMAMS can create the public repo for you — review the changes per mod and per file, write a message and publish. Only new file contents are uploaded.
Every version is listed with date, message and mod changes. Rolling back publishes an older state as a new version — old files are never deleted, so it always works.
Publish straight from a Gale profile (read-only), or import it as a hard-linked copy. SMAMS never writes to Gale's database and asks before it ever writes into a Gale profile.
One OAuth app (redirect
http://127.0.0.1/callback, public client), package size limits ≥ your biggest mod, a public org
with public repos — then friends never need to log in. Works on Forgejo, Gitea and GitLab.
In your own profiles SMAMS does what you expect from Gale or r2modman — subscribed profiles stay read-only, so they never drift from the pack.
Search, sort, categories, quick filters (installed / updatable), ratings, version history. Installs resolve dependencies and follow the exact Gale install rules.
Enable/disable, update, uninstall, update all with one click, missing-dependency warnings, sorting and author grouping. Click a mod and its details open next to the list.
Each mod's config files in a form — dropdowns for true/false and fixed choices, descriptions and defaults shown — or as raw text. JSON is validated, and every save leaves a timestamped backup.
Modded or vanilla, through Steam, on Windows and on Linux with Proton (the winhttp override is set up for you).
Logs in one place, integrity check against the pack, one-click repair or reinstall, and a diagnostics zip with every secret redacted.
smams-mcp exposes profiles,
mods, logs and checks to any MCP client. In opt-in write mode the agent can update, disable or remove the mod
it blames, pull the pack or repair files — logged, never while the game runs.
The GUI and smams-cli share the same config and profiles. Scripts welcome:
-y for unattended runs, meaningful exit codes, tokens only via stdin.
smams-cli publish --owner lc-modpacks --repo dave --create --name "Dave modpack" smams-cli push "first version" -y smams-cli invite smams-cli join 'lcsync1:…' --new "Dave modpack" smams-cli pull -y smams-cli launch
A package for your distro (below), or the AppImage / tarball for any distro.
Debian / Ubuntu (signed apt repo — updates come with apt upgrade)
curl -fsSL https://smams.szabotar.dev/apt/smams.gpg | sudo tee /usr/share/keyrings/smams.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/smams.gpg] https://smams.szabotar.dev/apt stable main" | sudo tee /etc/apt/sources.list.d/smams.list sudo apt update && sudo apt install smams
Arch Linux (signed pacman repo)
curl -fsSL https://smams.szabotar.dev/smams.asc | sudo pacman-key --add - sudo pacman-key --lsign-key 6259E2D732600B8B4032A19C12C68DE16237E85A sudo tee -a /etc/pacman.conf <<'EOF' [smams] SigLevel = Required DatabaseOptional Server = https://smams.szabotar.dev/arch/$arch EOF sudo pacman -Syu smams-bin
Arch Linux, or build it yourself from the PKGBUILD (not on the AUR yet)
mkdir smams-bin && cd smams-bin curl -fsSLO https://smams.szabotar.dev/download/PKGBUILD makepkg -si
Any other distro (AppImage, no FUSE needed)
curl -fLO https://smams.szabotar.dev/download/SMAMS-latest-x86_64.AppImage chmod +x SMAMS-latest-x86_64.AppImage ./SMAMS-latest-x86_64.AppImage --appimage-extract-and-run # the CLI from the same file: ./SMAMS-latest-x86_64.AppImage --appimage-extract-and-run smams-cli --help
Packages and repositories are signed with the SMAMS Releases key: smams.asc · 6259 E2D7 3260 0B8B 4032 A19C 12C6 8DE1 6237 E85A · SHA256SUMS (.asc) · all releases
Forgejo, Gitea and GitLab — self-hosted or public (Codeberg, gitlab.com). SMAMS talks to the server's HTTP API (repos, a package registry, OAuth); the server kind is detected automatically.
No. An invite code is enough for joining and updating, as long as the modpack repo and its owner are public. Only the owner logs in, to publish.
No. A profile is the BepInEx/ folder plus the 3 doorstop launcher files, nothing else.
Files you mark as "keep mine" are never overwritten, and disabled mods are left alone.
SMAMS reads Gale's database through a temporary copy and never writes it. The recommended setup is a hard-linked copy of your Gale profile: fast, no double disk usage, Gale untouched.
Both, as native apps. On Linux with Proton, SMAMS sets up the winhttp DLL override for you.
Because SMAMS reads the same backwards — and mirroring is exactly what it does: the owner's pack, the same on every friend's machine. The A is the mirror axis.
English by default, Hungarian built in: GUI — Settings → Language; CLI — --lang hu or
SMAMS_LANG=hu.