infinimesh is an open source (Apache-2.0) device layer: devices connect over MQTT or HTTP, and infinimesh keeps their identity, permissions and state, then hands the data to the tools you already run.
The server lives in infinimesh/core. This repo holds small device examples and practical guides.
Each example is one sketch or script with a short README.
| Example | Board | Protocol |
|---|---|---|
| examples/esp32-mqtt | ESP32 (Arduino) | MQTT over TLS on 8883 with a device certificate |
| examples/esp32-http | ESP32 (Arduino) | HTTPS with a device token |
| examples/picow-mqtt | Raspberry Pi Pico W (MicroPython) | MQTT over TLS on 8883 with a device certificate |
| examples/curl | Any computer | HTTPS with a device token |
- guides/cli-getting-started.md: the
infCLI on 3.4, from login on:443to quotas, rules, OTA addon registration, the OTA request path, addon token rotation and bulk assign. - guides/small-devices-tls.md: why TLS fails on small chips like the ESP8266, and how to fix it.
- guides/node-red.md: send device data to Node-RED with the MQTT bridge or webhook addon.
- Devices bring their own MQTT or HTTP client. infinimesh has no device SDK.
- MQTT topics: a device publishes to
devices/<id>/state/reportedand subscribes todevices/<id>/state/desired.<id>is the device uuid. - Boards without TLS (for example ATmega Arduinos) should talk to a local gateway, such as a Raspberry Pi or an ESP32, which then connects to infinimesh over TLS. See the guide above.
- HTTP devices send their own JSON with
POST /v1/ingestand a device token, and read desired state withGET /v1/ingest/desired. The v1 API is stable, see API versioning. - The boards themselves have not been tested yet. What was tested is listed in each README.
make commit-checkThis runs make lint and then compiles the examples. make lint runs shellcheck, markdownlint, a lychee link check, clang-format on the sketches, actionlint, yamllint and gitleaks. The compile step runs a MicroPython compile check and arduino-cli compile for both ESP32 sketches. On Linux, sh scripts/install-lint-tools.sh installs the lint tools; on macOS use brew install shellcheck markdownlint-cli2 lychee clang-format actionlint yamllint gitleaks.
Apache-2.0. See LICENSE.