Deploy multiple Streamlit apps from the same Github repo and the same Streamlit Sharing account

Ok, so here’s my situation. I have signed up for Streamlit Sharing (Streamlit’s new deployment service) and have already deployed an app through it. One account can have three apps deployed through it, so I still have two left.

Now, for my current project, I have two maybe even three sub-applications that I wished to run through one Streamlit app where the user could choose between the three using a dropdown menu. However, I quickly realized that that will overshoot the 800MB storage limit we have on the deployment platform.

So we came up with a new solution: to deploy two separate apps (forgetting about the third one for now) from the same Streamlit sharing account. Now, the catch is that I want to deploy them both from the same Github repo.

Naturally, the Github repo will include the files and stuff (there are some dependency files that are quite hefty) for both the apps.

My question is:

  1. How does Streamlit bundle files from a Github repo to host on its server and how is that storage filled? That is, will these dependency files I mentioned also be hosted (and hence hogging up space)?
  2. Can I deploy two apps (with two separate Streamlit scripts of course) from the same Github repository?
  3. If I do so, will I still face the storage overshoot issues (that is will it also host the other files on that same repo that aren’t being used by the current app)?

I would welcome any other suggestions on this matter too. My partner and I thought of doing something a bit wacky: we thought of creating a branch of main, and in it putting only the files for the second app. So the branch will never be intended to be merged with main but rather to exist as its own only. We also thought of creating a separate repo but that is a sub-optimal last resort solution that we both do not want to go to.

By the nature of our project, we would like to use only Github repo. I welcome any comments, suggestions, and answers!

Hi @adityashukzy, welcome to the Streamlit community!

If it helps you work through the deployment model in your head, each Streamlit app on Sharing runs in its own container without access to other containers. So while running multiple apps will give each app its own container’s worth of resources, there is no pooling magic or anything that helps you save space. The entire repo will get cloned into each container.

Best,
Randy

1 Like