Skip to Content
Addon DevelopmentIntroduction

Introduction to M2C2 addons

An addon is a self-contained package dropped into the M2C2 addons/ directory (exact path depends on install). Each addon ships:

  • manifest.json β€” identity, permissions, entrypoints.
  • UI bundle β€” React components rendered inside AddonWidget sandboxes.
  • Optional server routes β€” registered under /api/addons/:addonId/* when allowed.
  • Optional Python service β€” long-running workers for CV / ML / device bridges.

πŸ’‘ Tip: Keep addons single-purpose β€” β€œcrypto price tile” and β€œquote of the day” are easier to test than a mega-addon that touches ten permissions.

Lifecycle

  1. Discovery β€” core scans addons/*/manifest.json at startup.
  2. Activation β€” user enables addon in Settings β†’ Addons.
  3. Render β€” dashboard mounts your widget with injected context (theme, locale, settings).
  4. Updates β€” marketplace delivers semver bundles; core migrates stored settings when manifest.migrations runs.

⚠️ Warning: Addons run with whatever permissions you declare. Request least privilege β€” reviewers and users reject overbroad * scopes.

Next

Read Addon file structure.

Last updated on

Was this helpful?