Docs

Overview

Bring new devices and services onto the hub with a sandboxed community integration.

A community integration is one JavaScript bundle plus a manifest.json, built with @novon/integration-sdk. Novon's registry signs it, a household installs it from the app, and the hub runs it inside a sandbox with a small, permissioned API. Its entities are real Novon entities: they appear on dashboards, in scenes, in Flows and in smart apps exactly like a first-party switch, light or sensor.

Where a smart app reacts to entities, an integration owns them: it talks to the device or cloud service, publishes entities, keeps their state current, and handles the service calls aimed at them.

What you write

my-thing/
  manifest.json      identity, permissions, platforms, the install form
  src/index.ts       the code — calls novon.defineIntegration({...})
  dist/              build output (never edit)
  • Manifest: domain (x_<vendor>_<name>), version, catalog copy, iotClass, the entity platforms you will create, the permissions you need (http, kv, timers), and the install wizard (configFlow). See Manifest.
  • Code: a definition with setupEntry (required) and optional unloadEntry, handleService, optionsUpdated. The hub injects a single novon global. See Lifecycle.

Where it runs

Each config entry (one configured instance of your integration) gets its own isolate with novon.entities, novon.http, novon.kv, timers and console, within fixed limits. Exceeding the heap or CPU budget stops that entry and marks it failed; the rest of the hub is unaffected.

On this page