sennet 0.0.2

Independent, permissively licensed mesh radio protocol implementation in the retinue family.
Documentation

sennet

An independent, permissively licensed mesh radio protocol implementation in the retinue family, targeting interoperability with existing LoRa messaging meshes, on the shared tulle radio layer.

Sennet is an independent implementation, developed from wire observation and public documentation. It is not affiliated with or endorsed by any existing mesh project.

A sennet is a ceremonial fanfare for a procession.

Status: the client serial deframer, schema-free protobuf reader, direct capture fixtures, LoRa transport header/AES-128/256-CTR layer, application envelope, port-1 UTF-8 text path, node-number/name reader, caller-persisted source/packet-ID allocator, and bounded managed-flood relay core are implemented. The node-info reader maps the observed numeric lookup key to user ID, long name, and short name. Its field assignments are regression-tested against two one-variable changes captured from stock firmware. NodeDirectory retains those records and resolves a received packet into source, destination, and text without hiding unknown endpoints. The relay filters one configured channel, deduplicates (source, packet_id), preserves ciphertext and nonce identity, and returns a configurable delay window to its caller. A Sennet text packet built through that API was transmitted by Tulle direct-PHY firmware on COM6, accepted and rebroadcast by a stock node on COM7, and returned through COM7's client API. The exact RF packet and client receipt are regression fixtures. The direct-PHY implementation has also passed encrypted text in both directions between a Heltec v4 on COM6 and the independent T114 firmware on COM10.

With the hardware feature, direct_phy_text drives that same path through Tulle's reusable Rust serial link. It advances and flushes a versioned packet-ID state file before transmitting. The protocol layer constructs and opens packets; Tulle owns USB framing, pacing, and radio metrics.

direct_phy_pair is the two-independent-radio headed receipt:

cargo run --features hardware --example direct_phy_pair -- COM6 COM10 LEFT_STATE RIGHT_STATE

Reconstruction follows controlled radio-bench experiments, with raw captures and the scope of each claim recorded in PROVENANCE.md. Unexplored fields remain numbered rather than acquiring speculative names.

The source crates remain MIT/Apache-2.0. Downstream combined firmware may be distributed under GPLv3 with its corresponding source and required notices; GPL-derived implementation code does not enter the permissive crate graph.

License

Licensed under the Mozilla Public License, Version 2.0 (LICENSE).

This is a deliberate choice. Sennet is an independent implementation, built clean-room (see PROVENANCE.md) — it contains no third-party protocol code and needs no one's permission to exist. But a permissive independent implementation would be an easy route around the copyleft the protocol's own authors chose, letting anyone take the work without giving improvements back. MPL-2.0 keeps that door shut: build whatever you like on top, under any license, but improvements to this implementation stay published.

MPL is GPL-compatible, so it also combines into the GPLv3 firmware images this project ships.