# Apps (MiniApps)

> A MiniApp is a workflow published as a simple form with its own URL. Choose the inputs people fill in, the view modes, sharing, pricing and embedding.

Source: https://nodaro.ai/docs/concepts/apps

A **MiniApp** is a workflow published as a simple app. People fill in a short form, click **Launch**, and Nodaro runs the workflow behind it and shows them the results. They never see the canvas, and each MiniApp has its own URL, its own run history and versions.

## How a MiniApp works

| | You, the creator | The people who run the app |
| --- | --- | --- |
| **What you see** | The whole workflow on the canvas | Only the inputs and results you chose |
| **What you do** | Build the workflow, choose its inputs and outputs, publish | Fill in the inputs and click **Launch** |
| **What it costs** | Nothing to publish | The credits of the run, from their own balance, shown on the **Launch** button |

Workflow: The app shows two inputs and one output. Everything between them runs behind the form.

- Text → Generate Image (prompt)
- Style → Generate Image (look)
- Generate Image → Generate Video (start frame)

## Publish a workflow as a MiniApp

### Open the Present tab

Open the workflow and click **Present** at the top of the editor. On the Present tab you build what people see: the inputs they fill in, the results they get, and the titles, groups and short texts around them.

### Choose the inputs and outputs

Add the nodes whose fields people should fill in, such as a prompt, an image upload or a picker. Then add the nodes whose results they should see. Give each one a title and a description. For a list of choices, you can restrict which values people may pick.

You can also expose any quick setting from a node's bottom bar, such as the model, resolution, duration, aspect ratio or **Draft**. The app's card offers only the choices of the model the run uses. When people switch the model, a choice the new model does not take moves to one it does.

### Click Publish and choose MiniApp

Click **Publish**, choose **MiniApp**, and enter a **MiniApp Name** and a description. The **URL Slug** is optional; leave it blank and Nodaro makes one from the name.

### Set the app's options and publish

Choose the options in the table below, then click **Publish App**. Use **Open MiniApp** to see it as your users will.

