Asset Manager

The Asset Manager is the centralized service that handles the entire lifecycle of media in a WATCHOUT 7 show — from ingesting source files, through optimization (transcoding to GPU-friendly playback codecs), to distributing the results across every display server on the network. Every show has exactly one Asset Manager, and understanding how it works is essential for managing media at any scale.

How the Asset Pipeline Works

When a source file is added to the show — whether by drag-and-drop, the Web UI, or a watched folder — it passes through a multi-stage pipeline before it reaches the display servers:

  1. Upload — the source file is copied into the Asset Manager's internal storage, organized by asset UUID. The asset state changes to Uploading with tracked progress.
  2. Pending — the asset is queued and waiting to be optimized. The asset state shows as Pending (hourglass icon in the Assets window).
  3. Optimization — the optimizer transcodes the source into a GPU-friendly playback codec (HAP by default). The asset state changes to Optimizing. Optimized data is stored as content-addressed chunks using Blake3 hashes, enabling deduplication across assets.
  4. New — the asset is optimized and ready to be used in WATCHOUT shows. The asset state shows as New (star icon) until it has been viewed or used.
  5. Storage — both the original source and the optimized output are retained. The asset database (assetdb.json) is updated atomically to prevent corruption. Each asset's storage is split into exclusive data (unique to that asset) and shared data (deduplicated chunks referenced by multiple assets).
  6. Distribution — when the show goes online, optimized assets are transferred to each Runner (display server) over the network. Runners use 2 concurrent download workers to pull data from the Asset Manager on port 3023.
State: Idle
Click Simulate to watch a file travel through the four pipeline stages: Upload, Optimization, Storage, and Distribution. Hover over any stage for details.

Only one Asset Manager can serve a show at a time. If the Asset Manager node goes offline, no new assets can be added, optimized, or distributed until it is restored. Plan your network topology accordingly — the Asset Manager node should be your most reliable machine.

Optimization Priority

The optimizer processes assets in a priority order based on type. Assets that are least efficient to stream in their raw form are prioritized highest:

PriorityAsset TypeReason
HighestImageSmall, fast to optimize — clear the queue quickly
HighOther (Model, Font, etc.)Lightweight processing
MediumAudioModerate processing time
LowVideoLonger transcoding, but source is already streamable
LowestImage SequenceThousands of individual frames require the most processing time

This ordering ensures that quick-to-process assets are available sooner, while long-running video and sequence optimizations proceed in the background.

The Assets Window

The Assets window is the primary interface for browsing and managing media. Open it from Window → Assets or press Ctrl+2.

The window displays assets in a tree table with the following default columns:

  • Name — file name, with an icon indicating asset type and status.
  • Image — thumbnail preview (shown for video, image, SVG, composition, and font assets).
  • Dimensions — pixel resolution (width × height) or 3D bounding box.
  • Duration — length for video and audio assets (HH:MM:SS.ms).
  • Date — creation or modification timestamp.

Additional columns can be enabled from the column menu (gear icon in the top-right corner):

  • Type — the asset kind (Video, Image, Audio, etc.).
  • FPS — frame rate for video assets.
  • Codec — the optimized or original codec name.
  • Color Space — color space and transfer function (e.g. Rec. 709, sRGB, Rec. 2100 PQ).
  • Channels — audio channel count.
  • Original Path — the source file location on disk.

Asset Status Indicators

Each asset displays a status icon next to its name:

  • Star — the asset is new (not yet clicked or viewed since it was added).
  • Hourglass — the asset is pending optimization (waiting in the queue).
  • Upload arrow — the asset is currently being uploaded to the Asset Manager.
  • Gears — the asset is currently being optimized.
  • Recycle icon — the asset is a dynamic (auto-updating) asset.
  • Progress bar — a linear progress bar appears beneath the name during upload or optimization.

Assets that failed to optimize are shown with a red name. Select the asset and check the Properties panel for error details — the Fail state includes a specific error message from the optimizer.

Missing Assets

An asset is considered missing when the Asset Manager can no longer locate its original source file — typically because the file was moved, renamed, or deleted from disk. Missing assets are shown with a warning indicator in the Assets window, making them easy to identify before showtime.

Missing assets cannot be re-optimized or re-distributed. To resolve, either restore the original file to its expected path, or re-add the correct source file and update any cues that reference the missing asset.

Creating Asset Versions

Create Version is available as a standalone action in the Assets window context menu (New → Create Version). It clones the selected asset with a new name, allowing you to maintain multiple content variants for the same cue slot — for example, different language versions of a title card or alternate color grades of a video. Asset versions share the same cue references, making it easy to swap between variants without re-building the timeline.

Adding Assets

There are several ways to add media to a show:

  • Drag and drop — drag files directly from your file manager into the Assets window. Drop onto a folder row to place them in that folder.
  • Add Media File — right-click in the Assets window and choose New → Add Media File, or use the menu shortcut. A file browser opens to select one or more files.
  • Add Image Sequence — right-click and choose New → Add Image Sequence, then select the folder containing the numbered frames (see Image Sequences).
  • Asset Watcher — configure watched folders that automatically import new or changed files (see Asset Watcher).
  • Web User Interface — upload files remotely through the browser-based interface at http://:3023 (see Web User Interface).

When a single folder or dynamic asset is selected, newly added files are placed inside that folder automatically.

Organizing Assets with Folders

Create folders to keep large shows organized:

  1. Right-click in the Assets window and choose New → New Folder.
  2. Enter a name and press OK.
  3. Drag assets into the folder to move them.

