> For the complete documentation index, see [llms.txt](https://conboi.gitbook.io/oms-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://conboi.gitbook.io/oms-wiki/developer-guide.md).

# Developer Guide

This section describes the architecture of OMS and explains how to build custom addons and features using the OMS API.

OMS is built around a **feature-driven runtime**, where:

* addons register features
* features define behavior
* OMS coordinates execution

***

### Core Concepts

OMS is structured around the following layers:

* **Addon System** - modular containers that register features
* **Feature System** - runtime logic units
* **Feature Manager** - coordinates lifecycle and execution
* **Event System** - lifecycle and action-based communication
* **Config & Command API** - supporting infrastructure

***

### Architecture Overview

High-level flow:

1. Addon is registered
2. Addon registers features to its `FeatureManager`
3. Features listen to lifecycle events
4. Features may trigger action events
5. OMS processes the action and executes the corresponding flow

***

### API Structure

OMS API is organized into three areas:

#### Core Architecture

Defines how the system works.

* [Addon System](/oms-wiki/developer-guide/core-architecture/addon-system.md)
* [Feature System](/oms-wiki/developer-guide/core-architecture/feature-system.md)
* [Feature Manager](/oms-wiki/developer-guide/core-architecture/feature-manager.md)
* [Events](/oms-wiki/developer-guide/core-architecture/events.md)

***

#### Runtime Infrastructure

Defines supporting systems used by features.

* [Config System](/oms-wiki/developer-guide/runtime-infrastructure/config-system.md)
* [Commands](/oms-wiki/developer-guide/runtime-infrastructure/commands.md)
* [Runtime Fields](/oms-wiki/developer-guide/runtime-infrastructure/runtime-fields.md)
* [Stop Reasons](/oms-wiki/developer-guide/runtime-infrastructure/stop-reasons.md)
* [File System](/oms-wiki/developer-guide/runtime-infrastructure/file-system.md)
* [Info System](/oms-wiki/developer-guide/runtime-infrastructure/info-system.md)

***

#### Implementation Guides

Provides practical usage examples.

* [Creating an Addon](/oms-wiki/developer-guide/implementation-guides/creating-an-addon.md)
* [Creating a Feature](/oms-wiki/developer-guide/implementation-guides/creating-a-feature.md)
* [Registering Feature Commands](/oms-wiki/developer-guide/implementation-guides/registering-feature-commands.md)
* [Working with Config](/oms-wiki/developer-guide/implementation-guides/working-with-config.md)
* [Triggering Stop Actions](/oms-wiki/developer-guide/implementation-guides/triggering-stop-actions.md)
* [Using External Event Listeners](/oms-wiki/developer-guide/implementation-guides/using-external-event-listeners.md)
* [Using Runtime Fields](/oms-wiki/developer-guide/implementation-guides/using-runtime-fields.md)
* [Customizing Addon Context](/oms-wiki/developer-guide/implementation-guides/customizing-addon-context.md)

***

### Notes

* OMS is **feature-centric**, not addon-centric
* Addons group features, but do not execute logic
* Runtime behavior is driven by features and events
