Streamlit when you need state
Gradio's mental model is "Python function → UI." Streamlit's is "script reruns top-to-bottom on interaction." For multi-page dashboards or apps that need persistent session state, Streamlit feels more natural — st.session_state is purpose-built.
Docker Space when you need anything else
Need FastAPI? Vue? a non-standard Python? a custom Nginx? GPU drivers? Build a Dockerfile and choose sdk: docker in the manifest. Spaces builds the container and runs it. The HF container runs as user 1000 (non-root); design your Dockerfile accordingly.
Static Spaces are free hosting for HTML
For a model showcase, a tutorial, or marketing page that doesn't need a runtime, set sdk: static and push HTML/CSS/JS. HF serves it on the same domain as your other Spaces. Free, fast, no cold-start.