manifest.json

The manifest describes the addon identity, category, permissions, and optional web UI.

Example

{
  "name": {
    "en": "My Addon",
    "ru": "Мой аддон",
    "uk": "Мій аддон"
  },
  "description": {
    "en": "Short description for the settings UI.",
    "ru": "Краткое описание для настроек.",
    "uk": "Короткий опис для налаштувань."
  },
  "id": "MyOrg/my-stream-addon",
  "type": "platform.streaming",
  "version": "1.0.0",
  "author": "Your Name",
  "icon": "logo.png",
  "permissions": ["NETWORK_REQUEST", "WEB_END_POINTS"]
}

Required fields

Field Type Description
id string Stable addon identifier tied to your GitHub repository (ORG/REPO). Used in URLs, depends_on, and install records
name { en, ru?, uk? } Display name in settings
description { en, ru?, uk? } Short description in settings
type string Addon category (see Addon categories)
version string Semantic version string
permissions string[] Capability flags (see Permissions)

The id must be unique among installed addons. It is used in URLs (/addon/{id}/…, /addon_static/{id}/…) and does not have to match the folder name on disk.

Set id to ORG/REPO — the GitHub owner (organization or user) and repository name. Example: repository https://github.com/MyOrg/my-stream-addon"id": "MyOrg/my-stream-addon". See Publishing and releases for release layout and update checks.

Optional fields

Field Type Description
author string Author name
icon string Icon filename in the addon folder
depends_on string[] Addon ids that must be installed and enabled before this addon can be enabled. Install without activation is always allowed.
platform string | string[] Restrict install to OS: win32, darwin, linux. Omitted = all platforms.
app_version string Minimum StreamKit+ version required (major.minor.patch, e.g. 1.0.0). Omitted = any app version. Install and update are blocked when the running app is older.
web string Local HTML filename or external http(s) URL
web_type "overlay" | "widget" | "application" Required when web is set; must match type rules below
web_contents string[] Additional static files served with the page
overlay object Simple media overlay: audio / video file paths (no worker required)

web and web_type rules

type Required web_type
overlay overlay
widget widget
application application

With WEB_CONTENT permission, static files are served at /addon_static/{id}/.

Addon categories

type Purpose
platform.streaming Streaming platform integration (chat, events, live status)
platform.donation Donation platform integration
overlay Triggered overlay effects
overlay.info Info panel shown with overlay effects
widget Persistent web widget (OBS browser source, overlay embed)
application Standalone in-app window
game Game integration (in-game effects from stream events)

See category docs: Platform, Overlay, Widget, Application, Game.

Permissions in the manifest

List every capability your addon needs. The user approves them at install time. ROOT grants all checks but should not be used in production addons.

Permission display names in the app UI use keys settings.addons.permission.{PERMISSION_NAME} in the app's language files — that is an app concern, not something addon authors ship.

Worker vs workerless

Pattern Needs index.js Typical permissions
Full integration Yes As required by your logic
Static web only No WEB_CONTENT
Simple media overlay No None (media paths in overlay block)