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; later run the local operation exercise. The exercise uses a fake backend, so it needs the SDK but no mounted model.
Already building an application? Start with render lifecycle, application interface and testing.
| Chapter | The question it answers |
|---|---|
| 1. Application architecture | What lives in my application, and what does Skulk™ do? |
| 2. Contracts and manifests | How does a caller know what my application can do? |
| 3. Startup and dispatch | What code runs when the host starts my process? |
| 4. Planning and readiness | How do I resolve and review work against the live cluster? |
| 5. Durable rendering | How does a short call safely start a long render? |
| 6. Prompt refinement | How does a second model-powered workflow use the same SDK? |
| 7. Assets and saved takes | Where do application files and durable state belong? |
| 8. Browser interface | How does the UI reach the child and appear in Skulk™? |
| 9. Local SDK exercise | Can I run a durable operation without a GPU? |
| 10. Testing and diagnosis | How do I prove my integration works and find failures? |
| 11. Packaging and installation | 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 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 owns Skulk™ installation, model setup and the normative HTTP API. This tutorial teaches the application integration rather than maintaining another copy of those contracts.