Reflex configuration consists of up to two layers organized in a top-down
hierarchy, where higher layers overlay and modify lower layers when their
content intersects. If a configuration key is set to null, Reflex removes
the corresponding entry. Otherwise, the value overrides any previous value
or creates a new entry if none exists:
[
"<existing-runner-id>" => null, // reset
"<new-runner-id>" => "<any>", // set
"<other-existing-runner-id>" => [ // override
"<existing-key>" => null, // reset
"<other-existing-key>" => "<any>", // override
"<new-key>" => "<any>" // set
]
]
Note
To keep configurations simple, merging is limited to two levels. Deeper nested arrays are not merged and will fully replace the previous value.
Runtime Arguments Layer
The runtime layer overlays the persisted layer and is built from arguments
passed to Reflex at execution time. The CLI parser reads arguments as
key–value pairs joined by = and separated by whitespace. To target
nested configuration keys, use . as a separator:
<key0>=<value0>: Top-level config value<key1>.<key2>=<value1>: Nested config value
Parsed config schema:
[
"<key0>" => "<value0>",
"<key1>" => [
"<key2>" => "<value1>"
]
]
Persisted Files Layer
The persisted layer includes configuration that Reflex loads through the virtual configuration path (mapped extension). In most cases, this is a single file, as shown in the example installation, which returns a config array. If you map a directory containing multiple files, Reflex loads them in ascending alphabetical order and merges them into a single configuration by key, for example:
configs/reflex: Mapped directorydevelopment.php: Loaded firstlocal.php: Overlays first