I have also implemented it 3 times. Local updates from file system or USB and networked updates with the mongoose web page & the REST API. Quirky to configure when supporting all these methods at the same time but smooth and reliable once done.
Never got to implement a full OTA update system. SWUpdate supports suricatta & Siemens WFX for this. I played around with WFX and got OS updates working on my local network but didn't do anything else with it.
Nonetheless, if I wanted to implement my own OTA update solution swupdate & WFX seem like a beautiful combination.
If I may ask, how far did you take it?