Folder operations:

  • Collapse All Folders / Expand All Folders — available from the context menu to quickly navigate large asset trees.
  • Drag and drop reorder — drag assets or folders to reorder them within the same parent.
  • Folder open/closed states are remembered per-node and persist between sessions.

Composition and dynamic asset folders are special containers managed by the system. You cannot move assets into or out of composition folders, and dynamic asset folders enforce strict versioning rules. See Dynamic Assets for details.

Searching and Filtering

Click the magnifying glass icon (or press Ctrl+F when the Assets window is active) to open the search panel.

The search panel provides:

  • Text search — type one or more keywords. The list filters to assets whose name or folder path contains all keywords (case-insensitive).
  • Type filter — restrict results by asset type: All, Video, Image, Audio, Model, Other, Failed, Used, or Unused.
  • Only New — show only assets that haven't been viewed yet.
  • Only Selected Cues — show only assets referenced by currently selected cues.
  • Preparing — show only assets that are currently uploading or optimizing.

When a search or type filter is active, folders expand automatically so matching assets are visible. Press Escape to clear the search and restore the previous folder state.

Sorting

Click any sortable column header to sort the asset list by that column. Click again to reverse the sort direction. When a column sort is active, the tree view temporarily flattens into a flat list — folder hierarchy is restored when sorting is cleared.

Context Menu

Right-click in the Assets window to access:

  • New — create folders, shapes (Rectangle, Ellipse, Text), Art-Net fixtures, dynamic assets, or asset versions.
  • Delete — remove selected assets (with confirmation). Assets currently in use on the timeline require additional confirmation.
  • Find Cues — select all cues on the timeline that reference the selected asset(s).
  • Collapse/Expand All Folders — toggle folder visibility.
  • Asset Manager Settings — open the codec and optimization settings dialog (see Asset Manager Settings).
  • Transfer Assets — export selected or all assets, import from another location, or cache assets on specific Runners (see Asset Transfer and Import, Export, and Mapping).
  • Asset Web — open the web-based asset management interface in your browser.

Keyboard Navigation

KeyAction
Up / Down arrowsMove selection through the asset list
Left / Right arrowsCollapse or expand folders
Home / EndJump to the first or last asset
EnterOpen the Properties panel for the selected asset
DeleteDelete the selected asset(s)
EscapeClear the search and deselect all assets
Ctrl+ASelect all visible assets
Ctrl+FOpen the search panel

Relationship to Other Systems

The Asset Manager interacts with several other WATCHOUT components:

ComponentInteraction
DirectorCoordinates asset version upgrades across Runners; forwards show updates that reference new or changed assets
RunnerDownloads optimized assets from the Asset Manager; uses previously downloaded versions as substitutes while new versions transfer
ProducerProvides the UI for the Assets window; sends add/delete/organize commands to the Asset Manager
OptimizerRuns as a subprocess of the Asset Manager; transcodes source files to playback codecs
Web UIEmbedded web server (port 3023) serving an upload and browse interface
Asset WatcherMonitors file system folders for new/changed files and triggers automatic import

The Asset Manager also exposes a Server-Sent Events (SSE) endpoint at /sse that provides real-time state updates to connected clients (including the Producer's Assets window). A heartbeat ping is sent every 10 seconds to keep connections alive.

Best Practices

  • Name assets consistently. Establish a naming convention early (e.g., SCENE_ELEMENT_VERSION.ext) and enforce it across the team. Consistent naming makes search filters effective and keeps large asset trees navigable.
  • Organize by scene or zone, not by type. Grouping assets by where they appear in the show (e.g., Act1/, Lobby/, MainStage/) is generally more useful than grouping by format (e.g., Videos/, Images/), since you typically work on one scene at a time.
  • Pre-optimize before show day. Large shows with hundreds of video assets can take hours to optimize. Add all media well before the first rehearsal and verify that every asset reaches the Ok state. Do not rely on real-time optimization during a live event.
  • Plan disk space. HAP-encoded video is significantly larger than the source file (typically 3–10× larger depending on codec and quality). Ensure the Asset Manager node and all Runners have sufficient storage. Use the asset footprint information (exclusive + shared bytes) to estimate requirements.
  • Use the dedicated network. Asset transfers saturate network bandwidth. Isolate WATCHOUT traffic on a dedicated network segment, and use 10 Gbps links for large shows.
  • Monitor optimization status. Use the Preparing filter to watch for assets stuck in the optimization queue. A red asset name indicates a failure — check the error in the Properties panel and re-add the asset or change codec settings.

Troubleshooting

ProblemCauseFix
Asset stays in Optimizing state indefinitelyThe optimizer process may have crashed or the source file is corruptCheck the Runner logs for optimizer errors; try re-adding the asset; verify the source file plays in a media player
Asset name is red (failed state)The optimizer could not process the source file — unsupported codec, corrupt data, or insufficient disk spaceOpen the Properties panel to read the specific error message; re-encode the source in a supported format; check disk space
Assets not appearing on RunnersTransfer has not started (show not online) or bandwidth limit is too restrictiveVerify the show is online; check bandwidth limit in Asset Manager Settings; verify network connectivity to each Runner
Uploaded file via Web UI doesn't appearUpload still in progress, or browser connection was interruptedCheck the web UI at http://:3023 for upload status; retry the upload; check that the Asset Manager service is running
Duplicate assets after re-importAssets imported from an export package already exist in the showUse the asset UUID to identify duplicates; delete the older copies after verifying the new ones are fully optimized
Optimization is very slowLarge video files or image sequences with thousands of framesThis is expected behavior — see the optimization priority table. Pre-optimize overnight for large shows