There is absolutely public documentation [1] and has been for years. I've used it extensively to help maintain a Go connector [2]. It's a binary protocol and it's just a matter of spraying your network with broadcast UDP packets.
Thanks, I need to go back and re-read those docs. My problem was with the onboarding. From a quick look your library assumes the bulbs are already onboarded, like the one in Python?