The Local Chain of Custody
OmniGet's central question is not whether a desktop app can fetch one more kind of link. It is whether a changing online source can become a durable, useful local artifact while the user can still see what was known, what was authorized, what failed, and what happened afterward. This final synthesis reconnects OmniGet's resolver, browser bridge, queue, transfer controls, recovery, local tools, plugins, and agent interfaces to answer that question. It also sets the limits of the answer: the chain can make work more controlled, inspectable, and recoverable, but it cannot stabilize the web or create permission that the user does not have.
The most useful way to understand OmniGet is as a local chain of custody for media and documents. “Custody” here does not mean legal ownership or perfect preservation. It means keeping track of how an external source becomes a local result: which component identified it, which session context was used, which route fetched it, which queue state represented it, which checks accepted it, and which later tools transformed it. The project is strongest when those handoffs remain visible to the user.
One chain, distinct responsibilities
The chain starts with source identity. OmniGet does not treat every URL as the same kind of request. Its platform layer recognizes hosts and special inputs; its generic path can use yt-dlp for broad extraction; direct and HLS paths avoid unnecessary extraction when the URL already reveals a transfer shape. This routing is the first act of control because it prevents the app from making a stronger assumption than the input supports.
Preview adds a second layer. Metadata such as title, author, duration, thumbnail, media type, and available heights turns an opaque link into a choice the user can inspect. A quality cap can select the highest available representation below a requested height, while a fallback can preserve a usable choice when the source exposes fewer details. Preview does not freeze the external source. It records what the app can know now so the user can decide what to queue.
Authorization context is a separate responsibility. The browser extension can contribute cookies, referer, user-agent information, and page-side manifest evidence when the desktop process cannot obtain them from the URL alone. The local bridge carries that context through a loopback service protected by a paired bearer. The desktop app stores and applies selected session material for the job; the browser does not become the queue, and the bridge does not become a remote service.
The distinction matters because a recognized URL and an authorized request are not the same thing. A platform can be correctly identified while the user is logged out. A captured playlist can be real while its tokens have expired. A public link may work through the scheme fallback while a private link fails because that fallback cannot carry cookies. The chain remains understandable only if identity, authorization, and transfer route are kept as separate layers.
Acquisition then turns the selected route into bytes. Direct files can use range requests and partial outputs. HLS jobs follow manifests and fragments. Platform jobs may use yt-dlp to select, download, and merge separate streams. Cookies and referers are part of the request contract when the source requires them. Managed yt-dlp introduces another relationship: OmniGet must find the executable or zipapp, coordinate its process startup, verify downloaded updates against published checksums, avoid swapping a binary under an active process, and expose a redacted command that the user can inspect.
The queue gives this work a visible temporal owner. It decides which jobs are waiting, active, paused, seeding, complete, or in error; controls concurrency and scheduling; reports current phases and stalls; and distinguishes a retryable network condition from cancellation or a fatal access result. A direct file, an HLS playlist, and a yt-dlp process do not behave identically, but the queue can represent them without pretending that one percentage explains every phase.