Emrald docs
Host your projects/servers

Environment variables

Override gamemode and addon defaults to tune how your server plays.

Environment variables let you override the default values that the gamemode and your installed addons declare. They are the main knob you'll turn to make a server feel like yours — starting money, max job slots, tax rates, spawn rules, anything an addon exposes.

How variables work

Variables are declared by the gamemode or by an addon, not by you. You can't add new variable keys from the panel — you can only override values that already exist in the catalog.

Gamemode declares:  STARTING_MONEY = 250  (int, default)
Addon declares:     CUSTOM_TAX_RATE = 5   (int, default)
You override:       STARTING_MONEY = 1000 (your override)
Effective value:    STARTING_MONEY = 1000, CUSTOM_TAX_RATE = 5

Each variable carries:

FieldWhat it is
IdentThe package that declared it (e.g. emrald.darkrp, yourorg.hitman).
NameUPPER_SNAKE_CASE key (e.g. STARTING_MONEY).
Typestring, int, float, bool, json, or color.
DefaultThe value baked into the gamemode/addon code.
DescriptionPublic help text shown next to the input.
CategoryUsed to group variables in the UI (e.g. "Economy", "Jobs").

Where to set them

  1. Open your project → Environments in the left sidebar.
  2. Click the environment you want to configure.
  3. Open the Variables tab (it's the default tab on Production).

You'll see a list grouped by:

  • Origin — one section per package (gamemode + each enabled addon).
  • Category — within each origin, variables are grouped by their declared category.

Each row shows the key, type, description, the default value, and your current override (if any).

Override a value

  1. Find the variable's row.
  2. Click Edit — a modal opens with a type-aware input (text field, number stepper, toggle, color picker).
  3. Set the new value and click Save.

The override is stored against this environment only. Other environments are unaffected unless you merge changes into them.

Reset to default

To clear an override and fall back to the declared default, click the Reset button on the row (or delete the override from the edit modal). The override row is removed; the effective value reverts to what the gamemode/addon declared.

Inheritance

Variables follow the environment inheritance chain:

Development  ───►  Staging  ───►  Production  ───►  declared default
   (level 3)        (level 2)       (level 1)            (level 0)

When the game asks for a value, Emrald walks this chain and returns the first override it finds. So a setting overridden in Production and not touched in Staging will use the Production value in Staging too — until Staging sets its own override.

Warning states

The Variables tab can flag two issues on existing overrides:

BadgeMeaningWhat to do
Type changed (yellow)The gamemode/addon changed the variable's type since you set the override. The old value may not parse correctly.Re-open the row and confirm/correct the value.
Value invalid (red)The override fails validation (out of range, malformed JSON, unknown enum).Fix the value or reset to default.

These badges always show up when an addon updates and breaks compatibility with your existing overrides — you'll spot the problem immediately on next panel visit.

Live propagation

Overrides apply live. The moment you save:

  1. Emrald writes the override to the database.
  2. It pushes the change over WebSocket to every server in that environment.
  3. The game-side gamemode/addon code reloads the affected setting.

No restart needed for variables — they hot-reload everywhere.

Common gotchas

  • You can't add variables — if the setting you want doesn't exist, the gamemode or addon needs to declare it first. File an issue with the addon author.
  • json and color overrides are stored as strings. The game-side code parses them. Invalid JSON shows up as a Value invalid badge.
  • On gamemode switch, every variable override in every environment is wiped. The new gamemode declares its own catalog.

Next steps

  • Groups and Permissions — the other main configuration surface
  • Changes — see what overrides differ between environments and merge them

On this page