R.E.P.O. mods come from Thunderstore and run on BepInEx. The easiest way is r2modman (or the Thunderstore Mod Manager), which installs BepInEx and every dependency for you, and lets you share a profile code so your whole lobby has the same mods.
Frameworks first, then the mods that need them. Badges are our live status for v0.5.1.
Steps
Install r2modman. Download it from its Thunderstore page and pick R.E.P.O.
Create a profile. Keep a separate profile per modpack so you can switch easily.
Install BepInExPack. r2modman adds it automatically with your first mod.
Install mods. Search the Online tab. r2modman pulls in required libraries such as REPOLib and MenuLib.
Start modded. Launch the game with the Start modded button, not from Steam.
Share the profile. Use Settings › Profile › Export profile as code, and have friends import it. Everyone needs the same gameplay mods.
Test in a solo lobby first. Make sure the game reaches the truck without errors before inviting friends.
Common pitfalls
Mismatched mods in a lobby. Different mod lists or versions cause desyncs or failed joins. Share one profile code.
Outdated mods after a game update. Numbered updates (v0.4.0, v0.5.0...) break mods built on REPOLib until they update; v0.5.0 broke REPOLib on release day and a fix followed the next day. Check update dates on Thunderstore and ModSafe's status.
Launching from Steam. That starts the vanilla game. Use the manager's Start modded button.
Too many content mods. Mods that add many valuables, monsters or levels can clash. Add a few at a time.
Common errors and fixes
How can I tell whether BepInEx is loading? Set Enabled = true under Logging.Console] in BepInEx\config\BepInEx.cfg to open a log console. If BepInEx.cfg was never created, BepInEx didn't start at all. Source: [BepInEx docs: troubleshooting.
Why won't BepInEx start on Linux or Steam Deck (Proton)? BepInEx loads through a winhttp.dll proxy, which Proton ignores by default. Open winecfg for the game (for example with protontricks --gui) and add a winhttp override under Libraries, or use a manager that sets this for you. Source: BepInEx docs: running under Proton/Wine.
A mod broke right after a game update. What now? Check the mod's Thunderstore page for a release dated after the update, and its GitHub issues for reports such as REPOLib's "New repo update broke this mod" after v0.5.0. Disable the mod until it updates. Source: REPOLib issues.
How do I give friends the same mods? In r2modman, export your profile as a code and have friends import it, so everyone in the lobby runs the same mods and configs. Source: r2modman README.
Rolling back
R.E.P.O. has no old-version branch on Steam (only a beta branch), so you can't pick an older game version from Properties.
Disable or uninstall a mod in r2modman, or switch back to another profile.
Start vanilla from Steam to play without mods.
r2modman can install an older version of a mod (Online tab › mod › select version) if a new one breaks.
Keep a working setup by stopping Steam from patching the game before your mods catch up: how to stop Steam auto-updates.