Status and limitations of Community Cloud

You can view the current status of Community Cloud at streamlitstatus.com.

To deploy your app, Streamlit requires access to your app's source code in GitHub and the ability to manage the public keys associated with your repositories. The default GitHub OAuth scopes are sufficient to work with apps in public GitHub repositories. However, to access your private repositories, we create a read-only GitHub Deploy Key and then access your repo using an SSH key. When we create this key, GitHub notifies repo admins of the creation as a security measure.

Streamlit requires the additional repo OAuth scope from GitHub to work with your private repos and manage deploy keys. We recognize that the repo scope provides Streamlit with extra permissions that we do not really need and which, as people who prize security, we'd rather not even be granted. This was the permission model available from GitHub when Community Cloud was created. However, we are working on adopting the new GitHub permission model to reduce uneeded permissions.

Because of the OAuth limitations noted above, a developer must have administrative permissions to a repository to deploy apps from it.

You can deploy multiple apps from your repository, and your entrypoint file(s) may be anywhere in your directory structure. However, Community Cloud initializes all apps from the root of your repository, even if the entrypoint file is in a subdirectory. This has the following consequences:

  • Community Cloud only recognizes one .streamlit/configuration.toml file at the root (of each branch) of your repository.
  • You must declare image, video, and audio file paths for Streamlit commands relative to the root of your repository. For example, st.image, st.logo, and the page_icon parameter in st.set_page_config expect file locations relative to your working directory (i.e. where you execute streamlit run).
  • You cannot mix and match Python package managers for a single app. Community Cloud configures your app's Python environment based on the first environment configuration file it finds. For more information, see Other Python package managers.
  • If you pin streamlit< 1.20.0, you must also pin altair<5. Earlier versions of Streamlit did not correctly restrict Altair's version. A workaround script running on Community Cloud will forcibly install altair<5 if a newer version is detected. This could unintentionally upgrade Altair's dependencies in violation of your environment configuration. Newer versions of Streamlit support Altair version 5.
  • Community Cloud only supports released versions of Python that are still receiving security updates. You may not use end-of-life, prerelease, or feature versions of Python. For more information, see Status of Python versions.
  • When you print something to the Cloud logs, you may need to do a sys.stdout.flush() before it shows up.
  • Community Cloud hosts all apps in the United States. This is currently not configurable.
  • Community Cloud is built on Debian Linux. All file paths must use forward-slash path separators.
forum

Still have questions?

Our forums are full of helpful information and Streamlit experts.