Domino can run apps built in a variety of popular frameworks, as long as they launch a web server on localhost:8888. Below are minimal examples that demonstrate how to start each supported type of app. These are intended to help you get a working stub up and running quickly.
| Framework | Typical Usage | Strengths/Limitations |
|---|---|---|
Dash (Python) | Building interactive data visualizations and dashboards using Plotly. | Strong for polished, complex visualizations; requires more setup and coding than Streamlit. |
Streamlit LLM | Quickly prototyping AI/LLM-driven apps, chat interfaces, and data workflows. | Very fast to build and deploy; limited customization compared to Flask/Dash. |
HTML | Hosting static web pages or lightweight custom interfaces with CSS/JS. | Simple and flexible; lacks built-in interactivity without JavaScript. |
Flask (Python) | Creating custom web apps or APIs with more control over routes and logic. | Highly flexible and lightweight; more development effort required for UI/UX. |
Shiny (R) | Developing interactive R-based dashboards and statistical analysis apps. | Excellent for R users; less suited for Python ecosystems and larger-scale web apps. |
Dash lets you build analytic apps with interactive Plotly visualizations. It is well suited for polished dashboards, multi-page apps, and custom data exploration tools.
import dash
app = dash.Dash(__name__, routes_pathname_prefix='/')
if __name__ == '__main__':
app.run_server(port=8888, host='0.0.0.0', debug=True)-
Make sure
dashis installed in your environment. -
Use
routes_pathname_prefix='/'for proper routing inside Domino.
Streamlit turns Python scripts into shareable apps with just a few lines of code. It is popular for quick prototypes, internal tools, and simple workflows.
import streamlit as st
st.title("Minimal Streamlit App")
st.write("Hello from Domino!")In your .sh file, launch with:
streamlit run app.py --server.port=8888 --server.address=0.0.0.0-
Streamlit apps require a separate
.shsuch asapp.shstartup script. -
You can configure the route prefix using
DOMINO_RUN_HOST_PATH.
Flask provides fine-grained control for building custom web apps or APIs. It is a good choice for when you need to define your own routes and application logic.
from flask import Flask
import os
app = Flask(__name__)
@app.route("/")
def index():
return "Hello from Flask in Domino!"
if __name__ == '__main__':
app.run(port=8888, host='0.0.0.0')-
Works out of the box with Domino’s routing and identity headers.
Shiny is the standard framework for interactive R applications. It enables reactive dashboards and analysis tools directly from R code.
Option 2: Shell script to launch Shiny
In your .sh file:
R -e 'shiny::runApp("./", port=8888, host="0.0.0.0")'-
Shiny must run on
localhost:8888to work in Domino. -
User-level identity headers are only supported by Shiny Server Pro.
These minimal examples are designed to help you quickly stand up a working app in Domino using your preferred framework. Each framework has specific requirements for launch behavior and routing, but all follow the same basic pattern.
-
How Apps Run in Domino: Learn how apps run and use permissions.
-
Publish and Share Apps: Publish apps, customize URLs, and share with authorized users.
