Skip to content

Smart Home Device Management

This page describes an integration pattern for carrying smart home device identity, household privacy policies, and automation rules across IoT ecosystems using Universal Manifest.

  • Normative contract: Specification and Conformance
  • Non-normative guidance: this page

All smart home-specific claims, pointer names, and consent keys on this page are explicitly non-normative.

  • A valid Universal Manifest (um:Manifest) with a household or device subject identifier
  • Network-local resolver or discovery mechanism to fetch the home manifest
  • Device capable of reading and applying household policies
  • Policy-compliant device behavior (telemetry, remote access, location sharing)
  • Deterministic handling for expired or unavailable home manifests
  • Device registration acknowledgment to the home automation platform
  • Enforce TTL and re-fetch the home manifest periodically
  • Check consent keys before any outbound data transmission (default deny)
  • Ignore unknown fields safely
  • Apply household policies consistently across device types
  • Device onboarding: A new smart thermostat joins the home Wi-Fi. It discovers and reads the home manifest, applies the “no telemetry” policy, and registers itself — all without manual setup.
  • Privacy enforcement: The home manifest says home.shareUsageData: denied. Every device on the network suppresses outbound usage telemetry to manufacturers.
  • Energy management: An energy provider reads the home manifest (with consent) to enroll the household in a demand-response program, adjusting thermostat schedules during peak hours.
Shard NamePurposeKey Entity Fields
deviceIdentityDevice registration and capability infodeviceName, manufacturer, model, firmwareVersion, capabilities
homePolicyHousehold-wide privacy and behavior rulespolicyName, dataRetention, telemetryPolicy, guestAccessPolicy
automationRulesAutomation scenes and trigger configurationsruleName, trigger, action, schedule, enabled
  • home.manufacturer.firmware — manufacturer’s firmware update endpoint
  • home.assistant.config — home automation platform configuration (e.g., Home Assistant API)
  • home.energyProvider — energy provider’s demand-response or usage API
  • home.shareUsageData — gates sharing of device usage data with manufacturers or third parties
  • home.allowRemoteAccess — gates remote management connections from outside the home network
  • home.shareLocation — gates sharing of household geographic location

Consumers should default to deny for any household data use not explicitly consented to.

  • home.deviceOwnership — owner, guest, or managed
  • home.networkRole — hub, endpoint, bridge, or sensor
{
"@context": "https://universalmanifest.net/ns/universal-manifest/v0.1/schema.jsonld",
"@id": "urn:uuid:1a2b3c4d-5e6f-7890-abcd-ef1234567890",
"@type": "um:Manifest",
"manifestVersion": "0.1",
"subject": "did:key:z6MkpSmartHomeNetworkExampleDid",
"issuedAt": "2026-02-26T12:00:00Z",
"expiresAt": "2026-03-05T12:00:00Z",
"shards": [
{
"@type": "um:Shard",
"name": "homePolicy",
"entity": {
"@id": "urn:uuid:2b3c4d5e-6f78-9012-bcde-f12345678901",
"@type": ["um:Entity"],
"name": "Rivera Household Privacy Policy",
"policyName": "default-private",
"dataRetention": "local-only",
"telemetryPolicy": "none",
"guestAccessPolicy": "restricted"
}
},
{
"@type": "um:Shard",
"name": "deviceIdentity",
"entity": {
"@id": "urn:uuid:3c4d5e6f-7890-1234-cdef-234567890abc",
"@type": ["um:Entity"],
"name": "Living Room Thermostat",
"deviceName": "Ecobee SmartThermostat Premium",
"manufacturer": "Ecobee",
"model": "EB-STR-02",
"firmwareVersion": "4.8.2.107",
"capabilities": ["temperature-control", "occupancy-sensing", "voice-assistant"]
}
}
],
"consents": [
{ "@type": "um:Consent", "name": "home.shareUsageData", "value": "denied" },
{ "@type": "um:Consent", "name": "home.allowRemoteAccess", "value": "denied" },
{ "@type": "um:Consent", "name": "home.shareLocation", "value": "denied" }
],
"pointers": [
{ "name": "home.manufacturer.firmware", "url": "https://firmware.ecobee.com/devices/EB-STR-02/updates" },
{ "name": "home.assistant.config", "url": "http://homeassistant.local:8123/api/config" }
]
}

See the full fixture and implementation details in the integration source.