Skip to content

Configuration Reference

Set MEDUSA_CONFIG as a global Lua table before loading Medusa. All fields are optional - omit any field to use its default.

MEDUSA_CONFIG = {
-- Logging
LogLevel = "INFO", -- NONE | ERROR | INFO | DEBUG | TRACE (default: INFO)
-- Group name tokens that identify special roles
Roles = {
HQ = "hq", -- Token in group name that marks a unit as HQ (default: "hq")
GCI = "gci", -- Token for GCI sites (default: "gci")
EWR = "ewr", -- Token for EWR sites (default: "ewr")
},
-- Network definitions - one IADS instance per entry
-- Each network scans for groups matching its prefix on its coalition
Networks = {
{
name = "RED", -- Network identifier (logged in output)
coalition = "red", -- "red" | "blue" | "neutral" | 1 | 2 | 0
prefix = "iads", -- Group name prefix to scan for
doctrine = "Medusa_MM_Doctrine", -- Global table name or inline table
borderZones = { "border-north", "border-south" },
-- List of ME trigger zone or drawing names
-- that define this IADS's service area boundary
-- (optional, omit for no border enforcement)
},
},
-- Track management
TrackMemorySec = 30, -- Seconds before a stale track is pruned (default: 30)
VelocityWindowSec = 60, -- EMA window for velocity smoothing (default: 60)
-- HARM detection
HarmCapableSystems = {}, -- Unit type substrings identifying HARM-capable systems
-- (default: built-in list including "Tor", "Pantsir", etc.)
-- Weapon range overrides (per unit type name)
WeaponRangeOverrides = {}, -- Override engagement ranges for specific unit types
-- e.g. { ["SA-10"] = { RangeMax = 120000 } }
-- Pipeline chunk budgets (items processed per phase tick)
ChunkBudgetTracks = 20, -- Track classification + aircraft type (default: 20)
ChunkBudgetHarm = 15, -- HARM detection (default: 15)
ChunkBudgetBatteries = 20, -- Handoff eval + deactivation checks (default: 20)
-- Dynamic unit support
AllowDynamicProbing = false, -- Probe spawned unit types not seen at mission start (default: false)
-- Caution: probing spawns and destroys temporary units at runtime.
-- In multiplayer this may cause brief freezes, stutters, or desyncs.
-- Metrics / Observability
PrometheusEnabled = false, -- Enable Prometheus metrics endpoint (default: false)
PrometheusExtendEnabled = false, -- Enable extended metrics (per-battery detail) (default: false)
}
FieldTypeDefaultDescription
AllowDynamicProbingbooleanfalseProbe unit types not seen at mission start when they spawn mid-mission. Extracts detection ranges for accurate engagement calculations. Multiplayer caution: spawns and destroys temporary units, which may cause brief freezes or desyncs.
ChunkBudgetBatteriesnumber20Items per chunk for handoff evaluation and deactivation checks. Min: 1, Max: 200
ChunkBudgetHarmnumber15Items per chunk for HARM detection. Min: 1, Max: 200
ChunkBudgetTracksnumber20Items per chunk for track classification and aircraft type assessment. Min: 1, Max: 200
HarmCapableSystemstablebuilt-in listUnit type substrings identifying HARM-capable systems
LogLevelstring"INFO"Logging verbosity: NONE, ERROR, INFO, DEBUG, TRACE
Networkstable(single RED network, prefix “iads”)Array of network definitions
Networks[].coalitionstring/numberrequiredCoalition: "red", "blue", "neutral", or 1, 2, 0
Networks[].doctrinestringnilGlobal table name for per-network doctrine
Networks[].namestringrequiredNetwork identifier for logging
Networks[].prefixstringrequiredGroup name prefix to scan for
PrometheusEnabledbooleanfalseEnable Prometheus metrics endpoint for Grafana dashboards
PrometheusExtendEnabledbooleanfalseEnable extended per-battery metrics (higher overhead)
Roles.AWACSstring"awacs"Token for AWACS aircraft
Roles.EWRstring"ewr"Token for EWR sites
Roles.GCIstring"gci"Token for GCI sites
Roles.HQstring"hq"Token in group name that marks HQ role
TrackMemorySecnumber30Seconds before a stale track is pruned
VelocityWindowSecnumber60EMA window for velocity smoothing (seconds)
WeaponRangeOverridestablenilPer-unit-type weapon range overrides