I indexed 37h of my YouTube library using an RTX 4090 and local ML models in 24h

by Ilias Haddad

Following my recent blog post and Hacker News post. where I ran the desktop app on my M1 Max. Today, I’m using the self-hosted version running in Docker with an NVIDIA RTX 4090 (24 GB VRAM).

The content is also fundamentally more demanding: long podcast episodes with at least two faces in every frame, coding tutorials packed with on-screen text, and screen recordings. GoPro footage is mostly wide outdoor shots.

But NVIDIA was faster than my M1 Max.

Here’s the full spec of the rented server:

Screenshot_2026-06-28_at_10.47.13.png

Here’s my YouTube channel: https://www.youtube.com/@iliashaddad_dev

The key difference from the GoPro run: this time I used the source-available Docker version (github.com/IliasHad/edit-mind) rather than the desktop app, running on a machine with an RTX 4090 and CUDA 12.8.0 (I rented from a cloud provider)

Summary

MetricValue
Edit Mind versionv0.30.0
HardwareNVIDIA RTX 4090 (24 GB VRAM)
RuntimeDocker + CUDA 12.8.0
Videos indexed87
Total footage duration37h 37m 56s
Total compute time24h 13m 1s
Total frames analyzed54,054

The indexing process

The self-hosted version runs the same pipeline as the desktop app. Point it at a folder, and it works through each video in stages:

  1. Transcription: the full audio track is transcribed using OpenAI Whisper
  2. Frame analysis: the video is divided into scenes (1-2.5 seconds), and each frame runs through a set of ML plugins: face recognition, on-screen text detection, object detection, scene description, dominant color, and shot type
  3. Embedding: scene data is embedded into a local vector database across three collections: text, visual, and audio

Stage breakdown

StageTotalAvg/video% of compute
Frame analysis20h 41m 30s14m 26s85.4%
Transcription1h 26m 36s1m 0s6.0%
Audio embedding54m 13s37s3.7%
Visual embedding42m 8s29s2.9%
Text embedding27m 14s19s1.9%
Scene creation1m 20s< 1s0.1%
  • Coding tutorials and screen recordings: TextDetectionPlugin It is the most expensive plugin
  • Podcast and interview episodes: FaceRecognitionPlugin and DescriptorPlugin dominate, the face model runs significantly harder than it ever does on my GoPro videos.

Fastest video

A Day in the Life of a Remote Software Engineer in Malaysia | Work, Life, and Culture.mp4

MetricValue
Footage duration4m 25s
Total compute time1m 7s
Speed ratio0.25×
Frames analyzed107
Frame analysis time49s
Transcription time6s

Slowest video

Note: (excl. short clips)

Ep 08: Interview with Scott Tolinski, founder of LevelUpTutorials and co-host of the Syntax podcast.mp4

MetricValue
Footage duration58m 45s
Total compute time53m 52s
Speed ratio0.917×
Frames analyzed1,411
Frame analysis time47m 32s
Transcription time3m 33s

Frame analysis plugin averages

PluginAvg duration/videoAvg time/frame
DescriptorPlugin127.6s0.293s
TextDetectionPlugin120.6s0.277s
FaceRecognitionPlugin103.7s0.238s
DominantColorPlugin13.5s0.031s
ObjectDetectionPlugin5.8s0.013s
ShotTypePlugin0.03s< 0.001s

Longest video

EP 10: Building a Shopify App In Public (Part 1).mp4

MetricValue
Footage duration3h 12m 9s
Total compute time1h 52m 43s
Speed ratio0.587×
Frames analyzed4,612
Frame analysis time1h 40m 59s
Transcription time4m 17s

Plugin breakdown:

PluginTimeTime/frame% of frame analysis
TextDetectionPlugin1h 8m 47s0.895s68.1%
DescriptorPlugin23m 34s0.307s23.4%
FaceRecognitionPlugin3m 42s0.048s3.7%
DominantColorPlugin1m 52s0.024s1.9%
ObjectDetectionPlugin46s0.010s0.8%

Here are a couple of example video clips using these prompts:

Generate me a compilation of videos where transcription has the word "welcome” - https://youtu.be/OButxl1-A0k

Generate me a compilation of videos where transcription has the word "edit mine" - https://youtu.be/OzauaIc5kOk

Here are a couple of example screenshots using the search:

Screenshot_2026-06-28_at_09.59.17.png

Screenshot_2026-06-28_at_09.57.17.png

Screenshot_2026-06-28_at_09.59.41.png

Screenshot_2026-06-28_at_09.57.55.png

Wrapping up

The big takeaway: an RTX 4090 running Edit Mind in Docker via CUDA is faster than my M1 Max desktop app for this kind of workload, even on more demanding content.

And the best part is you can use the desktop app as a client for the self-hosted Docker server to utilize the video editing software integration and native MacOS desktop experience

If you wanna check the full processing jobs data, here’s the JSON file. And you can search the video file name in my YouTube video to watch the full video.

What’s next?

If you want to try it yourself, the self-hosted version is at github.com/IliasHad/edit-mind. Add a folder, and it handles the rest. The desktop app (with integrations for Final Cut Pro, DaVinci Resolve, and Adobe Premiere Pro) is available at edit-mind.com.

If you have ideas for performance improvements, new plugins, or just want to share what you're working on in the same space, open an issue or create a pull request.

  • Video

More articles

I indexed 669 GB of my GoPro videos using my M1 Max computer and local ML models

In this blog post, I shared my experience indexing 669 GB of my GoPro videos using my M1 Max computer using local machine learning models

Read more

Tell me about your project