| Option | What it does |
| --- | --- |
| **List on marketplace** | Lists the app on the **Browse** tab of the MiniApps page, with the category, output types and tags you choose. An unlisted app still opens from its link. |
| **Supports RemX** | Lets people customize and remix your app. |
| **Read-only** | People can see results but cannot edit the inputs. |
| **Allowed view modes** | The layouts people may switch between. See [View modes](#view-modes). |
| **Default view mode** | The layout the app opens in. |
| **Compare defaults** | The two nodes the **Compare** mode shows side by side at first, left and right. |
| **Run thumbnail** | The node whose result is the thumbnail of each run in the runs list. |

The published app lives at `app.nodaro.ai/app/` followed by its slug. The URL stays the same across versions. Publish again after you change the workflow, and every shared link opens the new version.

## View modes

The creator chooses which view modes an app offers and which one it opens in. People who run the app can switch between the allowed modes.

| Mode | What it looks like |
| --- | --- |
| **Horizontal split** | Inputs on the left, results on the right. |
| **Vertical stack** | Inputs on top, results below. Good for narrow screens. |
| **Gallery grid** | Inputs and results as a grid of cards. |
| **Fullscreen slideshow** | One result at a time, full screen. |
| **Compare side-by-side** | Two results next to each other. |
| **Chat** | A composer at the bottom holds the inputs, and each run appears as a message in a thread. |

### Chat mode

Chat mode turns an app into a conversation. It is off until you add **Chat** to the app's allowed view modes, and it works on desktop and mobile.

- **The composer is a row of chips.** Each input is a small chip: click it to edit its value. An upload chip shows a thumbnail once you add a file.
- **Launch runs it.** There is no separate new-run button. **Launch** starts a run, shows its credit price, and keeps your values in the composer so you can change one and run again.
- **One run at a time.** The composer is locked while a run is in progress and opens again when it finishes.
- **Each run stays in the thread.** A multi-step run shows a chip for each step, which ticks off as the step completes. Use **Re-use inputs** to run again with the same values, **See steps** to open a step's result, or **Download** to save a result.
- **Full-screen results.** Tap a result to open it full screen. Use ← and → to step through that run's inputs and results, ↑ and ↓ to move between runs, and Esc to close.

## What the people who run your app see

- **Only what you chose.** The inputs and results you put on the Present tab, with your titles and texts.
- **Not your pre and post text.** The [pre and post text](https://nodaro.ai/docs/concepts/prompt-pre-post-text) of a node wraps every prompt but is never shown in the app. Use it for your house style.
- **Not your destinations.** The app fixes where it sends and what it fetches: a [Webhook Output](https://nodaro.ai/docs/nodes/publish/webhook-output) address, a social account or a scraper's target. People who run the app cannot change them.
- **Their own balance.** People must sign in to run an app, and each run is paid from their own credits. The app tells them how many runs their balance covers.
- **A price that follows their recording.** When the price depends on the length of a recording or a video link they give the app, it is listed as a fixed part plus a part per minute of the recording. A list they fill adds a part per extra item. The listed price includes any Render final. The **Launch** button shows the price of the run, and the exact figure once they choose their recording.
- **Retry of a failed run.** **Retry** continues a failed run from where it stopped. The steps that completed are not run or charged again. The run's credits are the total of every attempt: the failed run plus each Retry.
- **A price range when their choices change it.** When people can change a setting that changes the price, such as the model or the duration, the listed price shows "from X – up to Y". "From" is the price with your saved settings, and "up to" is the most a run can cost over the choices they have.

A Webhook Output that sends with a saved key must use a key locked to one address before you can publish the app. The publish dialog offers to lock it for you. See [Webhook Output](https://nodaro.ai/docs/nodes/publish/webhook-output).

## A UGC video in an app

A workflow that makes a [UGC video](https://nodaro.ai/docs/nodes/video/ugc-creator) publishes its UGC nodes empty. The app carries no script, clips, cards or creator image of yours, and never your own photo. Every node that leads to the creator's photo, and every node made from the UGC video, ships with its settings only. Each run renders them again. A share link shows the workflow to other people in the same way.

- **My photo.** When UGC Creator is set to **My photo**, the app asks each runner for a photo of their own. A run without one is refused before anything is charged, with "This app needs a photo of you. Add one, then run it again."
- **One creator.** An app run draws one creator and goes straight on to the video.
- **A balance check first.** While its clips render, a UGC video holds more credits than it is expected to cost. A run whose payer cannot cover that hold is refused before anything runs, with a message that gives the amount and the balance.
- **Locked fields.** A run can set only the creator's source, gender and photo, and the length of the script. Any other value on a UGC node is refused.

UGC videos are a Nodaro Cloud feature.

## Render final in an app

When a workflow's [Apply EDL](https://nodaro.ai/docs/nodes/video/apply-edl) render is set to **Preview first — review, then Render final**, the render's card in the app shows the result with the **Preview** label. The card also carries a **Render final** button with its price. **Render final** asks before it starts. It renders the cut at full quality, then runs every node after the render again, once. On Nodaro Cloud, the app run does not stop at the Preview: the nodes after the render run on the Preview first.

- **Charged outside the app run.** The final and the nodes after it are billed to the person who runs the app, at the nodes' own prices. The creator's markup does not apply, and the final does not count toward the app's daily run limit.
- **The Preview stays playable** while the final renders. When the final is done, the card shows the **Final**, and **Show preview** switches back to the Preview.
- **One final at a time** per run. A final that failed can be started again from the same button.

**Render final** works in every view mode, on mobile and in an embedded app. See [Preview and Render final](https://nodaro.ai/docs/nodes/video/apply-edl#preview-and-render-final).

## Share a presentation link instead

The Present tab can also share the workflow without publishing it. The share dialog creates a link that anyone can use to run the workflow, and they pay their own credits. Its **Viewer Settings** include **Viewers can only see results**, the allowed view modes and the default view mode. **Revoke Sharing** turns the link off.

Publish a MiniApp when you want a lasting URL, a run history, versions, analytics and a listing on the MiniApps page. Use a share link for a quick review.

## Manage your MiniApps

Open **MiniApps** in the sidebar. The page has three tabs:

- **Browse**: every listed MiniApp. Search, and sort by **Popular**, **Newest** or **Most Favorited**.
- **My MiniApps**: the apps you published, with their runs, price per run and favorites. From each card you can open the app or its workflow and copy its URL or its embed code. You can also see its **Analytics**, edit its settings, list or unlist it, and deactivate it.
- **Favorites**: the apps you marked with the heart.

In **Analytics**, a run counts once, by how its latest finished attempt ended. A run that failed and then completed on **Retry** is one successful run, not one failed run and one successful run.

Deleting a MiniApp hides it from the marketplace and from your list. You can restore it at any time from **Deleted MiniApps**, and its earnings, analytics and run history are kept.

## Charge for your MiniApp

On Nodaro Cloud you can charge a markup when other people run your MiniApp. Open **Edit MiniApp settings** from the app's card and, under **Monetization**, set a flat fee in credits, a percentage, or both. The dialog shows what people will pay: the base cost of the run plus your markup. **Monetization Defaults** on the MiniApps page sets the fee and percentage a MiniApp gets when you first turn on monetization for it.

Your earnings are added to your top-up balance and stay valid for 12 months. The **Billing** page shows them under **MiniApp Earnings**, for this month, the last 30 days and all time. See [Credits](https://nodaro.ai/docs/concepts/credits).

## Embed a MiniApp or run it from code

**Embed it on a website.** Click **Embed** on the app's card to copy its embed code. First add the websites that may show the app under **Embed settings** › **Allowed Embed Domains**. Embedding is blocked until you add at least one domain.

**Run it from your own code.** Your own website or app can also run a published MiniApp through the REST API. Your server reads the app's inputs, starts a run and waits for the result. The app's identifier is its slug, the last part of its URL. Runs are asynchronous, so your server starts a run and then checks for the result. The full flow, with code, is in [Embed a MiniApp](https://nodaro.ai/docs/developers/embed/miniapps).

Assistants connected through [MCP](https://nodaro.ai/docs/mcp) can list and run your apps too, and the [CLI](https://nodaro.ai/docs/developers/cli) runs one with `nodaro apps run`.

To reuse a workflow inside other workflows instead of as a form, publish it as a [component](https://nodaro.ai/docs/concepts/components-and-sub-workflows). A workflow can be published both as a MiniApp and as a component.

## Frequently asked questions

### What is a MiniApp in Nodaro?

A MiniApp is a workflow published as a simple app with its own URL. People fill in the inputs you chose and click Launch. Nodaro runs the workflow and shows them the results, without the canvas.

### Who pays for the runs of my MiniApp?

The person who runs the app pays with their own credits, and the Launch button shows the price first. On Nodaro Cloud you can also add a markup, which is added to your top-up balance as earnings.

### Do people see my prompts and settings?

They see only the inputs and results you put in the app. Your pre and post text is never shown to them, and the destinations of outbound nodes, such as a webhook address or a social account, cannot be changed by the people who run the app.

### How do I update a published MiniApp?

Change the workflow, then publish it again from the Present tab. The URL stays the same across versions, so links you already shared keep working.

### Can I put a MiniApp on my own website?

Yes. Copy the embed code from the app's card and add your website under Allowed Embed Domains. To build your own interface instead, your server can start runs and read the results through the REST API.
