> 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 runtime behavior
* OMS coordinates lifecycle, events, and feature execution

***

### Core Concepts

OMS is structured around the following layers:

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

***

### Architecture Overview

High-level flow:

1. An addon is registered with OMS
2. Addon registers features to its `FeatureManager`
3. Features subscribe to lifecycle and other OMS 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 guides for implementing addons and features with the OMS API.

* [**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
