Stage 1: one event, one queue
Every Pack starts with a pack.toml. Here’s the smallest useful one — a
single say event on a single chat queue:
manifest = 1id = "org.mobrule.doom"name = "Doom Chaos"version = "0.1.0"mpp = "1"authors = ["you"]
[adapter]command = "python3"args = ["-u", "adapter.py"]restart = "on_crash"[adapter.env]DOOM_RCON_HOST = "127.0.0.1"DOOM_RCON_PORT = "10666"
[queues.chat]ready_after = "applied"
[events.say]title = "Say in game chat"summary = "Broadcast a viewer message into the game's chat."queue = "chat"[events.say.params_schema]type = "object"additionalProperties = falserequired = ["message"][events.say.params_schema.properties.message]type = "string"minLength = 1maxLength = 140"x-mobrule-viewer-override" = trueThree things worth noticing:
[adapter.env]carries the RCON address but not the password. Manifest contents are hashed and visible; the adapter readsDOOM_RCON_PASSWORDfrom the environment the bridge was launched from."x-mobrule-viewer-override" = trueonmessagemeans the viewer types the text — the platform validates it against the schema (1–140 chars) before an Invocation is ever produced.ready_after = "applied"is the default queue policy; we declare it explicitly because stage 3 will contrast it with"done".
The manifest declares what viewers can trigger. Next: how the adapter actually reaches into the game.
See also
Section titled “See also”- Manifest reference — the full TOML surface.
- Defining Events — params schemas and viewer overrides.