# SPORE > SProcket ORchestration Engine SPORE is a simple cluster engine for ESP8266 microcontrollers. ## Features - WiFi STA / AP - auto discovery over UDP - service registry - pub/sub event system - Over-The-Air updates ## Supported Hardware - ESP-01 ## Architecture ### Components The core architecture consists of following components: - Network Manager: WiFi connection handling - Cluster Manager: node discovery and memberlist management - API Server: HTTP API for interacting with node and cluster - Task Scheduler: internal scheduler used for system and user defined tasks ### Auto Discovery A node periodically executes 2 tasks responsible for auto discovery: - send discovery: send UDP packet on broadcast address to discover nodes - listen for discovery: receive UDP packets and send response back to the node who initiated discovery Discovered nodes are added to the so clusters memberlist. Another periodic task will then call the `/api/node/status` endpoint over HTTP on each node in the memberlist to get system resources and available API endpoints. ### Event System The `NodeContext` implements an event system for publishing and subscribing to local and cluster wide events (TODO). It is used internally for communication between different components and tasks. ## Develop ### Configuration Choose one of your nodes as the API node to interact with the cluster and configure it in `.env`: ```sh export API_NODE=10.0.1.x ``` ### Build Build the firmware: ```sh ./ctl.sh build ``` ### Flash Flash firmware to a connected device: ```sh ./ctl.sh flash ``` ### OTA Update one nodes: ```sh ./ctl.sh ota update 10.0.1.x ``` Update all nodes: ```sh ./ctl.sh ota all ```