Docssdk 0.0.0Aether homeOpen Aether

Package kinds

Choose a system, module, content pack, or mod from the authority and distribution each one needs.

2 minute read

The package kind determines which contract owns the contribution. It is not only a folder name.

#System

A system defines a game's document schemas, native sheets, grid defaults, initiative expression, and automation. Exactly one system is active in a world. The system id is stored with that world, so changing the id creates a different system rather than renaming the existing one.

Systems are composed into the host application's registry. They are not dynamically imported from a world and cannot be installed from Marketplace today.

#Module and content pack

A module contributes reusable types or content. The maintained modules/worldbuilding package exports both a type taxonomy and a content pack with documents and an embedded asset.

A content pack is validated data: types, documents, assets, and references between them. Installing a pack remaps package-local ids to world ids. A pack does not run arbitrary code in the server.

First-party content packs can be distributed through Marketplace. A source package is still the maintained implementation and test surface.

#Mod

A mod is a sandboxed web application that requests named capabilities. It can contribute panels, settings, chat commands, semantic actions, scene tools, or shared scene-object presentations when the manifest declares the matching surface and the GM grants the required access.

Native panel descriptions are host-rendered data. A custom app panel runs in an iframe. Headless mods run in a hidden sandbox. All three use the same capability-gated host bridge, and network egress is denied by the default sandbox policy.

First-party mods can be installed through Marketplace. A local mod can also be built and installed from its development manifest URL.

#A practical choice

  • If it defines what a character is, use a system.
  • If it adds validated documents or assets, use a module and content pack.
  • If it reacts to events or adds interactive engine behavior, use a mod.
  • If it mutates authoritative world state in response to a game action, put the script in system automation and invoke it through a declared gesture.

Do not move trusted server authority into a mod just because TypeScript can express it. The server still validates permissions, document changes, rolls, and scene writes.

Was this page helpful?