Metamod is the layer that sits between the engine and the game DLL and lets other things (AMX Mod X, Reunion, ReVoice, ReChecker, YaPB) hook in. Metamod-r is the modern fork: significantly faster hook dispatch, built for ReHLDS, and still able to load the same plugins as classic Metamod. If you are on ReHLDS in 2026, Metamod-r is the default choice.
1. Directory layout
Metamod lives under the mod directory, not the server root:
cstrike/
├── addons/
│ └── metamod/
│ ├── metamod.so (Linux) or metamod.dll (Windows)
│ └── plugins.ini
├── liblist.gam
└── dlls/
└── cs.so
mkdir -p /home/steam/hlds/cstrike/addons/metamod
2. Copy the binary
Download the current Metamod-r release and place the platform binary:
cp metamod.so /home/steam/hlds/cstrike/addons/metamod/metamod.so chmod 644 /home/steam/hlds/cstrike/addons/metamod/metamod.so
Check it is 32-bit — everything in a CS 1.6 server is:
file /home/steam/hlds/cstrike/addons/metamod/metamod.so
It must say ELF 32-bit LSB shared object, Intel 80386. A 64-bit file here produces wrong ELF class: ELFCLASS64 at startup.
3. Point liblist.gam at Metamod
This is the step that actually installs Metamod. Open cstrike/liblist.gam and change the gamedll lines so the engine loads Metamod instead of the game DLL — Metamod then loads the game DLL itself.
Before:
gamedll "dlls\mp.dll" gamedll_linux "dlls/cs.so"
After:
gamedll "addons\metamod\metamod.dll" gamedll_linux "addons/metamod/metamod.so"
Leave every other line alone. Note the backslashes on the Windows line and forward slashes on the Linux line — that is not cosmetic, and a Linux path in gamedll is one of the ways people end up with a server that boots straight into stock CS with no plugins at all.
4. Create plugins.ini
cstrike/addons/metamod/plugins.ini lists what Metamod loads, one plugin per line, prefixed with the platform:
; Metamod plugins linux addons/amxmodx/dlls/amxmodx_mm_i386.so ;win32 addons\amxmodx\dlls\amxmodx_mm.dll
Paths are relative to the mod directory (cstrike/), not to the metamod folder and not to the server root. ; starts a comment. A full breakdown of the format is in plugins.ini explained.
You can leave the file with only comments for now — Metamod loads fine with zero plugins, and that is a useful state to verify before you add AMXX.
5. Start and verify
cd /home/steam/hlds ./hlds_run -game cstrike +map de_dust2 +maxplayers 20 +sv_lan 0
In the console:
meta version meta list
meta version prints the Metamod-r version and the engine interface it detected. meta list prints the plugin table. Every plugin must show status RUN:
Currently loaded plugins:
description stat pend file vers src load unload
[ 1] AMX Mod X RUN - amxmodx_mm_i386. v1.9.0.5 ini Start ANY
If meta version answers Unknown command: meta, Metamod is not loaded at all — go back to liblist.gam. That is the cause in the overwhelming majority of cases.
6. Load order with the rest of the stack
Metamod must be installed after ReGameDLL, because ReGameDLL's archive contains a liblist.gam that points straight at cs.so. If you install ReGameDLL after Metamod and copy its liblist.gam over yours, Metamod disappears and every plugin with it. See the ReGameDLL guide for that warning in context.
Metamod does not replace the game DLL — it wraps it. The engine loads metamod.so, Metamod reads plugins.ini, loads each plugin, and then loads the real game library (dlls/cs.so) itself, chaining every hooked engine and game call through the plugins on the way. That is why breaking liblist.gam does not produce an error: the engine happily loads cs.so directly, the game runs perfectly, and Metamod is simply never in the picture. Your only symptom is that meta is an unknown command and every plugin is silently gone.
7. Managing plugins at runtime
Metamod-r can load and unload plugins without restarting the server, which is genuinely useful while debugging:
meta list meta load addons/revoice/revoice_mm_i386.so meta unload 2 meta reload 2 meta refresh
meta refresh re-reads plugins.ini and loads anything new in it. Treat all of this as a debugging aid, not a deployment method — plugins that hook engine functions at load time (Reunion, ReVoice) are not designed to be hot-unloaded from a live server and can leave the hook chain in a state that only a restart clears.
Common errors
Unknown command: meta—liblist.gamstill points atdlls/cs.so. Nothing else causes this.Failed to open addons/metamod/metamod.so— wrong path or wrong permissions. The path inliblist.gamis relative tocstrike/. See that error.bad loadnext to a plugin inmeta list— the plugin binary failed to initialise: wrong architecture, missing dependency, or built against an incompatible Metamod API.lddthe plugin's.soand read the bad load guide.wrong ELF class: ELFCLASS64— you downloaded a 64-bit build of something. There is no 64-bit CS 1.6.- Server segfaults on start after adding Metamod — classic Metamod (not -r) on ReHLDS with an old API. Use Metamod-r.
Verification
meta versionanswers.meta listshows every entry asRUN, none asbad loadorbadfile.- The server survives a map change with plugins loaded.
Once Metamod-r is confirmed, install AMX Mod X 1.9 (or 1.10) as its first plugin. If you are still deciding between forks, read Metamod-r vs Metamod-P.









