Skip to content

Assets

Assets are the media files used in your project: audio, video, images, MIDI, face animation data, and Fountain screenplays. The Asset Module is the single source of truth for all project assets, merging the project’s asset index with the file system to give you a unified view.

Toggle the Asset Manager panel with A or from the footer bar.

ActionShortcutCommand ID
Toggle Asset ManagerAassets:toggle-modal
Sync to Cloud⌘⇧Yassets:syncToR2

The Asset Manager displays a folder view of your project directory, merging two sources:

  1. File system — Files and folders on disk within the project root
  2. Project index — Asset metadata stored in the .plin file

Each item shows:

PropertyDescription
NameFile or folder name
TypeDetected from file extension (audio, video, image, MIDI, face, script)
SizeFile size in bytes
IconNative OS file icon (cached for performance)
In ProjectWhether this file has an Asset entry in the project index
MissingWhether an Asset entry exists but the file is not on disk

Hidden files (starting with . or _) are automatically excluded.

The Asset Manager supports folder navigation with breadcrumb UI:

ActionDescription
Click folderNavigate into that folder
Click breadcrumbJump to any parent folder
Navigate UpGo to parent folder
Navigate to RootReturn to the project root

Import files from your filesystem into the project:

ActionCommand IDDescription
Import fileassets:importCopy an external file into the project and create an Asset entry
Import dataassets:import-dataImport raw data (used by AI generation pipelines)

When you import a file:

  1. The file is copied to the appropriate subfolder based on its type:

    ExtensionTarget Folder
    .wav, .mp3, .aiff, .flac, .ogg, .m4aaudio/
    .mp4, .mov, .avi, .mkv, .webmvideo/
    .png, .jpg, .jpeg, .gif, .webp, .bmp, .tiffvideo/
    .mid, .midimidi/
  2. An Asset entry is created with:

    • Unique ID (asset_{uuid})
    • Detected MIME type
    • Audio metadata (sample rate, channels, frame count, duration) for audio files
    • Video metadata (fps, resolution, frame count) for video files
    • MD5 hash for cloud sync
  3. For audio assets, the file is cached to PC32 planar format at the project sample rate for real-time playback

  4. Waveform LODs are generated asynchronously for audio timeline display

If a file with the same name already exists, Plinken appends a number suffix (e.g., drums 1.wav).

TypeExtensionsDescription
Audiowav, mp3, ogg, flac, aiff, aif, m4a, aacAudio clips for playback and recording
Videomp4, m4v, mov, avi, webm, mkvVideo clips synced to timeline
Imagepng, jpg, jpeg, gif, webp, bmp, tiff, tifImages for compositor or reference
MIDImid, midiMIDI note data
FacepfaceARKit blendshape animation data
ScriptfountainFountain screenplay files

For audio assets, Plinken reads:

PropertyDescription
sample_rateSample rate in Hz
channelsNumber of audio channels
framesTotal sample frame count
durationDuration in seconds

For video assets (macOS), Plinken probes using AVFoundation:

PropertyDescription
video_fpsFrames per second
video_framesTotal video frame count
video_widthPixel width
video_heightPixel height
audio_sample_rateEmbedded audio sample rate
audio_channelsEmbedded audio channels
audio_framesEmbedded audio frame count
durationTotal duration in seconds

Create new folders within your project directory:

ActionCommand ID
Create Folderassets:create-folder

Payload:

{
"name": "Stems",
"parentPath": "audio"
}

Rename files or folders in the project:

  • Validates that the new name is non-empty and contains no path separators
  • Checks for naming conflicts before renaming
  • Updates the icon cache automatically

Delete files or folders from the project:

  • Removes the file from disk
  • Removes the matching Asset entry from the project index
  • Clears the loaded audio cache for audio assets
  • If the file is missing on disk, removes the orphan metadata entry

Open any asset in the default OS application (Preview, QuickTime, Finder, etc.):

ActionCommand ID
Open Assetasset:open

When a project loads, all audio assets are cached to PC32 (32-bit float planar) format at the project sample rate. This enables:

  • Zero-latency playback — Pre-converted audio plays instantly
  • Sample-rate matching — All audio is resampled to the project rate
  • Content-addressed storage — Cache files are keyed by a hash of the asset ID, so identical assets share cache entries

The cache is stored in the Plinken application data directory, separate from the project.

Sync assets to Cloudflare R2 cloud storage for backup and multi-device access.

ActionShortcutCommand ID
Sync to Cloud⌘⇧Yassets:syncToR2
Sync from Cloudassets:syncFromR2
  1. Compute MD5 — Each asset’s content is hashed
  2. Check remote — Compare against already-uploaded assets
  3. Upload/Download — Only transfer files that differ
  4. Content-addressed — Files are stored at {spaceId}/assets/{md5}.{ext}

Sync requires a linked Space and valid R2 credentials.

-- Toggle the asset manager
pl.cmd("assets:toggle-modal")
-- Import a file
pl.cmd("assets:import", {
sourcePath = "/Users/me/Desktop/drums.wav",
targetFolder = "audio"
})
-- Create a folder
pl.cmd("assets:create-folder", {
name = "Stems",
parentPath = "audio"
})
-- Open an asset in the OS
pl.cmd("asset:open", { name = "vocals.wav" })
-- Sync to cloud
pl.cmd("assets:syncToR2", { spaceId = "my-space" })