Mother DocsMother Docs
Buy me a Coffee
Steam Workshop
Discord
  • Mother OS (Ingame Script)
  • Mother GUI
  • Mother Autopilot System (MAPS)
  • Mother Core (Script Framework)
  • Cheatsheet
  • Brand Guidelines
Buy me a Coffee
Steam Workshop
Discord
  • Mother OS (Ingame Script)
  • Mother GUI
  • Mother Autopilot System (MAPS)
  • Mother Core (Script Framework)
  • Cheatsheet
  • Brand Guidelines
  • Cheatsheet
  • Mother OS (Ingame Script)
    • Getting Started

      • Upgrade Guide
      • Installation
      • Command Line Interface (CLI)
      • Configuration
      • Modules
    • Core Modules

      • Activity Monitor
      • Almanac
      • Block Catalogue
      • Intergrid Message Service
      • Local Storage
      • Merge Block Module
    • Extension Modules

      • Air Vent Module
      • Battery Module
      • Terminal Block Module
      • Cockpit Module
      • Connector Module
      • Display Module
      • Door Module
      • Gas Tank Module
      • Hinge Module
      • Landing Gear Module
      • Light Module
      • Piston Module
      • Programmable Block Module
      • Rotor Module
      • Screen Module
      • Sensor Module
      • Sorter Module
      • Sound Block Module
      • Thruster Module
      • Timer Block Module
      • Wheel Module
    • Compatibility
    • Examples
  • Mother GUI
    • Getting Started

      • Installation
      • Configuration
    • Commands
    • Menus
    • Views
  • Mother Autopilot System (MAPS)
    • Getting Started

      • Upgrade Guide
      • Installation
    • Modules

      • Flight Planning Module
      • Map Module
      • Flight Control Module
      • Attitude Module
      • Docking Module
  • Mother Core (Script Framework)
    • Getting Started

      • Upgrade Guide
      • Installation
      • Architecture Overview
      • Managing Script Size & Complexity
    • Building A Module
    • Mother CLI (Console)
    • Core Modules
      • Activity Monitor
      • Almanac
      • Block Catalogue
      • Clock
      • Command Bus
      • Configuration
      • Event Bus
      • Intergrid Message Service
      • Local Storage
      • Log
      • Terminal
    • Utilities

      • Color Helper
      • Number Helper
      • Security
      • Serializer
    • Tutorials
  • Powered By Mother
  • Brand Guidelines

Configuration

  • Reading Values
  • Accessing the Raw MyIni
  • Variables
  • Config Commands with Parameters
  • Reacting to Live Config Changes
  • Emitted Events

Configuration reads the programmable block Custom Data into MyIni, loads runtime variables, registers config commands, and keeps those values hot-reloadable while Mother is running.

For block-level Custom Data, see Block Catalogue.

Reading Values

Get() uses section.key syntax and always returns a string, so parse booleans and numbers yourself.

Programmable Block > Custom Data
[general]
debug=true
name="Corvette Control"

TelemetryModule.cs
Configuration config = GetModule<Configuration>();

bool debugMode = config.Get("general.debug").ToLower() == "true";
string systemName = config.Get("general.name");

Accessing the Raw MyIni

Use Raw when you need the underlying MyIni API directly.

CommsModule.cs
Configuration config = GetModule<Configuration>();
List<MyIniKey> keys = new List<MyIniKey>();

config.Raw.GetKeys("channels", keys);

foreach (var key in keys)
	Mother.Print($"Channel: {key.Name}");

Variables

Variables are loaded from [variables] and can be referenced in config commands with $NAME.

Programmable Block > Custom Data
[variables]
DOCK_NAME="Port A"
CRUISE_SPEED=85

You can also update a variable at runtime.

FlightModule.cs
GetModule<Configuration>().SetVariable("CRUISE_SPEED", "100", true);

When save is true, the new value is also written back to programmable block Custom Data.

Config Commands with Parameters

Config commands are defined in [commands]. Mother stores them as raw templates, then resolves {{param}} or {{param:default}} placeholders from --option=value arguments when the command is executed.

Programmable Block > Custom Data
[commands]
approach=autopilot/goto {{target}} --speed={{speed:$CRUISE_SPEED}}
Programmable Block Terminal
approach --target="GPS:Home:123:456:789:" --speed=60

If --speed is omitted, the command falls back to $CRUISE_SPEED.

Reacting to Live Config Changes

When the programmable block Custom Data changes during runtime, BlockCatalogue emits SystemConfigChangedEvent, and Configuration reloads itself automatically. Your own modules can subscribe too.

TelemetryModule.cs
public override void Boot()
{
	Subscribe<SystemConfigChangedEvent>();
	ApplySettings();
}

public override void HandleEvent(IEvent e, object eventData)
{
	if (e is SystemConfigChangedEvent)
		ApplySettings();
}

void ApplySettings()
{
	bool debugMode = GetModule<Configuration>().Get("general.debug").ToLower() == "true";
	Mother.Print($"Debug mode: {debugMode}");
}

Emitted Events

Configuration does not emit any built-in events.

Last Updated: 5/2/26, 10:05 PM
Contributors: Luke Morrison, lukejamesmorrison, Copilot
Prev
Command Bus
Next
Event Bus