Local Development
DeviceChain is designed to run locally with only two dependencies: NATS and TimescaleDB. No Java, Kafka, ZooKeeper, Redis, Keycloak, or Mosquitto.
Connecting a Device
Devices connect to DeviceChain over MQTT (served directly by NATS' built-in MQTT server on port 1883 β no separate broker) or HTTP. Both transports feed the same decode β resolve β persist pipeline, so the JSON event body is identical between them.
Managing Device Assignments
An assignment relates a device to a customer, area, or asset so its telemetry carries organizational context. In DeviceChain an assignment is just a tracked relationship on the uniform entity graph β there is no separate assignment record.
Device Credentials
A device's identity (its stable token) is kept separate from its credentials β the material it presents to authenticate. A device can hold several credentials and rotate them without changing its identity.
Configuring Notification Channels
When a detection rule's REACT stage raises an alarm, the notification subsystem carries it the last mile β to a person. A per-tenant policy routes alarms by severity to configured channels (email over SMTP, or a webhook), with throttling and unacknowledged-alarm escalation. This machine-to-human path is deliberately separate from the machine-to-machine outbound connectors: connectors carry payloads to systems; notifications carry alerts to people, with recipients and per-severity routing. See Event Processing & Alarms for how alarms are raised in the first place.