Dynamic Apps
Apps are content items that stay running to serve requests. Unlike tasks, which execute once and then stop, an app keeps a process alive to handle incoming HTTP traffic. Examples are a Shiny dashboard, a Plumber API, or a FastAPI service. Ricochet manages app processes for you, including scaling them up and down based on demand.
See the content items overview for the full list of supported app types.
How apps work
Section titled “How apps work”When an app is deployed, ricochet starts its entrypoint script and expects the process to bind to a port. Ricochet routes incoming HTTP requests to the running process. If the app crashes, ricochet restarts it automatically.
Apps scale horizontally by spawning additional instances when connection thresholds are reached.
Configure scaling behavior in the ricochet web UI or via the [serve] settings in your _ricochet.toml.
R apps
Section titled “R apps”Shiny apps are interactive web applications.
Use the content type shiny (or shiny-r).
The entrypoint can be a single app.R file or a directory containing ui.R and server.R.
[content]name = "My Shiny App"entrypoint = "app.R"content_type = "shiny"Shiny documents
Section titled “Shiny documents”R Markdown and Quarto documents that use a Shiny runtime are deployed as apps rather than tasks because they require a live R process.
| Content Type | Description |
|---|---|
rmd-shiny | An R Markdown document with runtime: shiny in its YAML header. |
quarto-r-shiny | A Quarto document with a Shiny runtime. |
[content]name = "Interactive Report"entrypoint = "report.Rmd"content_type = "rmd-shiny"Plumber
Section titled “Plumber”Plumber converts R functions into RESTful API endpoints using special comments.
[content]name = "My Plumber API"entrypoint = "plumber.R"content_type = "plumber"Ambiorix
Section titled “Ambiorix”Ambiorix is a web framework for R inspired by Express.js. It can serve both web applications and APIs.
[content]name = "My Ambiorix App"entrypoint = "app.R"content_type = "ambiorix"Serverless R
Section titled “Serverless R”The serverless-r content type lets you deploy plain R functions as a REST API without writing any web framework code.
R Service
Section titled “R Service”The r-service content type is a generic option for R web apps or APIs that don’t fit the other categories.
ricochet runs your entrypoint script directly.
Start your server on the host and port in the HOST and PORT environment variables.
[content]name = "Custom R App"entrypoint = "app.R"content_type = "r-service"Python apps
Section titled “Python apps”FastAPI
Section titled “FastAPI”FastAPI is a modern Python web framework for building APIs.
Ricochet launches FastAPI apps with uvicorn.
[content]name = "My FastAPI App"entrypoint = "app.py"content_type = "fast-api"Flask is a lightweight Python web framework for building web apps and APIs.
[content]name = "My Flask App"entrypoint = "app.py"content_type = "flask"Streamlit
Section titled “Streamlit”Streamlit is a framework for building data apps in Python with minimal code.
[content]name = "My Streamlit App"entrypoint = "app.py"content_type = "streamlit"Dash is a framework for building analytical web applications in Python.
[content]name = "My Dash App"entrypoint = "app.py"content_type = "dash"Shiny for Python
Section titled “Shiny for Python”Shiny for Python brings the Shiny framework to Python for building interactive web apps.
[content]name = "My Shiny App"entrypoint = "app.py"content_type = "shiny-py"Python Service
Section titled “Python Service”The python-service content type is a generic option for Python web apps or APIs.
ricochet runs your entrypoint script directly.
Start your server on the host and port in the HOST and PORT environment variables.
[content]name = "Custom Python App"entrypoint = "app.py"content_type = "python-service"Python App
Section titled “Python App”Use the python-app content type for interactive Python web apps that keep a live connection to each browser, such as Panel.
ricochet runs your entrypoint script directly and counts each open browser session as one connection.
Start your server on the host and port in the HOST and PORT environment variables.
[content]name = "My Panel App"entrypoint = "app.py"content_type = "python-app"Julia apps
Section titled “Julia apps”Genie apps, including those built with Stipple or GenieFramework, deploy with the genie content type.
Start the server on the port in the PORT environment variable.
[content]name = "My Genie App"entrypoint = "app.jl"content_type = "genie"Julia Service
Section titled “Julia Service”The julia-service content type deploys Julia web apps and APIs built with HTTP.jl or Dash.jl, for example.
Start your server on the host and port in the HOST and PORT environment variables.
[content]name = "My Dash.jl App"entrypoint = "app.jl"content_type = "julia-service"Deployment and configuration
Section titled “Deployment and configuration”See the deployment guide to deploy apps with the CLI or git integration. For project requirements, see the guide for your language: