Legal

Privacy Policy

Privacy

Last updated: June 28, 2026

RuForge runs entirely on your computer. This page tells you exactly what

data exists, where it lives, and what leaves the machine.

What RuForge stores locally

What leaves your computer

Seven things. Most are automatic only when a feature runs; Deno and music enrichment run only when you trigger them. SponsorBlock is on by default but can be turned off.

1. yt-dlp requests. When you queue a download, yt-dlp connects

directly to the source site (YouTube or other sites it supports) to

fetch the media. RuForge does not proxy these requests. When yt-dlp

uses cookies (from your browser or from RuForge's internal browser

profile), it sends those cookies to the source site, not to RuForge.

That is how authentication works.

2. SponsorBlock (default on). When you play a video that has a

YouTube ID, RuForge sends the first four characters of a SHA-256 hash

of that ID to sponsor.ajay.app. The response contains skip segments for

all videos sharing that hash prefix, and RuForge picks the matching one

locally. The full video ID never leaves your machine in the request.

Skip segments are cached on disk next to the file. SponsorBlock is

operated by a third party and is open source. You can disable it in

Settings → Playback.

3. App update checks. On launch, RuForge fetches a single JSON file

from GitHub to see whether a newer version of RuForge exists. The

request includes your current version and the standard headers any HTTP

client sends. No account, no fingerprint, no telemetry. Installing an

update downloads the signed installer from GitHub when you tap install.

4. yt-dlp update checks. On launch, RuForge checks GitHub's API

(every 12 hours, cached) for a newer version of the bundled yt-dlp

binary. The request includes a User-Agent identifying RuForge and its

version. If you tap "Update yt-dlp," the new binary downloads from

GitHub. No upload, no install without your tap.

5. Links you click. GitHub, Discord (if added), or any other link

opens in your default browser like any other link.

6. Music metadata (music mode, when enrichment runs). When you download audio with metadata stamping, run Enrich music metadata, or open artist pages that need a lookup, RuForge sends search queries to MusicBrainz: artist and title strings taken from your local files or sidecars, not account data or other personally identifying information. Requests are rate-limited to about one per second. The User-Agent identifies RuForge and its version (RuForge/{version} ( https://ruforge.app )). When a confident match includes a release, RuForge may fetch cover art from Cover Art Archive using the MusicBrainz release ID only. Results are cached in local {stem}.musicmeta.json and artist sidecars next to your files. This does not run on every launch.

7. Deno JavaScript runtime (optional). YouTube sometimes requires a JS runtime for yt-dlp. If you install Deno from Settings → Downloads, RuForge checks GitHub's API for the latest Deno release and downloads the binary into your app data folder (about 100 MB). Deno does not ship inside the RuForge installer. No upload, no install without your tap on Install or Reinstall.

Domains RuForge contacts automatically

MusicBrainz and Cover Art Archive traffic runs only when music enrichment or artist lookup is active, not on every launch. Everything else on the network is either listed above or initiated by you: yt-dlp connecting to a site you queued, or the in-app browser loading a page you opened.

What RuForge does not do

Network exceptions worth knowing

Logs and crash data

RuForge does not collect crash data. If you hit a bug and open a GitHub

issue, you can attach logs manually. You control what gets shared.

Children

RuForge is not directed at children. It is a general-purpose desktop

tool.

Changes

If this page changes in a way that affects what data leaves your

machine, the change ships with a release and shows in the in-app

changelog.

Contact

Open an issue at https://github.com/UnboundAngel/RuForge/issues.