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 and macOS.
- ⚡ Mods are a few lines of Lua. Save the file and it reloads in the game within a second. No toolchain, no ModEngine.
- 🤝 Co-op for up to five players, peer to peer, at home or over ZeroTier or Tailscale. Friends missing the host's mods get them in one click.
- 🛡️ Safe by design. Easy Anti-Cheat never runs, no modded session reaches FromSoftware's servers, and your game install is only ever read (the rules).
- 🐧 Linux (Steam + Proton) and macOS on Apple Silicon (CrossOver, Whisky or protium, detected for you).
🌐 Website: https://benehiko.github.io/elden-ring-mods/
Download ermod-engine for your machine from the
latest release (…-linux-x86_64.tar.gz or
…-macos-aarch64.tar.gz), then:
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.
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.