ESP RainMaker Neo Cloud Specifications

ESP RainMaker Neo is Espressif’s next-generation RainMaker platform. This is the specification for its cloud backend: an AWS serverless deployment (CDK, Go Lambdas, IoT Core) that owns identity, node lifecycle, groups, timeseries, notifications and the voice-assistant integrations.

It documents how the backend behaves — data models, flows, access control and the contracts it holds with nodes and apps. The node side of those same contracts is specified in the ESP RainMaker Neo firmware documentation.

Each page is self-contained and covers one feature area. Start with User Identity & Credentials and Node Association — almost everything else assumes the identity and ownership model they establish.

User Identity

  • User Identity & Credentials — Cognito user pools, the identity pool, the three IAM roles, and the two credential planes (identity-pool credentials vs. AssumeRole with a per-session policy).

The remaining pages are the ESP User provider itself — the endpoint-level detail behind that overview:

Node Identity

  • Assisted Claiming — how a node acquires its identity: the claim-initiate and claim-verify APIs, the reservation table, and the KMS-backed certificate issuer behind them.

  • Node Registration — node registration, including the asynchronous bulk CSV job that runs on ECS Fargate.

  • Node Connection Lifecycle — the connection lifecycle: the actors involved, the clocks that govern them, and what each timeout does.

User Node Management

  • Node Association — user–node association: how a node is claimed, what makes the claim secure, and how ownership is torn down.

  • Groups — the group model, group permissions and access control, naming rules, capacity limits, and the group APIs.

Node Control

  • Node Parameters & Messaging — device↔cloud messaging: shadow vs. to_cloud/from_cloud vs. indexed params.

  • Schedules — the schedule data model and payload shape, its access control, and the schedules (API) ↔ Schedules (firmware) key translation.

  • Triggers & Automations — per-node triggers (pushed to the node as service config) and group-scoped automations (evaluated in the cloud).

  • Group Control — one publish controlling many devices, mapped onto subgroups and addressed by device type.

Node Data

  • Indexed Parameters — the iparams indexed-params shadow: who writes each section, the DynamoDB mirror rule, and the document shape.

  • Time Series — the ingest path (MQTT → IoT rule → DynamoDB → stream → aggregator) and the read path.

  • Device File Storage — per-device file storage in S3.

  • Camera Streaming — Kinesis Video Streams camera streaming.

User messaging

Admin Identity

Admin User Management

  • OAuth Client Registry — the runtime configuration surface every OAuth flow reads: redirect URIs, PKCE enforcement, and confidential-client secrets.

Admin Node Management

Admin OTA

  • OTA Firmware Updates — AWS IoT Jobs and Streams driven entirely from the dashboard with admin credentials, the two-section job document, and the two roles that keep the image readable by the service without making the service assumable by an operator.

Admin Platform

  • Node Scalability — SQS-backed lambdas and the runtime mode flip.

  • Limits and Quotas — the AWS service limits this deployment operates against, and what each means at ESP RainMaker Neo scale.

Voice assistants

AI assistants

Contributing

Want to contribute? Start with CONTRIBUTING.md at the repository root — it is the single source of truth for setup, conventions, the CLA and what a pull request needs. (CONTRIBUTING.md, SECURITY.md and LICENSE live at the root because GitHub surfaces them from there; everything longer-form lives under docs/.)

These pages go deeper on individual topics:

API reference

The HTTP and MQTT surfaces are not part of this build. They are specified as OpenAPI and AsyncAPI documents under docs/api/ and published as here: https://api.docs.neo.rainmaker.espressif.com

That page links the HTTP, MQTT and event references, each serving the raw YAML alongside its rendering. The specs describe the API contract; every deployment serves that contract at its own API Gateway hostname.