# 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://conboi.gitbook.io/oms-wiki/developer-guide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
