I have a wealth of experience developing WordPress plugins.
In order for your plugin to auto-update I would propose using WP_Cron to schedule to check and send a get request using cURL to your server to check if an update is available. If an update is available, use cURL to retrieve the updated files, replace the old files on the site, then reactivate the new plugin.
If you have any questions, please don't hesitate to ask.
Regards, Jake.