• Home
  • Projects
  • Gallery
  • About
NAT ANSELM
  • Home
  • Projects
  • Gallery
  • About
Contact Me
Project cover
Mar 14, 2026

ytui - TUI for yt-dlp

Source code: https://github.com/n-anselm/ytui

This is a frontend/TUI wrapper for yt-dlp (a CLI video/audio downloader). Often when I want to download videos in specific formats, I need to dig up the specific arguments for yt-dlp. I have created specific shell aliases for different yt-dlp settings, but I thought it would be fun to build an interactive TUI (terminal UI), while evaluating the actual capability of OpenCode, my favorite coding agent framework.

Ideally, an application like this would be build with Python. But I found Bubble Tea, a powerful TUI framework that I wanted to try out. Bubble Tea is written in Go, which I have absolutely no experience with, but that didn’t bother me because coding agents are apparently rather good at it.

I fired up OpenCode in Plan mode and gave it the prerequisites. Then, after answering the agent’s questions and making some core decisions, the agent wrote a highly detailed README.md containing a description of the app architecture and other info. Then I switched to Build mode and let it start working. I made architecture decisions and tested the app, while the agent made changes and fixed bugs. In less than a couple hours I had a new fully functional piece of software.

In my opinion, OpenCode is really good at thinking clearly and working autonomously. Yes, it makes errors, but often catches them itself and auto-corrects. I used the (currently free) Big Pickle LLM, which did a good job.

Currently supports Linux only, but it wouldn’t be a lot of work to make it cross-platform.


Control flow:

  1. Copy a video URL to your clipboard
  2. Run ytui executable
  3. If URL is detected in clipboard, it will be pre-filled
  4. Follow the prompts:
  • Confirm URL (or enter manually if not detected)
  • Choose Video or Audio
  • Select resolution (for video)
  • Select format
  • Choose download folder (default: ~/Downloads)
  • Press Enter to confirm and download

(You can also press d at any time to skip the prompts, use defaults, and download directly.)


NOTE: I wouldn’t recommend using coding agents for everything - it depends a lot on the type of application, the complexity/scope of the project, and the technologies used. AI generated code works, looks “good”, and passes automated tests, but is often inherently messy in a way that makes it difficult to extend or scale the architecture.


Extra: how I created the Unicode ASCII wordmark

I used Figlet and ImageMagick. Here’s the command I used to create the Unicode and convert it to a PNG:

figlet -f ansi-shadow ytui | magick \
-background black \
-fill white \
-font "DejaVu-Sans-Mono" \
-pointsize 80 \
label:@- ytui.png

I initially didn’t have the ansi-shadow font installed, so I downloaded it from here, renamed the file to ansi-shadow.flf, then moved it to /usr/share/figlet/fonts/.

Copyright © 2026 - All rights reserved | Made with Astro and daisyUI Made with Astro and daisyUI