This is a bit of a rabbit hole, but here's my setup:
I use Google Home as my voice assistant, several throughout the house. I also self host OpenHab (for connection between Google and my smart home. Also for their tablet interface) and Node-Red ( for the actual logic. OpenHab is more complicated than I would like. Node-Red is easier for me. Also Node-Red and OH talk to each other, so no worries there). I also host my own MQTT server which I use to control my devices.
I use several Sonoff devices flashed with a custom firmware called Tasmota. This allows them to be used completely offline as long as the MQTT server is up in my house. If the internet ever goes out, I cannot use Google to control anything, but the tablet on my wall is fully functional as well as the app.
If you already have Kasa lights, then Home Assistant may be the way to go for you, but I can't vouch for it as I don't use it. I built my system from the ground up with local control in mind. It's more work up front, but when something isn't functioning I know why