Glossary
A bundle of game-specific capability declarations. Concretely: a directory
containing a pack.toml Manifest plus the Adapter binary or script.
Adapter
Section titled “Adapter”The process that translates Invocations into in-game effects. Adapters speak MPP over TCP to the bridge.
Manifest
Section titled “Manifest”The pack.toml file declaring Pack metadata, Events, queues, Pack Config
schema, and UI hints. The bridge pins a session to its manifest_hash on
connect.
A unit of Pack capability, e.g. apply_status, play_sound. Each Event
declares a JSON Schema for its parameters and the queue it dispatches through.
Reward
Section titled “Reward”A broadcaster-configured channel-point trigger: a pack Event bound to a channel-point Cue. mobrule provisions and owns the underlying Twitch Custom Channel-Point Reward one-to-one, so a Reward you create in mobrule is the channel-point reward viewers see. A Reward is durable and accrues many Redemptions over its lifetime.
Redemption
Section titled “Redemption”A single viewer use of a Reward: one Twitch channel-point
redemption event, identified by Twitch’s redemption_id. Ephemeral and
per-use. The refund path cancels a Redemption to return the viewer’s
channel points. A matched channel-point Redemption of a mobrule Reward is
what produces an Invocation.
The raw viewer signal the platform records: a Twitch channel-point redemption, a cheer of a given bits range, a subscription, and so on. Recording a Cue does not by itself run a pack. The matcher pairs a channel-point Redemption of a mobrule Reward to that Reward, which produces an Invocation. An unmatched Cue (a redemption of a non-mobrule reward) produces no Invocation.
Invocation
Section titled “Invocation”A single dispatched call into the Adapter. The platform tracks its lifecycle:
pending → dispatched → applied → done | failed | refunded.
A Pack-declared dispatch lane. Within one queue, at most one Invocation is in flight at a time; different queues dispatch independently.
Bridge
Section titled “Bridge”The mobrule process that runs on the streamer’s machine. Speaks MPP to the Adapter over TCP, loads a Pack, validates Invocations against the Manifest, and dispatches to the Adapter. It also runs a local HTTP/RPC server and serves the Overlay and other pack-shipped static assets.
Ingester
Section titled “Ingester”The cloud service that consumes Twitch EventSub events and feeds matched Redemptions to the Module.
The mobrule Pack Protocol: JSON-over-NDJSON-over-TCP wire format between bridge and Adapter.
manifest_hash
Section titled “manifest_hash”Deterministic SHA-256 of the canonicalised Manifest. Pinned at session start; mismatch on handshake closes the connection.
Module
Section titled “Module”The cloud-side SpacetimeDB module holding Rewards, bridge sessions, and Pack Config state.
Overlay
Section titled “Overlay”The Pack-shipped browser-source page served by the Bridge; subscribes to Pack state to render live in-stream UI.
Pack Config
Section titled “Pack Config”Broadcaster-wide settings the Pack exposes (cooldowns, defaults, asset paths). Declared as JSON Schema in the Manifest; values are stored by the platform per broadcaster and Pack.
Pack state
Section titled “Pack state”Runtime key-value data declared under [state.<key>] in the Manifest. Each
key declares its own writer; a key with writer = "adapter" is written by
the Adapter via state_write frames, but other writers exist (e.g. the
bridge’s own dispatcher writes some keys directly). Consumers include
overlay widgets that subscribe to the current values.