yashas / docs
Products

HOLEN

Private, on-device downloads on Android, web, or in your terminal.

What it is

HOLEN is my private downloader in three shapes: a native Android app, a small hosted website, and an interactive terminal command. Paste a supported link, choose the format and quality, and save the result locally.

There is no account, analytics dashboard, or mysterious hosted storage in the Android and terminal flows. The download is performed on your device. The hosted website is convenient, but it runs on an old laptop, so do not expect the fastest speeds.

Pick your version

VersionBest forStart here
AndroidSharing a link from your phoneUniversal APK
TerminalRepeatable, keyboard-first downloadsnpx holen-dl
WebsiteTrying it without installing anythingholen.yvmx.dpdns.org

Android quick start

  1. Download the latest APK from GitHub Releases.
  2. Install it on Android. If Android asks, allow installation from the browser or file manager you used.
  3. Share a link to HOLEN or paste it into the app.
  4. Select video or audio, then choose a format and quality.
  5. Pick the destination folder and wait for the download to finish.

The Android app is deliberately simple: it is a local downloader, not a media library or a sync service.

Terminal quick start

You need an interactive terminal and Node.js/npm:

npx holen-dl

Aliases are also available:

npx yvm-yt
npx yt-cmd

Paste the URL into the prompt, choose video or audio, select a quality preset or custom resolution, and let the tool handle the output. Video prefers MP4 and can fall back to MKV; audio is MP3. Files are saved to ~/Downloads.

The CLI checks for yt-dlp and ffmpeg. If they are missing, it can help install or download what is needed.

How it works

link → HOLEN UI → yt-dlp selects and downloads streams → FFmpeg merges/converts → local file

The Android and website layers are interfaces around the same basic idea. yt-dlp understands the source site and available formats; FFmpeg handles merging separate video/audio streams and conversions.

Tech stack

PartTechnologyJob
Android appKotlin / native AndroidShare target, picker, and local file saving
Web frontendReactLink input, format picker, and download UI
APIFastAPIDownload orchestration for the hosted/web deployment
Downloaderyt-dlpExtracts formats and downloads supported sources
Media processingFFmpegMuxing and format conversion
PackagingDockerRepeatable backend deployment
Terminal clientNode.js/npmInteractive CLI distributed through npm

Downloads stay on your device in the local flows. HOLEN does not bypass DRM, logins, age gates, private content, access controls, or platform restrictions. Only download content you are allowed to download and follow the source platform's terms.

The hosted website is a different trust boundary from the Android and terminal clients. Do not use it for sensitive URLs or private material; run the local version if that matters.

Troubleshooting

The CLI says ffmpeg is missing: install FFmpeg with your operating system package manager, then run the command again. Some downloads need it even when the source itself is available.

The Android APK will not install: download it again from Releases, check that Android allows the installer you are using, and remove an older broken build if necessary.

A source link fails: sites change often. Try updating the app/CLI, verify that the URL is public, and check the upstream yt-dlp support before opening an issue.

The hosted download is slow: that deployment is intentionally small and runs from an old laptop. The terminal or Android local flow will normally be faster because it writes directly to your device.

Develop

Clone the repo and follow its environment file and component-specific instructions:

git clone https://github.com/YashasVM/HOLEN.git
cd HOLEN

The repository is split into frontend, backend, Android production files, and deployment helpers. It includes .env.example, Docker configuration, tests, and contribution/security docs. Do not commit local environment values or release signing material.

On this page