Auto Tournament

Configuration

readyup.cfg, plugin settings, the mode configs, data files and environment variables.

In development

Ready Up is not released yet. Keys can still change.

Ready Up reads these files:

FileWhereUsed for
readyup.cfggame/csgo/readyup/bin/linuxsteamrt64/Core settings, match settings, and one [section] per plugin.
cfg/ReadyUp/<plugin>.cfggame/csgo/cfg/ReadyUp/Optional. Settings for one plugin, for example match.cfg, practice.cfg, midas.cfg or fleet.cfg.
cfg/ReadyUp/*.cfg (mode configs)game/csgo/cfg/ReadyUp/Server settings for each mode (warmup, knife, live, practice).

Settings for Auto Tournament (token, webhook URL, heartbeat URL) are console commands, not keys in a file. See Commands. Ready Up saves them for you.

readyup.cfg

The file sits next to the core, libserver.so. The installer creates it from readyup.cfg.example only if it is missing, so your changes survive updates.

The format is one key=value per line. Lines that start with # or // are comments. Quote a value that has spaces. Booleans take 0/1 (also n/y, f/t). Unknown keys are ignored.

game/csgo/readyup/bin/linuxsteamrt64/readyup.cfg
debug=0
banner=1
chat_prefix=<DarkRed>[Ready Up]<Default>

welcome=1
ready_hud=1
hud_brand="Auto Tournament"

[fleet]
url=https://tournament.example.com
enroll_key=rfk_...

Where each key is read

  • Core keys must be above the first [section] line. The core stops reading at the first section.
  • Match keys can be at the top of the file (where they have always been), in a [match] section, or in game/csgo/cfg/ReadyUp/match.cfg. When a key is set in more than one place, the later one in that list wins.
  • Other plugins read their [<plugin>] section, for example [fleet], [practice] or [midas]. The file game/csgo/cfg/ReadyUp/<plugin>.cfg wins over the section. In that file, keys can be at the top or in the [<plugin>] section.

Reloading

  • ru reload in the console, or .ru reload in chat as an admin, reloads the core keys. Plugins read their own settings again too.
  • The match plugin checks its files once a second and reloads by itself when one changes. The Midas plugin reads its settings every 5 seconds.
  • The fleet plugin reads its settings when it loads. Use ru plugin reload fleet after a change.
  • The status_http_* keys are read once at start. Restart the server to change them.

Core keys

KeyDefaultWhat it does
debug0Verbose logging in the server console.
chat_debug0Also send debug lines to chat. Only works with debug=1.
banner1Print the Ready Up banner to the console at start.
chat_prefix<DarkRed>[Ready Up]<Default>Prefix of Ready Up's chat messages. Ready Up adds one space after it.
consume_ru_chat0Hide .ru ... messages from chat after Ready Up handles them. To keep admin commands out of chat, admins can also type ru ... in their own game console.
rulesetdefaultvalve runs loaded matches under Valve's tournament rules. A match config's ruleset wins. See Esports mode.
perf_warn_ms8Log a server frame in which plugins took longer than this, with the slowest plugin calls. At most one line every 10 seconds. See ru perf.
perf_gap_warn_ms250Log a frame that came this long after the previous one. 0 turns these lines off.

Status endpoint

The core serves a small read-only HTTP endpoint for monitoring tools. See Status endpoint.

KeyDefaultWhat it does
status_http_enabled1Turn the endpoint on or off.
status_http_bind127.0.0.1Address to listen on.
status_http_port0Port. 0 means the game port + 7, for example 27022 for 27015.
status_http_tokenemptyToken for requests that do not come from the same machine. Empty means Ready Up generates one on first start and keeps it in status.json.
status_http_metrics0Turn on /metrics (Prometheus text).

If you bind to anything other than a loopback address, a token of at least 16 characters is required. Without one, the endpoint does not start.

Chat colors

chat_prefix, admin_prefix and the captain prefixes take color tokens: <Default>, <White>, <DarkRed>, <Green>, <LightYellow>, <LightBlue>, <Olive>, <Lime>, <Red>, <LightPurple>, <Purple>, <Grey>, <Yellow>, <Gold>, <Silver>, <Blue>, <DarkBlue>, <BlueGrey>, <Magenta>, <LightRed>, <Orange>.

chat_prefix="<Green>[PUG #1]<Default>"

Match keys

Read by the match plugin (match.so). See Where each key is read.

Chat

KeyDefaultWhat it does
admin_prefix<DarkRed>[Admin]<Default>Prefix shown in front of an admin's name in chat.
captain_prefix_team1<LightBlue>[CAP]<Default>Prefix for the team 1 captain from the match config.
captain_prefix_team2<Orange>[CAP]<Default>Prefix for the team 2 captain.
consume_ready_chat0Hide .r, .ur and the other ready messages from chat.

Welcome screen and HUD

KeyDefaultWhat it does
welcome1Show a welcome card to a player the first time they join CT or T on a map, once they have spawned. Only that player sees it, for about 5 seconds. It shows the header, the build, the player's name and team, and the mode.
ready_hud1Show each player the ready panel during warmup, the knife round and the side pick. See The ready HUD.
hud_brandAuto TournamentText in the header of the welcome card and the ready panel.
hud_logo_urlemptyURL of a PNG shown in front of hud_brand. Empty means no image.
hud_knife_hold_s30Seconds the KNIFE ROUND panel stays up after the knife round starts. 0 to 300.
hud_tick_ms0How often the ready panel is rebuilt, in milliseconds. 0 means every frame.
hud_resend_ms0Minimum time between two sends of the same panel to a player, in milliseconds. 0 means every frame.
hud_duration_s1How long each send stays up, in seconds. 1 to 10.

Keep the three timing keys (hud_tick_ms, hud_resend_ms, hud_duration_s) at their defaults. CS2 replays the panel's open animation on every send, and only a resend every frame gives a steady panel. Slower values make it blink.

The logo must be a public PNG, already scaled to the size you want. SVG does not work, and the client ignores width and height. An image in a panel that is resent every frame flashes. The CS2 client only renders a small part of HTML. Admins can test what works in game with .ru hud test 1 to .ru hud test 7. 8 to 11 measure the panel: rows, width and image sizes. .ru hud anim measures how fast the client redraws it.

Each player has one panel in the middle of the screen. When two things want it at once, the more urgent one wins: the map change card and the Workshop download bar, then the welcome card and test panels, then the ready panel.

With ready_hud=0 the panel is off and the chat reminders come back. Ready-up still works.

Warmup and scrims

KeyDefaultWhat it does
scrim_knife1In a scrim, play a knife round after everyone is ready. 0 goes straight to live.
knife_pick_seconds60Seconds the knife winners have to pick a side in a scrim. Matches use knifeDecisionSeconds from the match config.
warmup_money1In scrim and match warmup, top every player's money back up to $16000 after each purchase, like CS2's own warmup.
warmup_weapon_cleanup1In idle, scrim and match warmup, remove a weapon that has lain on the ground for 2 seconds, including a dropped bomb.
damage_report1After each round of a live map, send each player their damage to and from each opponent, only to them. Never under ruleset=valve.
idle_map_refresh_hours12Load the same map again after this many hours with no match loaded and nobody connected. 0 turns it off.

In warmup, nothing drops when a player dies, and there is no bomb. Ready Up sets this itself, also when ru_cfg_exec_enable is 0. Going live puts CS2's defaults back.

After a day or more on one map, player animations in CS2 run in slow motion while the tick rate stays fine. A map load fixes it. That is why idle_map_refresh_hours exists, and why loading a match always changes map, even onto the map the server is already on.

Pauses, ready and forfeit

These are the values for scrims, and the fallback for matches whose config leaves a rule out. A match config can set each one with a key of the same name. See Match rules.

KeyDefaultWhat it does
max_tech_pauses_per_team3Technical pauses per team per map. 0 means no limit.
tech_pause_max_seconds300A technical pause ends by itself after this many seconds. 0 means no limit.
both_teams_unpause_required11: both teams must type .unpause. 0: the team that paused is enough.
allow_force_ready1Allow .forceready.
min_players_to_ready0Players of a team that must be connected before .forceready works. 0 means the full roster.
forfeit_after_seconds240A team with nobody connected on a live map for this long forfeits. 0 turns it off.
gg_enabled0Make .gg a surrender vote. See Give up.
gg_threshold0.8Share of the team's connected players that must type .gg within 60 seconds. 0.8 and 80 both work.
gg_min_score_diff8The team must trail by at least this many rounds to surrender.
stop_command_available0Allow .stop: go back to the start of the current round when both teams agree.
stop_command_no_damage0Only allow .stop while no player has damaged an opponent this round.
stop_vote_seconds30Time the other team has to agree to a .stop.

Tactical timeouts (.tac) use CS2's own timeouts. Their number and length are mp_team_timeout_max and mp_team_timeout_time, set in live.cfg or the match cvars.

Esports mode

KeyDefaultWhat it does
default_model_ctagents/models/ctm_sas/ctm_sas.vmdlThe CT model for the default_models override.
default_model_tagents/models/tm_phoenix/tm_phoenix.vmdlThe T model for the default_models override.

The ruleset key itself is a core key. See Esports mode.

Testing only

Never turn these on for a real match. Ready Up logs a warning each time one turns on.

KeyDefaultWhat it does
dev_bots_ready0Bots on CT and T count as players and are always ready. One person can test ready-up and pauses with bots.
dev_bots_scrim0A scrim starts and runs with only bots on CT and T: warmup, countdown, knife round, live. Also ru_dev_bots_scrim 0|1|cfg in the console.

With either flag on and no human on CT or T, the knife round lasts 30 seconds, because bots do not knife each other.

Plugin settings

The practice and Midas settings are on Plugins. The whitelist has no settings file. Use ru whitelist in the console.

Fleet keys

Read by the fleet plugin (fleet.so) from the [fleet] section, or from game/csgo/cfg/ReadyUp/fleet.cfg. The fleet package installs a fleet.cfg with every line commented out, so the plugin stays idle until you set url. The same names with a fleet_ prefix (fleet_url, fleet_enroll_code, ...) also work. See Fleet mode.

KeyDefaultWhat it does
urlemptyBase URL of the Auto Tournament platform. Empty, and no saved credentials, means standalone: the plugin loads and stays idle.
enroll_codeemptyOne-time enrollment code from the platform.
enroll_keyemptyReusable fleet enrollment key (rfk_...), for scripted installs.
enabled10 turns the plugin off without removing it.
offline_pause_minutes3Pause a live match after this many minutes without the platform. 0 turns it off.
ca_fileemptyCA bundle for a platform with a private certificate authority.
pin_sha256emptyOptional pin of the platform's public key.
insecure_dev0Allow ws:// and http://, only to a loopback or private (RFC 1918) address. For development.
spool_max_msgs50000Most messages kept on disk while offline.
spool_max_mb64Most megabytes kept on disk while offline.

Mode configs

cfg/ReadyUp/*.cfg are normal CS2 config files with server settings for each mode. The packages have them in readyup/cfg-templates/ReadyUp/. The installer copies missing ones to game/csgo/cfg/ReadyUp/. Edit the copies there.

FileRuns when
warmup.cfgWarmup rules apply (scrim or match warmup).
idle.cfgThe server goes idle, or practice ends. It runs warmup.cfg.
knife.cfgThe knife round starts.
live.cfgThe match goes live.
live_override.cfgAt the end of live.cfg. Put your own changes here.
esports_live.cfgThe match goes live under ruleset=valve, instead of live.cfg. See Esports mode.
esports_override.cfgAt the end of esports_live.cfg. Put your own changes here.
prac.cfgPractice mode starts. It keeps the bomb, for plant practice.

The same folder holds the plugin settings files practice.cfg, midas.cfg and fleet.cfg. Those are Ready Up settings, not CS2 configs.

live.cfg, knife.cfg and prac.cfg start from the MatchZy defaults.

Two rules for warmup.cfg:

  • Do not add mp_warmup_start. Ready Up does not use CS2's own warmup, because its WARMUP text covers the ready panel. Ready Up makes its own warmup instead: players respawn, rounds do not end, you can buy anywhere, nothing drops on death, and there is no bomb.
  • It sets sv_hibernate_when_empty 0. Keep that. A hibernating server runs no frames, and Ready Up does its work in frames.

When the files run

By default Ready Up runs:

  • knife.cfg for the knife round,
  • live.cfg when a scrim goes live, and after the knife side pick,
  • prac.cfg when practice turns on, and idle.cfg when it turns off,
  • esports_live.cfg instead of live.cfg under ruleset=valve, always.

For warmup, it sets the warmup settings itself. A match without a knife round goes live with its own settings, without live.cfg.

The cvars of a loaded match are applied after live.cfg, so they always win over it.

To run the mode files on every mode change, as MatchZy does, turn on cfg exec in the console:

ru_cfg_exec_enable 1

The built-in warmup settings can be changed with the ru_warmup_* console commands. See Commands.

Data files

Ready Up has no database. Each plugin keeps its state in small JSON files in its data folder, game/csgo/readyup/plugins/<plugin>/. Every file has a "version", is replaced in one step (a temp file, then a rename), and is never in a release zip, so updates keep it.

A file that is broken, or from a newer version, is moved to <name>.corrupt-<time>. Ready Up logs it and starts that part fresh.

FileWhat it holdsWritten by
match/state.jsonSaved console settings (ru_webhook_url, ru_match_token, ru_warmup_*, ru_demo_* and others, see Settings that survive a restart) and the running match, for recovery after a crash.The match plugin.
essentials/admins.jsonAdmins. See Who is an admin.ru admins add and remove, or you.
match/fleet-admins.jsonFleet mode: a copy of the platform's admin list.The match plugin.
whitelist/whitelist.jsonThe whitelist and whether it is on.ru whitelist.
skins/loadouts.jsonSkins loadouts, when not in fleet mode. See Skins.You, or a web tool.
skins/stattrak.jsonStatTrak counters, when not in fleet mode.The skins plugin.
fleet/install_id, fleet/credentials.jsonThe server's identity and platform token. credentials.json is only readable by its owner.The fleet plugin.
fleet/spool/Messages waiting to be sent to the platform.The fleet plugin.
plugins.jsonThe plugins turned off with ru plugin disable. Directly in plugins/, not in a plugin's folder.The core.

Delete match/state.json to forget saved settings and a half-finished match.

Environment variables

Set these before the server starts.

VariableWhat it does
READYUP_DEBUGOverrides debug.
READYUP_BANNEROverrides banner.
READYUP_CHAT_DEBUGOverrides chat_debug.
READYUP_DEV_BOTS_READYOverrides dev_bots_ready.
READYUP_DEV_BOTS_SCRIMOverrides dev_bots_scrim.
READYUP_WELCOME=0Turns the welcome card off.
READYUP_DISABLE_SKINS=1Keeps the skins plugin loaded, but idle.
READYUP_STATUS_HTTP=0Turns the status endpoint off.
READYUP_STATUS_HTTP_PORTPort of the status endpoint.
READYUP_CRASH_HANDLER=0Turns the crash handler off.
READYUP_REAL_SERVER_PATHPath to Valve's libserver.so, if it is not in the usual place.
READYUP_PLUGINS=0Loads no plugins.
READYUP_PLUGINS_DIRLoads plugins from another folder. Used by tests.
READYUP_SELFTEST_AND_QUIT=1Runs the selftest after the first map and quits. For CI. See Troubleshooting.

On this page