What is “Chatters”

Chatters is a messaging layer that enables people and/or devices to communicate securely, without relying on the internet, WiFi (although WiFi is supported for “local” delivery), telecom, or other centralized infrastructure. Chatters is designed to run on resource-limited low power devices and generally low-bandwidth use cases (texting, sensor data, etc). I have managed to send low-resolution thermal images across, but currently limit payloads to an arbitrarily-chosen 1024 bytes. There is no reason larger messages could not be broken into larger payloads, as each message is broken into micro-packets. Each packet is acknowledged separately, and packets can arrive in any order to form a complete message, even with time breaks between.

Intro to Chatters / ChatterBox

Thermal image sent using Chatters

Decentralized

Chatters is designed to be as decentralized as possible. No centralized mediator, router, or authority is required for chatter devices to securely communicate. Meshing and bridging features allow communication across larger distances, but at a bare minimum, only two communication devices are required.

Clusters

A chatters cluster can be thought of as sort of a secure group (up to 90 devices). Chatters is designed to be as decentralized as possible, so cluster does not mean the devices are necessarily within range of one another. The cluster may be scattered across an area, with many devices powered off our out of range. Through a combination of decentralized caching and smart routing, the cluster works together to maximize the chance that messages are delivered securely ASAP, with minimal “travel”.

Broadcast messages sent within the cluster cannot be read by any device that has not been onboarded into the cluster. Direct messages (one device/person directly to another) cannot be read by any devices, other than the sender and recipient. Other devices may assist in the mesh delivery and caching, but they will not be able to decrypt the content.

A cluster is essentially a LoRa frequency (868.0 MHz - 960 MHz), a cluster ID (5 digit alphanumeric), and couple of symmetric keys. The chatters library does support additional communication channels for a cluster (UDP multicast, etc). Any additional channels (such as WiFi) are optional, but LoRa is a required channel.

When a device is factory reset (or turned on for the first time), it generates its own cluster, which it becomes root of. Other devices can be “onboarded” to the cluster via LoRa, meaning they will receive the frequency/symmetric key/etc, and be able to communicate with devices in this cluster.

Root Device

The root device is the device that created the cluster. Currently, only this device is allowed to onboard additional devices to the cluster, but this will likely change in the future. The only difference between the root device and non-root devices is the fact that the root device created a given cluster. Since devices can “exist” on multiple clusters, a single device may be root of its own private cluster, while being a standard non-root device on a second and third cluster.

Communicators

A communicator is a human-usable device that allows texting and other functions within the cluster. As mentioned in the section above, a communicator may or may not be the root device of whatever cluster it is participating in at the moment. The first prototype of a communicator is the “ChatterBox”.