A lot can be done with an ESP32. This code will announce a network name and add a service for handling lights. It then runs a web server with a few endpoints to get version and get and set the lights mode. Once the code is built and running on an ESP32 on your network you can run the commands below.
This was done in Arduino IDE and it uses a library named AutomaticNetworking
which was placed in the libraries folder where Arduino looks when building. Update the code to include any Access Points you will be using which can include a password or not.
dns-sd -B _mylights._tcp local
curl http://mylights.local/version
curl http://mylights.local/light-mode
curl -X POST http://mylights.local/light-mode \
-H "Content-Type: application/json" \
-d '{"color": "#FF0000", "mode": "static"}'
You can run multiple ESP32s with this code so that you can name each one and use it control LED lights. A web page or even an app could interact with this REST API to get the version and current light mode for each of the discovered controllers.
What it does not do is any security so anyone on the WiFi network can reach and interact with it. It could be set up with a self-signed certificate to run with SSL/TSL on port 443 and control access by some system that the controller syncs with to authorize access. This code is just a proof of concept as a starting point.