---
title: Publish a workflow as an App
display: '*Publish* a workflow as an App'
nav_title: Publish an App
summary:
  - "Turn a working workflow into an App: pinned nodes become a form, everything else stays fixed behind it."
  - "Expose as little as possible, and run the workflow on three different inputs before you publish."
  - "Start from Edit App at the top right of the editor; an Output Example image is required."
description: "Turn a working workflow into an App: pin the inputs and output, mark fields required or optional, write descriptions, add previews, test and share."
section: workflows
order: 110
type: guide
level: Build
roles: [all]
time: { read: 7, do: 20 }
needs: ["A workflow in your project that runs correctly", "One good output image to use as a preview"]
last_verified: 2026-11-11
related: [run-and-share-apps, build-your-first-workflow, platform-workflows-and-templates, team-asset-pipeline-app, run-workflows-from-code-and-agents]
articles: [publish-a-workflow-as-an-app, run-and-share-apps, platform-workflows-and-templates, debug-a-workflow, run-workflows-from-code-and-agents]
thumb: workflows/publish-a-workflow-as-an-app/thumb.webp
video: tutorials/publish-a-workflow-as-an-app.mp4
video_caption: "Publish a workflow as an App"
chapters:
  - { at: 0, title: "The App to publish", image: "/media/images/workflows/publish-a-workflow-as-an-app/ch-01-the-app-to-publish.webp" }
  - { at: 18.5, title: "Open the workflow", image: "/media/images/workflows/publish-a-workflow-as-an-app/ch-02-open-the-workflow.webp" }
  - { at: 27, title: "Turn on App mode", image: "/media/images/workflows/publish-a-workflow-as-an-app/ch-03-turn-on-app-mode.webp" }
  - { at: 41.5, title: "Pin the output", image: "/media/images/workflows/publish-a-workflow-as-an-app/ch-04-pin-the-output.webp" }
  - { at: 54, title: "Describe it", image: "/media/images/workflows/publish-a-workflow-as-an-app/ch-05-describe-it.webp" }
  - { at: 63, title: "Add examples", image: "/media/images/workflows/publish-a-workflow-as-an-app/ch-06-add-examples.webp" }
  - { at: 76.5, title: "Lock it", image: "/media/images/workflows/publish-a-workflow-as-an-app/ch-07-lock-it.webp" }
  - { at: 87.5, title: "Open the App", image: "/media/images/workflows/publish-a-workflow-as-an-app/ch-08-open-the-app.webp" }
  - { at: 101.5, title: "Generate", image: "/media/images/workflows/publish-a-workflow-as-an-app/ch-09-generate.webp" }
steps:
  - title: "Turn on App mode"
    text: "Open **Anatomy reference sheets** from the **Project** tab, click **Switch to Edit Mode**, then **Edit App** at the top right. Every node gets a pin."
  - title: "Pin the input"
    text: "Click the pin on **1. Character Illustration** and keep its star filled, so the field is required. The top bar reads **1 Input**."
  - title: "Pin the output"
    text: "Pin **Image Studio 1**, the node that makes the reference sheet. Everything else stays hidden inside the App."
  - title: "Describe it"
    text: "Click **Edit App** again. Keep the **Name**, write a one-line **Short Description** and a 20 to 30 word **Description** of what to upload and what comes out."
  - title: "Add examples"
    text: "Add the character as the **Input Example** and her reference sheet as the **Output Example**, which is required to publish."
  - title: "Publish"
    text: "Click **Publish App**. **Edit App** shows a green dot, and the **...** menu gains **Open App** and **Delete App**."
  - title: "Lock the workflow"
    text: "Open the **...** menu at the top right and choose **Lock Workflow**, so members can run it but not change it."
  - title: "Open the App as the team will"
    text: "Open **Workflows** › **Apps**, **Project** tab, and click the App's card: one field, **1. Character Illustration**, and the examples on the right."
  - title: "Run it on a new character"
    text: "Pick a character the workflow hasn't seen, here Queen Pip, with **Select from Library**, check the estimate on **Generate** and click it."
