Mod manifest (manifest.json)

Every mod must include a manifest.json file in its root directory. The manifest defines mod metadata, dependencies, and loading behavior.

A JSON schema file (manifest.schema.json) is included in the ExampleMod project for IDE IntelliSense support.

Required fields

Field Type Description
id string Unique mod identifier. Must match [a-zA-Z0-9][a-zA-Z0-9_-]*. Must not start with COI- (reserved for official content).
version string Mod version (e.g. 0.0.1, 1.2.3a). Follows the pattern major.minor[.patch[letter]].
primary_dlls string[] List of DLL file names to load (DLLs will be loaded in the provided order). All loaded DLLs must be located in the mod's directory.

Optional fields

Field Type Description
display_name string Human-readable name shown in UI (max 50 characters).
description_short string Short description (max 180 characters).
description_long string Detailed description shown in mod details.
authors string or string[] Author name or array of author names.
min_game_version string Minimum compatible game version (e.g. 0.8.0).
max_verified_game_version string Highest game version the mod has been tested with.
links string[] Web links (GitHub, YouTube, etc.).
mod_dependencies string[] Required mod IDs. Supports version constraints (e.g. OtherMod >= 1.0.0).
optional_mod_dependencies string[] Optional mod IDs with same version constraint syntax.
incompatible_mods string[] Mod IDs that cannot be loaded together with this mod.
non_locking_dll_load bool If true, DLLs are loaded into memory instead of locked on disk. Allows updating files without closing the game.
can_add_to_saved_game bool If true, the mod can be added to an existing save.
can_remove_from_saved_game bool If true, the mod can be removed from an existing save.
primary_mod_class_name string Class name to use when multiple IMod implementations are found in the loaded DLLs.

Example manifest

{
  "id": "ExampleMod",
  "version": "0.0.1",
  "display_name": "Example Mod",
  "description_short": "A simple example mod for Captain of Industry.",
  "authors": "Your Name",
  "primary_dlls": ["ExampleMod.dll"],
  "non_locking_dll_load": true
}

Dependencies

Mods are loaded in dependency order (topologically sorted). If your mod depends on another mod, declare it in mod_dependencies:

{
  "mod_dependencies": ["SomeLibraryMod", "AnotherMod >= 2.0.0"]
}

Dependencies with version constraints use the >= syntax (e.g. ModId >= 1.0.0). Spaces around >= are recommended for readability. All mandatory dependencies must be present and loaded, or the game will report an error. Optional dependencies (optional_mod_dependencies) are loaded first if available but do not cause errors if missing.