Skip to main content
Aether exposes a discoverable service registry that your extension can query and call at runtime. You can invoke built-in services such as skills directly from any extension, and — when writing a Native Mod — register higher-priority implementations that replace the defaults entirely.

API reference

Listing available services

Call services.list() to retrieve the full catalog of registered services:

Describing a service

Call services.describe() with a service ID to inspect its available methods and metadata:

Built-in services

skills service

The skills service exposes Aether’s native Skill selection state. Scope values: "current", "default" / "global", "both" / "current_and_default". Using "both" updates the current session selection and the default selection independently.

state service

The state service provides direct read and transactional write access to Aether’s application state.

Priority system

Services are priority-ordered. The active implementation for a given service ID is always the highest-priority registration. When you remove a registration, the next-highest-priority implementation becomes active. Aether’s core services intentionally use a low priority, so a Native Mod registering the same service ID at the default Native Mod priority will seamlessly override the built-in behavior.
Script Mods can call any registered service using aether.services.invoke(), but they cannot register new service implementations. To override a built-in service or add a new one, you must use a Native Mod.