> Canonical guide: https://developers.foxlight.ai/build/tutorials/video-studio/
> Contract snapshots: Skulk 2.0.0 (b0af39c79b6b7102b2478062904f1d7cc8619975); SDK 0.4.0 (31bb090b8f64689f87514e48385e22b6ad94a6c2). Check the installed runtime when versions differ.

# Build an application like Video Studio

You know how to call a model API. How do you turn that into an application people can discover, install and use through Skulk?

Video Studio is a worked example. It has a browser interface, a library of reference images and clips, prompt rewriting, a render queue and saved takes. It runs as a managed capability application and asks Skulk to run the model inference. This tutorial follows the actual implementation, then gives you a small SDK exercise to run yourself.

You do **not** need to understand distributed inference or implement an engine to write this kind of application.

## What you will learn

By the end, you should be able to explain and implement:

- A discoverable operation with typed input and output contracts.
- A managed child that authenticates to its host and answers health checks.
- A read-only plan that resolves a request before expensive work starts.
- A durable operation that survives a lost caller response and tracks an external job.
- Cancellation, restart and uncertain submission without silently duplicating work.
- Application-owned media and a browser interface discovered through Skulk.
- Tests that exercise these boundaries without needing a GPU for every run.

## Start with these words

| Word            | What it means here                                                                     |
| --------------- | -------------------------------------------------------------------------------------- |
| Fabric          | The Skulk cluster and its discoverable services and capabilities.                      |
| Capability      | A versioned operation a caller can discover and invoke, such as `video.plan`.          |
| Descriptor      | The capability's contract: identity, schemas, I/O mode and revision.                   |
| Plugin / bundle | The installable application package, its manifest and declared permissions.            |
| Managed child   | Your application's supervised process, communicating with its host through the SDK.    |
| Host / owner    | The component that launches, authenticates, supervises and admits calls to that child. |
| Operation       | A durable record of application work that lasts beyond one short invocation.           |
| Backend job     | The work accepted by another service—in Studio, a Skulk video-generation job.          |
| Surface         | An application interface declared by the bundle and reported ready by the child.       |

A capability is an API contract; a surface is an interface to an application. A plugin can provide both.

## Two ways to read

**New to capabilities?** Follow the chapters in order. First run [managed echo](https://developers.foxlight.ai/build/examples/echo/); later run the [local operation exercise](https://developers.foxlight.ai/build/tutorials/video-studio/workshop/). The exercise uses a fake backend, so it needs the SDK but no mounted model.

**Already building an application?** Start with [render lifecycle](https://developers.foxlight.ai/build/tutorials/video-studio/render-lifecycle/), [application interface](https://developers.foxlight.ai/build/tutorials/video-studio/application/) and [testing](https://developers.foxlight.ai/build/tutorials/video-studio/testing/).

| Chapter                                                                    | The question it answers                                    |
| -------------------------------------------------------------------------- | ---------------------------------------------------------- |
| [1. Application architecture](https://developers.foxlight.ai/build/tutorials/video-studio/architecture/) | What lives in my application, and what does Skulk do?      |
| [2. Contracts and manifests](https://developers.foxlight.ai/build/tutorials/video-studio/contracts/)     | How does a caller know what my application can do?         |
| [3. Startup and dispatch](https://developers.foxlight.ai/build/tutorials/video-studio/child/)            | What code runs when the host starts my process?            |
| [4. Planning and readiness](https://developers.foxlight.ai/build/tutorials/video-studio/planning/)       | How do I resolve and review work against the live cluster? |
| [5. Durable rendering](https://developers.foxlight.ai/build/tutorials/video-studio/render-lifecycle/)    | How does a short call safely start a long render?          |
| [6. Prompt refinement](https://developers.foxlight.ai/build/tutorials/video-studio/refinement/)          | How does a second model-powered workflow use the same SDK? |
| [7. Assets and saved takes](https://developers.foxlight.ai/build/tutorials/video-studio/assets/)         | Where do application files and durable state belong?       |
| [8. Browser interface](https://developers.foxlight.ai/build/tutorials/video-studio/application/)         | How does the UI reach the child and appear in Skulk?       |
| [9. Local SDK exercise](https://developers.foxlight.ai/build/tutorials/video-studio/workshop/)           | Can I run a durable operation without a GPU?               |
| [10. Testing and diagnosis](https://developers.foxlight.ai/build/tutorials/video-studio/testing/)        | How do I prove my integration works and find failures?     |
| [11. Packaging and installation](https://developers.foxlight.ai/build/tutorials/video-studio/packaging/) | How does source become a supervised, signed application?   |

## Code and prerequisites

Code blocks labelled `studio:...` are excerpts from Video Studio revision `5cf917fed8387943bec7b27eea882b598a73c3fe`. They belong in the surrounding Studio package and are **not standalone programs**. The local exercise is a separate, complete teaching example. Repository paths identify where to look when reading the Studio source.

The SDK interface is **0.4.0**, Python **3.13+**. Check [current SDK availability](https://developers.foxlight.ai/build/get-sdk/) before trying installation; this guide does not assume a public package index exists. A working Studio deployment also needs a compatible managed host and a qualified, mounted video model. Prompt refinement needs ready chat capacity as well.

[Foxlight Docs](https://docs.foxlight.ai/skulk/next/) owns Skulk installation, model setup and the normative HTTP API. This tutorial teaches the application integration rather than maintaining another copy of those contracts.
