Mod Elden Ring in Lua, live in the running game, and play it in co-op with your friends, over LAN or a VPN. On Linux, macOS and, experimentally, Windows.
- 📁 Your game install is never touched. The engine reads the game directory and writes nothing into it, so Steam's integrity check has nothing to revert.
- 💾 Your saves are never touched. Modded play happens on a profile, a copy kept in the engine's own directory. It copies your characters in by reading your save, never by writing it.
- 🔒 Co-op over LAN or VPN, private by default. Up to five players, peer to peer, at home or over ZeroTier or Tailscale. No matchmaking and no FromSoftware servers: only machines you can reach can join you, and you can only join machines you can reach. No strangers, no lobby password.
- ⚡ Mods are live Lua scripts. Switch any mod on or off from the in-game
menu; edit a file and it reloads within a second (on Windows, once you run
ermod-engine mod verify). No toolchain, no ModEngine, no restart. - 🤝 Mods follow the host, with your consent. Join a host with mods you lack and the menu offers them, already downloaded. Nothing lands in your mods directory until you press Enable.
- 🐧 Native on Linux, macOS and Windows. A native launcher for Linux x86-64 and Apple Silicon that finds your game and drives Proton, CrossOver, Whisky or protium for you, with no setup. On Windows, an experimental launcher runs the game and your mods without Wine; co-op, profiles and the settings window are Linux and macOS only for now.
- 🪶 Small and quick. One download of a few megabytes, nothing to install: unpack it and play. Easy Anti-Cheat never runs, and modded sessions never reach FromSoftware's servers (the rules).
🌐 Website: https://benehiko.github.io/elden-ring-mods/
- …mod Elden Ring. Drop a Lua file in a folder while the game runs and switch it on from the in-game menu; no ModEngine, no toolchain. How to mod Elden Ring.
- …play Elden Ring on Linux. A native launcher finds your Steam game and its Proton and starts it with mods and co-op. Elden Ring on Linux.
- …play Elden Ring on macOS. On Apple Silicon, inside CrossOver, Whisky, protium or any Wine; the launcher finds the bottle for you. Elden Ring on macOS.
- …play Elden Ring with mods on Windows. Experimental: a native launcher finds your Steam game and starts it with your mods, no Wine. Windows.
- …play Elden Ring co-op with friends. Peer to peer over LAN, ZeroTier or Tailscale, with the host's mods offered to everyone who joins. Elden Ring co-op.
Download ermod-engine for your machine from the
latest release (…-linux-x86_64.tar.gz,
…-macos-aarch64.tar.gz, or …-windows-x86_64.zip), then, on Linux or
macOS:
tar -xzf ermod-engine-<version>-<platform>.tar.gz
cd ermod-engine-<version>-<platform>
./ermod-engine --dry-run # finds your game and Proton/Wine; launches nothing
./ermod-engine install level60.lua # copy a mod in, e.g. from this repo's examples/
./ermod-engine # playIn the game, press ` (backtick) to open the ermod menu and switch
mods on and off.
Verifying the download,
macOS's quarantine and
everything else are in the install guide.
On Windows (experimental), unpack the .zip, put mods in
%LOCALAPPDATA%\ermod\mods, and run ermod-engine --dry-run, then
ermod-engine, from a terminal in the unpacked folder; see
Windows.
Everyone runs the same engine release and game build. Then:
./ermod-engine coop id # everyone: prints your join line
./ermod-engine coop host # the host, first; press Continue in the game
./ermod-engine coop join <host-id>@<host-address> # each friend, once the host says "you are hosting"That works as it is on one home network. Friends elsewhere? Join one
ZeroTier or Tailscale network first: network.md, a few
minutes, once. It also shows which of the addresses coop id prints is the
VPN's. The co-op guide covers three or more
players, mods in co-op, and what to do when a join fails.
Save this as level60.lua in your mods directory
(./ermod-engine paths shows where) while the game runs:
local mod = { name = "level60", version = "1.0.0", run_at = "launch", permissions = { "params" } }
function mod.on_launch(sdk)
sdk.params.row(sdk.params.file.CharaInitParam, 3000).soulLv = 60 -- the Vagabond starts at level 60
end
return modIt loads on the next frame. Check a mod before you share it:
./ermod-engine mod verify level60.lua # would it load in the game?For completion in your editor, point a Lua language server at
stubs/: { "workspace.library": ["path/to/elden-ring-mods/stubs"] }.
Then read the scripting guide and the eleven
examples, starting with
hello_launch.lua.
| Key | What it does |
|---|---|
` (backtick) |
Opens the ermod menu: every mod with a switch, profiles, and co-op. |
Insert |
Gives mouse and keyboard to mod windows, and hands them back to the game. |
The menu works from the keyboard too (Tab/arrows, Space/Enter). Rebind
either key with ./ermod-engine settings
(every setting).
| Game build | Engine | |
|---|---|---|
| 2.7.1.0 (latest) | v0.3.0 and later | mods and co-op |
| 2.7.0.0 | v0.2.0 and later | mods and co-op |
| 2.6.2.0 | v0.1.0 and later | mods; co-op without the rule fixes |
./ermod-engine check-build tells you which one you have. An unknown build
runs unmodded, with a warning.
| Install guide | Verifying downloads, macOS setup, where mods go, settings, troubleshooting |
| Profiles and your save | Modded saves kept apart from your own; profile and character commands |
| Co-op guide · LAN / VPN | Sessions, mods in co-op, fixes |
| Scripting guide | Every SDK module, the sandbox, mod perf, mod bake |
| Command reference | Every command and flag |
| Architecture | How it fits together |
This repository is the open half (SDK stubs, examples and docs) under Apache-2.0. The engine is closed source; its binaries ship on the Releases page under their own licence (NOTICE). ELDEN RING is the property of FromSoftware and Bandai Namco. This project is unaffiliated, distributes no game data, and never writes to an installation.