agent_steps:
  - title: "Publish the App in the web app"
    text: "Pinning the input and output, the description, the examples, **Publish App** and **Lock Workflow** are done in the workflow editor, as in the web app steps. Once the App is published, an agent can run it like any workflow."
  - title: "Connect the Scenario MCP"
    text: "Connect your agent and sign in once at [mcp.scenario.com](https://mcp.scenario.com). Then tell it which Scenario team and project to use, so every file lands there."
  - title: "Give the agent the files"
    text: "A character the workflow has never seen, here Queen Pip. Give the agent her asset ID, or upload the image with upload_asset; file inputs take asset IDs."
  - title: "Brief the agent"
    prompt: |-
      Find the "Anatomy reference sheets" App in this project with workflows_list. Read its inputs with workflow_get and tell me their names and which are required.

      Run it with workflow_run, with Queen Pip's image as the character input and nothing else. Quote the cost with a dry run first and wait for my go.
      When it finishes, show me the reference sheet with asset_display.
  - title: "Check and redo"
    text: "Accept when the sheet holds four views of the new character side by side (anatomy sketch, pencil sketch, gray sculpt, textured sculpt) in the same pose, with nothing cropped. Fix what breaks inside the workflow in the web app, not in the request."
    prompt: |-
      Check the sheet: four views, in reading order, edge to edge, the same pose and every piece of gear in each, and her own colors on the textured sculpt. Tell me which view fails and why. Don't rerun until I say so.
  - title: "File the results and report"
    prompt: |-
      Add the reference sheet to a collection called "Anatomy reference sheets" (create it if it doesn't exist). Report the App's workflow ID, the input names you used, the result's asset ID and the total cost spent.
updated: 2026-11-11
canonical: https://learn.scenario.com/workflows/publish-a-workflow-as-an-app
---

Last updated: 2026-11-11

# Publish a workflow as an App

> Turn a working workflow into an App: pin the inputs and output, mark fields required or optional, write descriptions, add previews, test and share.

In short:

- Turn a working workflow into an App: pinned nodes become a form, everything else stays fixed behind it.
- Expose as little as possible, and run the workflow on three different inputs before you publish.
- Start from Edit App at the top right of the editor; an Output Example image is required.


An App is a workflow with a simple form in front of it. People fill in the fields you choose and click **Generate**; the prompts, models and layout stay fixed inside. In this lesson you publish **Anatomy reference sheets** as an App with one input (a character image) and one output (the reference sheet), lock the workflow, and run the App as a teammate would, on a character it has never seen.

:::note As of November 2026
The models, settings and screens in this article are the ones Scenario offered in November 2026. New models and updates arrive often, so check the app for newer options before you choose.
:::

:::steps Quick version
1. Open the workflow from the **Project** tab, click **Switch to Edit Mode**, then **Edit App** at the top right.
2. Pin the input node the user should fill, and keep its star filled so it is required. Pin the node whose result is the deliverable.
3. Click **Edit App** again. Keep the **Name**, write a **Short Description** and a **Description**, and add an **Input Example** and an **Output Example**.
4. Click **Publish App**. Then open the **...** menu and choose **Lock Workflow**.
5. Open **Workflows** › **Apps**, **Project** tab, pick a new input and click **Generate**.
:::

## Before you start

- **A workflow that already works.** An App runs the workflow exactly as it is, so test it first, ideally on more than one input. This lesson uses the finished workflow from [Image and Video Studio](https://learn.scenario.com/workflows/compose-with-image-and-video-studio.md).
- **One good result** to use as the **Output Example**. You can't publish without it. The result of a run on the workflow is fine.
- **Where Apps live.** **Workflows** › **Apps** in the top bar. The **Platform** tab holds Apps Scenario has built; the **Project** tab holds your project's own.

| Part of the workflow | In the App |
|---|---|
| A pinned input node | A field of the form: a pinned Image node becomes an image field, a pinned Text node a text field |
| The star on a pinned input | Filled: required. Empty: optional |
| The pinned output | The result the App shows |
| Everything else: prompts, Prompt Builders, models, settings, the layout | Hidden. People running the App can't change it |

![On the left, a workflow in the editor: a Text node "Scene notes" and an Image node "Product photo" are pinned, an LLM Node and an Image Generator stay hidden, and a Final output node is pinned. An Edit App arrow leads to the App form on the right: Product photo marked required, Scene notes optional, a Generate button and a Result area with before and after and history](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/4397d2a989f13080761f92843176b6d9d6be80a43638d28a83cb44bfb63b0db5.svg "Pinned nodes become the form. Everything else stays behind it.")

## Step 1: Turn on App mode

Open **Anatomy reference sheets** from the **Project** tab and click **Switch to Edit Mode**. Then click **Edit App** at the top right.

The editor switches to App mode. Every node now has a pin, and the top bar shows what the App will have: **No Input** → **No Output** to begin with. The **X** next to **Edit App** leaves App mode.

![App mode: a pin on every node, and No Input and No Output in the top bar next to Edit App](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/c05a5ca30e621dc80d734ce3d570341996b43c2d4d9f4acec87d229912385bf8.webp)

## Step 2: Pin the input

Click the pin on **1. Character Illustration**. It becomes the form's only field, and the top bar now reads **1 Input**. The star next to the pin is filled, which makes the field required: the App won't run without a character.

Until an output is pinned too, the node shows **Please pin at least one output**. Every pinned input must lead to a pinned output.

![The character node pinned, with its star filled and the message Please pin at least one output; the top bar shows 1 Input and No Output](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/700a16e59876cd1ca2edef0f49270d42e7872c630a2efa7738562cc685d9eafc.webp)

## Step 3: Pin the output

Pin **Image Studio 1**, the node that makes the reference sheet. The top bar reads **1 Input** → **1 Output**.

Everything else stays inside: the style prompts, the framing rule, the Prompt Builders, the four generators and the layout of the sheet. People running the App see one field and one result.

![1 Input and 1 Output in the top bar, with the character and Image Studio 1 pinned and every other node unpinned](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/73756d27b36799e87f1ff49e17ee92a53d3a25fe05fd8e776931c4d42faf5b0f.webp)

Expose as little as possible: each extra field is another way for a run to go wrong.

| Expose | Keep inside |
|---|---|
| The source image or file | The model on every generator |
| A short optional note, only if people need it | The prompts and Prompt Builder templates |
| A choice that really changes from run to run | Quality, dimensions and number of results |

## Step 4: Describe it

Click **Edit App** again to open the details. The **Edit App** dialog says "Configure how this workflow appears as an app."

- **Name:** keep the workflow's name, **Anatomy reference sheets**.
- **Short Description** (optional): one line, shown as the App's heading.
- **Description** (optional): what the App makes, what to upload and what comes out, in 20 to 30 words.

The film uses:

```text
Turns one character into four reference sheets.
```

```text
Drop in one full-body character image. You get one wide sheet: an anatomy sketch, a pencil sketch, a gray sculpt and a textured sculpt, all in the same pose.
```

## Step 5: Add examples

Under "Upload up to two images showing the app's input and output", add:

- **Input Example (optional):** the character, so people see what a good input looks like.
- **Output Example:** her reference sheet. It's required: **Publish App** stays unavailable until it's there.

Each slot takes **Drag & drop or paste**, a pick from your library or an upload.

![The Edit App dialog with the name, short description, description, the character as Input Example and her reference sheet as Output Example](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/98f176f28c6e42dac916e82cc67906ae100ee907e7f7d923255ca181ccfab515.webp)

## Step 6: Publish

Click **Publish App**. **Cancel** closes the dialog without publishing. Once the App is published, **Edit App** shows a green dot, and the **...** menu gains **Open App** and **Delete App**.

## Step 7: Lock the workflow

Open the **...** menu at the top right and choose **Lock Workflow**. Project members can still run the workflow and the App, but nobody can change the App by editing the graph by mistake.

![The workflow menu after publishing: View Outputs, Open App, Delete App, Lock Workflow and the other workflow actions](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/91d5782d0712893cb0366cbadb383849ea17c9496f3f44f3fb803d0396d0d9d4.webp)

## Step 8: Open the App as the team will

In the top bar, open **Workflows** › **Apps**, then the **Project** tab. Click the App's card.

![The Apps page: Ready-made AI workflows for creative tasks, run in one click, with the Platform and Project tabs](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/1e3f7b8b9580079c13c002712847abf1d29f61cd7ddd1d302c07d1a2b77d54cc.webp)

The App opens with your short description as its heading, the description under it, and one field, **1. Character Illustration**, with **Drag & drop or paste**, **Select from Library** and **Upload**. **Generate** stays unavailable until the required field is filled. On the right, the examples show what comes out.

![The App form: the description, the 1. Character Illustration field with Drag & drop or paste, Select from Library and Upload, and Generate](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/685f5a614d850598b6e7244690bdeff46042c872c5ddaa8e40b5a9ce574fcbb0.webp)

## Step 9: Run it on a new character

Pick a character the workflow hasn't seen: here Queen Pip, from the library, with **Select from Library**. Click **Generate**. The estimate is on the button.

![The App with Queen Pip in the 1. Character Illustration field and the Generate button](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/7210f01ba6ef5fa93804f35b74cb63bb3c0cd97bc8432d8472d32a18db8f5109.webp)

A couple of minutes later the same four sheets come back for a brand new character, with nothing to set up. The zoom controls under the result let you check the detail. Thumbnails of every result made with the App collect under the main result.

![The App's result: an anatomy sketch, a pencil sketch, a gray sculpt and a textured sculpt of Queen Pip on one sheet](https://ufgc0c9mhl4ueq76.public.blob.vercel-storage.com/academy/58a80932452a590cdd8d019a47d372f86d77139cba42cd5a62299af54771f79e.webp)

:::check
**Accept when:** the App shows only the fields you pinned, with clear names; required fields are marked; the examples show a real input and its output; a teammate can run it from the description alone and get a usable result on the first try, on an input the workflow has never seen.
**Reject when:** a field is named `Image 1` or `Text 2`; the App exposes a model or setting nobody should change; the description doesn't say what to upload; the result shown is an in-between node, not the deliverable.
:::

## Test it like a teammate

Run the App three ways before you share it:

1. **A good input** and nothing else.
2. **A difficult input:** a busy background, an odd angle, a small image.
3. **The optional fields,** if any: empty, then with something unplanned in them.

Fix what breaks inside the workflow, not in the description. If the App needs a person to choose before an expensive step, add an **Approval** node or **Slice Items** in **Choose** mode: the picker also appears in the App during the run. See [Approval and review steps](https://learn.scenario.com/workflows/approval-and-review-steps.md).

## Share and maintain

- **Who sees it.** Apps you publish in a project appear on the **Project** tab of **Apps** for that project's members. See [Run and share Apps](https://learn.scenario.com/workflows/run-and-share-apps.md).
- **Change it safely.** To change the App later, edit the workflow behind it (unlock it first), run it on the same inputs as before, and lock it again. To try a new model, work in a duplicate first (**Duplicate Workflow**) and compare.
- **Learn from the platform.** Any App on the **Platform** tab opens its workflow with **Edit workflow** at its top right, so you can study how it's built and start your own from it.
- **Run it from code.** An App runs like any workflow, by ID with its input names. See [Run workflows from code and agents](https://learn.scenario.com/workflows/run-workflows-from-code-and-agents.md).

## Common problems

| What you see | What to do |
|---|---|
| **Publish App** is unavailable | Add an **Output Example**; it's required |
| The node says **Please pin at least one output** | Pin the node whose result is the deliverable. Every pinned input must lead to a pinned output |
| A field is missing from the App | Its node isn't pinned. Open **Edit App** and pin it |
| The App shows the wrong result | Another node is pinned as the output. Unpin it and pin the final node |
| **Generate** stays unavailable | A required field is empty. Fill every field with a filled star |
| Runs fail when an optional field is empty | A node downstream needs text. Give the field a default, or route the empty case with **If-Else** |
| Results changed after a teammate edited the graph | Lock the workflow with **Lock Workflow**, and check the models against the version you tested |

## What's next

That's the course: you built a real workflow from an empty canvas and shipped it to your team as an App. To share Apps and run them across a project, read [Run and share Apps](https://learn.scenario.com/workflows/run-and-share-apps.md). To start from Scenario's own pipelines, see [Platform workflows and templates](https://learn.scenario.com/workflows/platform-workflows-and-templates.md).

Source: https://learn.scenario.com/workflows/publish-a-workflow-as-an-app
