Suture for Video Editors

The Problem

Non-linear editors (NLEs) like DaVinci Resolve, Adobe Premiere, and Avid Media Composer have no built-in version control. When a team shares a timeline, the workflow looks like this:


Project_v1.drp
Project_v1_JANE_edit.drp
Project_v1_JANE_edit_FINAL.drp
Project_v1_JANE_edit_FINAL_v2_REAL.drp
Project_v2_MIKE_color.drp

Nobody knows what changed between versions. Merging two editors' work means manually replaying edits by hand. There's no way to answer "what did Jane change in the color grade last Tuesday?"

How Suture Helps

Suture understands OpenTimelineIO (OTIO) timelines — the industry-standard interchange format for editorial data. It tracks changes at the clip and track level:

  • Clip reorders, trims, and replacements
  • Grade and effect changes
  • Audio track modifications
  • Marker and metadata edits

When two editors work on the same timeline, Suture merges non-overlapping changes automatically. If Jane retimes a clip on V2 while Mike adjusts audio on A1, both changes land cleanly.

Example: Timeline Diff


$ suture diff HEAD~1 timeline.otio

 track: V1
   clip "Interview_A" @ 00:01:12:00
-    duration: 00:00:15:00
+    duration: 00:00:12:08        ← trimmed 2s04f
+    effect: "FilmLook_v3"        ← new grade applied

 track: A1
   clip "Ambience_Wind"
-    gain: -6.0 dB
+    gain: -3.0 dB                ← raised 3 dB

2 clips changed, 0 conflicts

5-Minute Setup

1. Install Suture

cargo install suture-cli

2. Initialize a project

mkdir my-project && cd my-project
suture init
suture config user.name "Jane Editor"

3. Import your timeline

Export from your NLE as OTIO, or use the FUSE mount:

# Option A: Copy exported OTIO file
cp /path/to/export/timeline.otio .
suture add . && suture commit "initial assembly"

# Option B: Mount and work directly (editors save to the mount)
suture vfs mount . /mnt/project
# Now your NLE can open files from /mnt/project

4. Branch and experiment

suture branch try-alt-music
suture checkout try-alt-music
# Edit timeline — swap music track, adjust timing
suture add . && suture commit "alt music track with crossfade"

suture checkout main
# Make different edits on main
suture add . && suture commit "tighten act 2 by 4 seconds"

# Merge — non-overlapping edits combine cleanly
suture merge try-alt-music

5. Review history

suture log --oneline
suture diff HEAD~2 timeline.otio
suture blame timeline.otio   # who changed each clip, when

Comparison

SutureManual file namingNo version control See what changedYes — clip-level diffNo — must open both filesNo Merge two editors' workAutomatic for non-overlapping editsManual replayManual replay History / blameFull commit log with per-clip attributionFolder full of filesNone Undo a specific changesuture revertFind old file, copy backImpossible CollaborationPush/pull via Suture HubDropbox/Drive syncDrive/email

NLE Integration

  • FUSE mount: Mount the Suture repo as a directory. Your NLE opens and saves files normally. Every save becomes a commit.
  • WebDAV mount: Cross-platform alternative (macOS Finder, Windows Explorer).
  • OTIO round-trip: Export from Premiere/Resolve as OTIO, version with Suture, re-import.

See Also