Generally, I think it makes things much easier for your non-technical colleagues if you are the one maintaining some kind of web site where they can log in to use your app. It is also easier to deploy updates.
The web app can certainly be behind a password or single-sign on, and maybe even on a private network. ContainDS Dashboards is an extension for JupyterHub that makes it easy to create a ‘dashboard’ app for other (non-technical) JupyterHub users to use. You would need to host that JupyterHub somewhere of course.
As @fomightez says, ContainDS Desktop does allow you to share your app as a file so that it can run completely locally on your colleagues’ machines, without needing the internet. But it does have some overhead as the user has to install and run Docker Desktop as well as ContainDS itself.
If you have a small userbase with everyone using the same operating system as you then it might be worth looking into PyInstaller or something similar (which wraps up the entire Python environment), but that is more likely to be expose system incompatibilities than the Docker or hosted approaches above. It is also not going to be able to cope with non-Python requirements of your web app in the same way.
I hope this gives you some ideas!