server_cfg.ini is the main configuration file for an Assetto Corsa racing server — the stock Kunos dedicated server. It controls the track, the sessions, the grid size, the assists, the race rules and the weather. Most guides tell you to paste in a template and change the name. This one explains every setting, what it actually does, and which values make sense — plus it corrects a few keys that half the internet gets wrong.
One thing to get straight before we start: this file belongs to the Kunos racing server. A freeroam server (AssettoServer) uses server_cfg.ini too, but adds a third file, extra_cfg.yml, for AI traffic and plugins. If you're setting up traffic and cruising, none of the race-rules settings below apply to you — read which Assetto Corsa server you actually need first. Everything here is the racing path.
server_cfg.ini lives in the server's cfg/ folder alongside entry_list.ini (the grid). Let's go through it section by section.
The [SERVER] section
This is the big one — server identity, network, grid size and race rules all live here.
; ---- cfg/server_cfg.ini → [SERVER] ---- [SERVER] NAME=My League — Round 3 GT3 @ Spa ; name shown in the server browser CARS=ks_ferrari_488_gt3;ks_mclaren_650_gt3 ; ';'-separated allowed car folders TRACK=spa ; track folder name CONFIG_TRACK= ; track layout subfolder ("" if none) MAX_CLIENTS=24 ; max drivers — MUST be <= track pit boxes PASSWORD= ; join password ("" = open) ADMIN_PASSWORD=change-this ; enables in-chat admin via /admin <password> UDP_PORT=9600 TCP_PORT=9600 HTTP_PORT=8081 ; lobby/HTTP port — must be reachable REGISTER_TO_LOBBY=1 ; 1 = list on the public lobby; 0 = private PICKUP_MODE_ENABLED=1 ; 1 = pickup (pick a car, join anytime) LOCKED_ENTRY_LIST=0 ; 1 = only GUIDs in entry_list.ini may join LOOP_MODE=1 ; 1 = loop the weekend forever
Key notes:
CARSis a whitelist, not the grid. The actual grid is defined inentry_list.ini. EveryMODELin the entry list must also appear inCARS.MAX_CLIENTSmust be less than or equal to the track's number of pit boxes. Most Kunos tracks have 24 pit boxes, so ~24 is the practical cap. Setting it higher than the track supports gives you ghost cars that never spawn — this is an engine limit, not a hosting one, and it's the reason racing grids are small.ADMIN_PASSWORDis what you type in chat as/admin <password>to get admin powers. Keep it private and different from the join password.PICKUP_MODE_ENABLEDandLOCKED_ENTRY_LISTtogether decide how leagues lock a grid — see the Booking vs pickup section below.
Race framing and results
RACE_OVER_TIME=180 ; seconds after the LEADER finishes before the race force-ends RESULT_SCREEN_TIME=60 ; seconds of results screen between sessions START_RULE=1 ; 0 = locked to grid, 1 = teleport jump-start fix, 2 = drive-through REVERSED_GRID_RACE_POSITIONS=0 ; 0 = no 2nd race; N = reverse top N; -1 = reverse all RACE_EXTRA_LAP=0 ; timed races: force one extra lap after the leader crosses
RACE_OVER_TIMEis how long backmarkers get to complete their lap after the leader takes the flag before the race is force-ended.START_RULEcontrols the start procedure:0locks cars to the grid until green,1teleports a jumped-start driver back,2gives a drive-through penalty for a jump start (on very short races this reverts to a teleport).REVERSED_GRID_RACE_POSITIONSruns an optional second race with a reversed grid from race one's finishing order. This is the correct key — you may seeRACE_GAP_ADDITIONAL_LAPSquoted elsewhere for grid reversal; that key does not exist in the Kunos server. Ignore it.
Physics and difficulty (server-enforced)
These apply to every client, regardless of their own settings — that's the point of a server.
FUEL_RATE=100 ; 0..infinity; 100 = realistic fuel burn DAMAGE_MULTIPLIER=100 ; 0 (none) .. 100 (full) TYRE_WEAR_RATE=100 ; 0..infinity; 100 = realistic wear MAX_BALLAST_KG=100 ; ceiling for per-car BALLAST set in entry_list.ini LEGAL_TYRES=SM;S;M;H ; ';'-separated allowed tyre short codes
LEGAL_TYRES is server-wide (in [SERVER]), not per-car. Per-car ballast and restrictor go in entry_list.ini — covered in running a league race weekend.
Driver assists — a three-state setting, not a checkbox
This is the one people misread. ABS_ALLOWED and TC_ALLOWED are tri-state:
ABS_ALLOWED=1 ; 0 = nobody, 1 = only factory-equipped cars, 2 = everyone TC_ALLOWED=1 ; same 0 / 1 / 2 scale STABILITY_ALLOWED=0 ; 0 = off, 1 = on AUTOCLUTCH_ALLOWED=1 ; 0 = off, 1 = on TYRE_BLANKETS_ALLOWED=1 ; 1 = tyres start at optimal temperature
ABS_ALLOWED=1 doesn't mean "on" — it means "only cars that had ABS in real life may use it". Set 2 if you want everyone to have it, 0 to ban it entirely. TC_ALLOWED works the same way. The others are plain on/off.
Penalties and cut detection — read this carefully
Here's the correction that separates a real guide from a copy-paste one: there is no PENALTIES=1 master switch in the Kunos server. That's a Content Manager UI toggle, not a real config key. The actual cut and penalty controls in [SERVER] are:
RACE_GAS_PENALTY_DISABLED=0 ; 0 = cutting triggers the "lift the gas" penalty; 1 = only logged ALLOWED_TYRES_OUT=2 ; wheels allowed off-track before it's a cut; -1 disables cut detection MAX_CONTACTS_PER_KM=-1 ; -1 = off; N = auto-kick after N contacts per km KICK_QUORUM=85 ; % of players needed to pass a kick vote VOTING_QUORUM=80 ; % needed to pass a session-restart vote BLACKLIST_MODE=1 ; how bans are handled after a kick
You will also not find keys like PENALTIES, JUMP_START_PENALTY, ANTI_CUTTING_ENABLED or MANDATORY_PIT in the Kunos file — they don't exist. Serious league penalty enforcement (track-limit strikes, stop-and-go, minimum pit time, driver swaps) is done with a plugin — KissMyRank or Real Penalty — not server_cfg.ini. Our racing servers ship KissMyRank built in for exactly this reason.
Mandatory pit stop
RACE_PIT_WINDOW_START=25 ; window opens (lap number for lap races, minute for timed) RACE_PIT_WINDOW_END=35 ; window closes
A stop only counts if the driver pits and stops in their box inside this window. Base Assetto Corsa enforces "must pit in the window" but not what the stop does (tyre change, minimum time) — that's plugin territory again.


