# infinimesh > infinimesh is an Apache-2.0, self-hosted IoT backend written in Go. It is the device layer for your IoT and AI stack: device identity, access as a permission graph (per customer and per partner), reported and desired shadow state, MQTT 3.1.1/5 and HTTP ingest. Addons stream device data to Kafka, KafScale, Postgres/TimescaleDB, InfluxDB, webhooks, an MQTT broker, Elasticsearch, Snowflake, SAP HANA, S3, GCS and Azure Blob. The open source core is complete and free. No feature is held back for a paid tier. infinimesh has no dashboards. In 3.4: rules and alarms on device state with ack and clear, and an OTA contract in core (target version per device, reported status, an OTA addon must register before updates switch on), an audit log, namespace quotas, CoAP ingest on UDP 5683, and MQTT bridge sessions in Redis). The OTA addons for hawkBit and Mender are coming soon. It is not an HA MQTT cluster yet. It helps EU device makers give customers access to device data, but it does not make a product Data Act compliant by itself. AI ready (coming soon, not built yet): device state for AI agents over an MCP server and for any LLM through an addon for OpenAI-compatible APIs (vLLM, Ollama, Mistral, OpenAI, Anthropic, Gemini), scoped by the same permission graph. Models can run locally so data stays on your servers. ## Docs - [Installation](https://github.com/infinimesh/core/blob/main/docs/installation.md): Docker Compose on one machine - [Device auth](https://github.com/infinimesh/core/blob/main/docs/device-auth.md): certificates, tokens, MQTT login, HTTP ingest - [Public TLS](https://github.com/infinimesh/core/blob/main/docs/public-tls.md): running on a public domain - [API reference](https://infinimesh.org/api/): REST view of the stable v1 API, OpenAPI spec at https://infinimesh.org/api/openapi.json. Devices send their own JSON with POST /v1/ingest and a device token (16 KB max, 60 requests a minute), and read desired state with GET /v1/ingest/desired. - [API versioning](https://github.com/infinimesh/core/blob/main/docs/api-versioning.md): the v1 API is stable, REST under /v1, breaking changes checked against proto v1.0.0 - [Device shadow streams](https://github.com/infinimesh/core/blob/main/docs/shadow.md): account and namespace streams, event ids, read-only streaming token for addons - [Rules and alarms](https://github.com/infinimesh/core/blob/main/docs/rules.md): CEL conditions on device state, alarms with ack, clear, cooldown and repeat - [OTA contract](https://github.com/infinimesh/core/blob/main/docs/ota.md): target version per device, OTA addon registration, bulk assign with per-device results - [CoAP ingest](https://github.com/infinimesh/core/blob/main/docs/coap.md): JSON over UDP 5683, no DTLS, private networks only - [CLI guide](https://github.com/infinimesh/docs/blob/main/guides/cli-getting-started.md): inf login on :443, root and addon tokens, quotas, OTA, metrics - [Docs and examples](https://github.com/infinimesh/docs): ESP32 MQTT, ESP32 HTTP, Pico W, curl, small-device TLS guide ## Code - [core](https://github.com/infinimesh/core): API, registry, shadow, MQTT bridge, console - [addons](https://github.com/infinimesh/addons): data sinks and the write-an-addon guide - [inf-cli](https://github.com/infinimesh/inf-cli): the inf command - [proto](https://github.com/infinimesh/proto): API schemas ## Optional - [Kubernetes operator](https://github.com/infinimesh/platform-operator) - [Cluster recipes](https://github.com/infinimesh/k8s)