Deployment of Many Streamlit apps

I would love to use streamlit for one of our use cases. Cloud options are not allowed for corporate IT requirements.

I will have many single-page apps that will run very infrequently by many different users on many machines around our factory. The rough scale is 40 users infrequently looking at 1 or 2 of 100+ visualizations daily. I would expect changes to these scripts on a weekly basis.

I want very low deployment friction. Having every script run on its own port is just not an option.

Installing and maintaining a streamlit environment on viewer/user machines is not viable/scalable.

Would this work (or is there a better similar solution)?

  1. All streamlet apps live in a folder/folders on the server.
  2. A single streamlit app will run on our server that serves up the table of contents app.
  3. An index/table-of-contents file allows users to pick from one of the many apps using the new multi-page app functionality.
  4. Index file is auto-generated when OS detects file changes (I can write this no-problem).

This way, deployment is as simple as copying a file to a folder. But Iโ€™m concerned about:

  1. Will we need to restart the streamlit instance if the index changes?
  2. If a streamlit app is changed while it is being viewed, what happens?

As an aside, I can imagine autogenerating some of these apps using configuration data from our MES.

For what it is worth, I have verified that streamlit detects scripts that are running and have changed on the server. They give a nice prompt offering a reload.

Hey @Chuck_Bass,

You can set the config value โ€œrunOnSaveโ€ to true to ensure that the script will automatically rerun if the file is modified.

@Chuck_Bass have you managed to build s solution that you like or are you still interested in solutions?

I am currently developing a lightly modified version of streamlit server in order to fulfill some of our requirements for a shared internal deployment server.

Iโ€™d be happy to share the code once itโ€™s done, but meanwhile regarding the deployment stepโ€ฆ I solved it by forcing users to write their streamlit apps within a function and wrapping it in a custom deploy function.

The deploy function is essentially a streamlit app that gives a menu in the sidebar with a text input for name and button to deploy. When pressed a file is created and copied to the deployment server.

This eliminates the need of copying files to a server.