Skip to content

Manifest reference

Every module declares a module-manifest.json at its root. The platform validates it with the Zod schema in @tv/extension-sdk/manifest and the JSON Schema at manifest.schema.json.

Validate

bash
npx tv-sdk validate module-manifest.json
# exit 0 valid, 1 invalid, 2 usage error

Top-level fields

FieldRequiredDescription
$schemarecommendedURL to the versioned JSON Schema for editor validation
idyes@vendor/module-name — globally unique
nameyesHuman-readable display name
versionyesSemver of your module
minCoreVersionyesMinimum platform version, e.g. >=2.0.0
sdkVersionrecommendedSDK range you built against, e.g. ^1.0.0
categoryyescore / operations / engagement / infrastructure
buildingTypesyes["all"] or specific types like ["mall","office"]
permissionsyesWhat platform resources you read/write
eventsyespublishes + subscribes arrays
uiwhen you have UIroutes + navigation entries

Permissions

json
"permissions": [
  { "subject": "building.spaces", "actions": ["read"] },
  { "subject": "building.elements", "actions": ["read", "write"] }
]

Subjects + actions come from the platform's permission catalog. Validate yours against it:

bash
npx tv-sdk snapshot-permissions   # see the live catalog

UI

json
"ui": {
  "routes": [{ "path": "/cafm" }],
  "navigation": [
    { "label": "CAFM", "path": "/cafm", "section": "operations" }
  ]
}

routes are where your federated Shell mounts. navigation is what appears in the Building OS sidebar.

Full example

See the reference module for a complete, validated manifest with mcpTools, heartbeat, and HMAC-signed federation.

Stability of the schema

The manifest schema follows the SDK's semver. Breaking changes (new required fields, removed fields) bump the SDK major. Additive fields bump the minor. See the stability policy.

Built on the Tango Vision platform.