Common App frameworks

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.

FrameworkTypical UsageStrengths/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 (Python)

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 dash is installed in your environment.

  • Use routes_pathname_prefix='/' for proper routing inside Domino.

Streamlit (Python)

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 .sh such as app.sh startup script.

  • You can configure the route prefix using DOMINO_RUN_HOST_PATH.

Flask (Python)

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 (R)

Shiny is the standard framework for interactive R applications. It enables reactive dashboards and analysis tools directly from R code.

Option 1: Inline R script

shiny::runApp("./", port = 8888, host = "0.0.0.0")

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:8888 to 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.

Next steps