Core concepts
- Action: A unit of behavior provided by a plugin that can be assigned to a key or dial. Defined in the manifest in the form
core.*/integration.*/plugin.<pluginId>.<actionId>. - Binding: The concrete instance of an action on a specific key/dial. When the user assigns an action to a key, a binding is created.
bindingInstanceId: The context identity of a single binding instance. Image/settings calls are made with this context and are valid only for that instance; it becomes invalid afteraction.willDisappear.- Context: The binding information an event belongs to; carries
actionIdandbindingInstanceId. - Provider: A stable identity stating which source a binding comes from (
{kind:'plugin', pluginId, actionId}). In profile persistence the provider is authoritative instead of the title/path.
Security and authorization
- Capability: A host-controlled permission a plugin can request (e.g.
key.display,network.fetch,secret.manage). A call that is not declared and granted returnsCAPABILITY_DENIED. See Capability APIs. - Trust tier: The runtime and trust boundary of a plugin — T0 (data-only
.evoxpack), T1 (trusted local Node), T2 (default-deny sandbox Worker), T3 (special review). See Trust tiers. - Host: The trusted party that establishes the plugin session, assigns identity/capabilities/limits and validates all RPCs. It performs the handshake with
host.hello. - Credential reference: An opaque reference used instead of a raw token (
{kind:'secret',name}or{kind:'oauth',provider}). The host decrypts the value from its own encrypted vault; the raw token never returns to the plugin.
Packages and data
.evoxpack: evoX’s canonical local/Market package format.action_pack: A package type that carries only data; it contains no executable JS/native/script.- Manifest: The
manifest.jsonthat defines a plugin (identity, runtime, actions, capability requests). See Plugin manifest. - Settings: Persistent setting data belonging to a binding (or plugin-wide). Managed with
settings.get/settings.patch; when the user changes a setting in the interface it is reported withaction.settingsChanged, and the plugin’s own write is not echoed back to it. - Storage: A plugin-private key-value store with a bounded quota (
storage.privatecapability).
App and device
- Profile: The canonical EvoxProfile manifest that holds the user’s key/page layout. Assignments persist to the real profile.
- Page: A key layout layer inside a profile.
- Device: The connected physical hardware. Reported with
device.connected/device.disconnectedevents. - Key / dial (knob): The pressable key and rotatable/pressable dial control on the device; they produce the
action.keyDown/keyUpandaction.dialDown/dialUp/dialRotateevents. - Market: The catalog that shows only approved evoX-native products. Public web upload/moderation carries no authority; the API remains server-authoritative.
