Live Apps
Live Apps are robust, long-lived services designed to host and deploy web applications on the MINEO platform. They cater to various frameworks such as Streamlit, Gradio, FastAPI, or any custom entrypoint you wish to implement.
In contrast to ephemeral notebook workers, Live Apps offer a persistent environment and are available to all users until a manual stop is initiated. This makes them ideal for applications that require a stable and consistent runtime.
Featuresβ
| Feature | Description |
|---|---|
| Seamless Deployment | Deploy any web framework that listens on port 8000, ensuring broad compatibility and hassle-free integration with the platform's infrastructure |
| Persistent Services | Your app remains active and accessible across multiple sessions and users, unless stopped manually |
| Dedicated Resources | Each app benefits from allocated resources, guaranteeing consistent and optimal performance without interference from other processes |
| Docker-based Environment | Recreate and manage your app's environment effortlessly with Docker, ensuring reproducibility and minimizing configuration issues |
To deploy a Streamlit app, place a functional app.py in your working directory and use the following entrypoint:
pip install --no-cache-dir streamlit && streamlit run app.py --server.port 8000
Configuration options:β
The Live App configuration form is organized into four logical sections for better usability:
π Basic informationβ
Configure your app's identity and access settings:
| Field | Description |
|---|---|
| Name | Required identifier for your app, unique within the project |
| Working directory | Folder that holds your app's code; the entrypoint runs from here |
| Description | Optional description for your app to help users understand its purpose |
| Slug | Custom URL slug for the app (e.g., my-app). If not set, a UUID will be used. This creates your app's unique identifier |
| URL | A unique URL is automatically generated based on your slug or domain. This is where users will access your app. More information in the Organization's slug or domain |
| Login required | If checked, users must be logged in and have viewing permission to access the app. Enable this for private or sensitive applications |
π» Execution configurationβ
Set up how your app runs:
| Field | Description |
|---|---|
| Entrypoint | Shell command used to start your app. Ensure it listens on port 8000 for proper functionality |
π Connectionβ
Configure how the app is used and how the platform checks that it is ready after wake-up:
| Field | Description |
|---|---|
| App type | Web apps are opened by people in the browser, with optional MINEO login. MCP apps are used by Assistants as MCP servers: MINEO login is disabled and clients authenticate with tokens |
| App main path | Path probed on the worker to check readiness after wake-up (e.g. /health or /). Defaults to / |
Apps created from the FastMCP preset or the MCP Template are configured automatically: MCP type, login disabled, and On-demand availability, so Assistants can wake them whenever they need them.
After wake-up, MINEO sends an HTTP GET to App main path and accepts any response below 500 β redirects, app-level login walls, 404s and MCP servers rejecting a plain GET all prove the app is up. 5xx responses and connection failures keep the request waiting. Point App main path to a route that does not fail with a server error, such as / or /health.
π Availabilityβ
Choose how your app's running lifecycle is managed with the Availability selector. The four modes are mutually exclusive:
| Mode | Behavior |
|---|---|
| On-demand | The app hibernates after the Inactivity timeout and wakes up automatically when someone opens it. The first request may take longer while the application starts |
| Wake using button | The app hibernates after the Inactivity timeout. Shows a wake-up page with a button; clicking it starts the application |
| Scheduled | The app stays powered on during a recurring weekly window; outside it, wakes up automatically on request. Premium feature that requires an appropriate pricing plan |
| Always on | The app runs continuously and is never hibernated. Premium feature that requires an appropriate pricing plan |
Each request waits independently for up to 200 seconds. If the app does not become ready in time, a 504 Gateway Timeout is returned. Waiting does not block other users' requests.
When the app cannot be served, the URL answers with an explanatory page and a meaningful status code, so monitors and API clients can tell the cases apart: 404 when the app does not exist, 503 when it exists but is stopped, and 503 when it is hibernated without automatic wake-up.
Manual hibernation and wake-upβ
While an app is running, open the dropdown on the Stop button in the detail view and select Hibernate. Hibernating frees the worker immediately but, unlike stopping, keeps the app eligible for automatic wake-up (on demand, with the wake-up button, or by schedule). Use it to release resources without taking the app offline.
While an app is hibernated, the same dropdown offers Wake up, which starts it again without waiting for an incoming request.
β° Scheduled modeβ
Define a recurring window during which the app stays available, without keeping it running 24/7:
- Pick the Power-on days (one or more days of the week) and the Power-on hours (a startβend time range, which may cross midnight).
- Set the Off-window inactivity timeout that applies outside the window.
- Inside the window: the app is powered on automatically at the start time and is never hibernated by inactivity.
- Outside the window: the normal inactivity rules apply β the app hibernates when idle, and any incoming request wakes it up automatically.
Times are evaluated in the server timezone. The form shows that timezone and the current server time below the Power-on hours field so you can set the window accordingly.
βοΈ Resource settingsβ
Control resource management and lifecycle:
| Field | Description |
|---|---|
| Worker Image | The container image used to run your app, either the default project image or a custom one tailored to your app's specific dependencies. Learn more about Worker Images |
| Worker environment | The machine resources (RAM, CPU, GPU) allocated to run your app. Choose based on your app's computational requirements |
With these options, Live Apps provide a powerful and flexible environment for deploying applications, encouraging collaboration and innovation within the MINEO ecosystem. Workers which are ephemeral and user-specific, Live Apps are shared persistent services that remain available until explicitly stopped.
Your current planβs maximum number of Live Apps is shown in the action bar, to the left of the Run button. This quota counts Active apps, which means both Hibernated and Running states consume a slot. To free a slot, fully stop an app; hibernating it does not reduce the count.
Public APIβ
The API lets an external system control a Live App programmatically β power it on, power it off, hibernate it, or read its current state β without a user session.
All endpoints require a valid project token. Add it to the Authorization header:
Authorization: Token YOUR_ACCESS_TOKEN
Tokens are created per project from Project Settings / API (see Projects). A token only authorizes Live Apps that belong to its own project, and it can be revoked at any time.
Open the Live App's API tab to get ready-to-run curl and Python examples for that app; paste a token to fill them in.
Power onβ
POST /api/project/{project_uuid}/live-apps/{live_app_uuid}/run/
Starts the app, whether it was stopped or hibernated. Returns the app with its new state.
{
"uuid": "b7f1c0de-1234-4a5b-9c8d-0e1f2a3b4c5d",
"name": "my-app",
"slug": "my-app",
"status": "starting",
"url": "https://acme.mineo.app/my-app"
}
Power offβ
POST /api/project/{project_uuid}/live-apps/{live_app_uuid}/stop/
Stops the app and leaves it disabled: incoming traffic does not restart it, so the app only runs again after an explicit power-on. Frees the Live App quota slot. Returns the same payload as Power on.
Powering off is not permanent for an app in Scheduled availability mode: its activation window powers it on again at the next start time. Turn off the schedule if you need the app to stay down.
Hibernateβ
POST /api/project/{project_uuid}/live-apps/{live_app_uuid}/hibernate/
Stops the app but keeps it eligible for automatic wake-up, so incoming traffic starts it again, following the Availability mode configured for the app. The app must be running. Hibernated apps keep consuming a quota slot. Returns the same payload as Power on.
Get stateβ
GET /api/project/{project_uuid}/live-apps/{live_app_uuid}/status/
{
"status": "running"
}
State valuesβ
| Value | Meaning |
|---|---|
running | A worker is assigned and reachable. Right after a power-on the worker may still be booting, so the first request can wait for the app to become ready |
starting | A worker is being provisioned and has no address yet |
hibernated | Stopped, and incoming traffic wakes it up automatically |
stopped | Stopped and disabled; only an explicit power-on starts it |
unavailable | Marked as running but has no live worker; power it on again |
Error responsesβ
| Status | When |
|---|---|
403 | Missing, malformed, expired, or wrong-project token; or Live Apps are not enabled for the project or its pricing plan |
404 | The Live App does not exist in this project |
400 | The action does not apply to the current state β hibernating an app that is not running returns LIVEAPP_NOT_RUNNING |
406 | No worker capacity, no worker plan configured, or the cluster is unavailable |
Power-on calls are subject to the same limits as the UI: the plan's maximum number of Live Apps, the organization's worker and CPU/GPU hour quotas, and the worker plan capacity. A power-on that would exceed capacity returns 406 instead of starting the app.
Actions performed with a token are recorded like any other action and appear in the app's log (View logs button). They are attributed to the anonymous user, which is how API-driven starts are told apart from starts by a person.
ποΈ Streamlit
Creating a Streamlit Live App on MINEO is a simple and efficient way to deploy interactive web applications. Follow the steps below to set up your own Streamlit Live App:
ποΈ Gradio
Creating a Gradio Live App on MINEO is an easy and effective way to deploy interactive web applications. Follow these steps to set up your own Gradio Live App:
ποΈ Dash
Setting up a Dash Live App on MINEO is a hassle-free way to deploy interactive web applications. Follow these steps to create your own Dash Live App:
ποΈ FastAPI
Setting up a FastAPI Live App on MINEO is an efficient way to deploy highly performant web applications. Follow the steps below to create your own FastAPI Live App:
ποΈ Entrypoints and Hot Reload
Hot reload is a development technique that allows your application to automatically update when it detects changes in the source code. This is especially useful during development to speed up the iteration process, since you can edit directly your files from MINEO.
ποΈ Per-User Authenticated MCP
Host an MCP server on MINEO whose tools know which user invoked them β and prove it, so no user can ever pretend to be another. MINEO attaches a short-lived, signed token to every tool call; your server checks the signature with a public key and trusts the identity inside. No popups, no shared secrets, no way for the assistant to lie about who it is.
ποΈ Accessing Authenticated User Information
When you enable the login_required option in your MINEO Live App, you can access authenticated user information through HTTP headers. These headers are automatically sent to your Streamlit application when a user logs in.