I’d suggest that you look at the three main zigbee integrations:
There are three Zigbee options with Home Assistant (regardless of how you install it). These are:
deCONZ is relatively stable and mature with its own UI. It can run in an add-on, in a Docker container, or natively. Known working devices are documented, and how to request support for a new device is documented too (you can’t add unsupported devices yourself).
zha is actively developed as part of Home Assistant Core, using the zigpy stack, the UI also being part of Home Assistant. There is no list of supported devices, as any standards compliant device should work. Devices that require extra support are listed, and adding unsupported devices is documented.
Zigbee2MQTT is very actively developed and can run in an add-on for Home Assistant, in a Docker container, and natively, with no native UI. It uses MQTT for control and configuration, but there are third party UIs. The known working devices are well documented (which usually includes how to pair them so you don’t have to find the manual), and adding unsupported devices is also documented.
These are all local, so there’s no cloud dependency.
I have a Hubitat hub which easily connects to zigbee and zwave behind the scenes of home assistant. I haven’t utilized the MQTT connectivity yet but the Maker API works great and maintains a simple local network connection. You do need to add any device you add to the hub to the Maker API app which isn’t hard but something that initially stumped me when adding some zwave switches.
My zigbee stuff is not on the critical path … some older GE / Quirky bulbs that used to be inside Wink. I’ve noticed some other bulbs were detected in my Hue App so that also works if you want - I’d definitely categorize that as hit or miss, but once in the app can also easily be controlled in HA.