Browser integration for the Firelink desktop download manager.
Firelink Companion sends browser downloads, selected links, media pages, magnet links, and torrent metadata to the native Firelink app.
Captured links open Firelink's Add window first. You can review them before starting or queuing a download.
The Companion package is 2.2.2. It is compatible with Firelink 1.4.2.
Version 2.2.2 includes the browser-local Torrent handoff fixes and the shared Chromium package now published through Microsoft Edge Add-ons. The submission material is kept in store/edge/listing.md.
The project is actively maintained. Use the latest Companion release with the latest Firelink release.
Remote Torrent and magnet handoff uses protocol version 5. Browser-local Torrent attachments use the binary handoff contract and require a Firelink build that supports it.
- Microsoft Edge: Install Firelink Companion from Microsoft Edge Add-ons.
- Other Chromium browsers: Download
firelink-chromium.zipfrom the latest release. Follow the manual installation guide.
After installation:
- Open Firelink.
- Go to Settings -> Integrations.
- Copy the pairing token.
- Open the Firelink Companion popup.
- Paste the token and save.
- Automatic capture for ordinary browser downloads.
- Magnet links through the existing link and selection context menus.
- Automatic
.torrenthandoff to Firelink's Add window, including authenticated browser sessions, opaque download URLs, and browser-local attachments. - Paused Torrent captures that wait for Firelink confirmation before the browser download continues.
- Batch selected links from page context menus.
- Optional Firelink folders named from page titles.
- Explicit Fetch media actions from the popup and context menu. During the action, Companion briefly observes requests from the active tab to find one HLS, DASH, or Smooth Streaming manifest when the page exposes one.
- Localized popup UI in Firelink's six supported languages, including RTL layout for Hebrew and Persian.
- Localized browser context menus that follow the selected language.
- System, light, dark, Dracula, and Nord popup themes.
- Firefox and Chromium Manifest V3 support.
- Signed local requests with HMAC-SHA256.
- Desktop identity checks before trusting localhost responses.
- Safe fallback when Firelink is closed or rejects a handoff.
- Recovery for interrupted or ambiguous captures without silent duplicates.
- Recovery for interrupted and paused Firefox captures across service-worker restarts.
- Safer popup state and automatic-capture handling when settings change during a handoff.
- Dynamic local port discovery across
127.0.0.1:6412-6422.
The extension deliberately keeps media fetching in the popup and context menu instead of injecting an in-page player button. A user-triggered Fetch
media action sends the canonical active-tab page URL to Firelink immediately,
then takes a bounded, eight-second snapshot of the tab's media resource URLs
and newly observed HTTP(S) requests. If it selects an .m3u8, .mpd, .ism,
or .ism/manifest URL, it sends one signed update tied to the original media
handoff; otherwise the page URL remains the only request. It does not reload
the page, fetch manifest bodies or key files, or observe requests continuously.
Browser sites frequently change their DOM and player behavior, and media can be
exposed through site-specific, single-page, MSE, or blob-based paths that
require ongoing maintenance.
On browsers that do not expose a request/document identity to extensions, manifest discovery is deliberately disabled for that session and the action falls back to the canonical page URL. Direct manifest URLs still work through the desktop Add window.
- Ordinary captures may use browser cookies when the browser session requires them.
- Explicit media requests send the canonical page URL immediately and may send
one discovered manifest update tied to the same handoff. They never send a
raw browser
Cookieheader. - Discovery may include only
Accept,Accept-Language,Origin, andUser-Agent, plus a validatedRefererfield. Credentials, custom token headers, cookies, ranges, host headers, and hop-by-hop headers are removed. - Firelink handles media authentication through its configured media cookie source.
- The bundled yt-dlp path can handle clear or non-DRM encrypted HLS such as AES-128 when the manifest and key are legitimately accessible. DRM/CDM, license-server, and other key workflows are unsupported; Firelink does not bypass them.
- The original browser download is kept unless Firelink confirms the handoff.
- Torrent downloads remain paused until Firelink confirms receipt; ambiguous handoffs stay paused to avoid duplicate delivery.
- Requests stay on the local machine. The extension does not send download data to a remote service.
Two-phase media handoffs require Firelink desktop protocol version 7 or newer. The extension rejects an older desktop before sending the media request, so an update cannot be misread as a second ordinary download. Ordinary captures keep their existing protocol compatibility.
Newer Companion and Firelink builds additionally bind signed handoffs to the current desktop-server session. Older paired desktop builds continue through the established HMAC compatibility path until both sides are upgraded.
The extension requests access to all web pages because automatic capture runs
at document start and browser cookies may be needed for authenticated ordinary
downloads. It also uses the browser downloads, context-menu, storage, alarm,
script-injection, notification, cookie, and non-blocking webRequest APIs
listed in manifest.json. The webRequest listener records nothing unless you
invoke Fetch media, and then only for the active tab for at most eight seconds.
Those permissions support the features above; the extension sends handoff data
only to the paired Firelink app on localhost.
Firelink's existing bundled yt-dlp, FFmpeg, and Deno engines remain the only media backend. Clear media and non-DRM encrypted HLS (for example, AES-128) may work when yt-dlp can legitimately access the manifest and key. DRM/CDM, license-server, and other protected-key workflows are intentionally unsupported and are not bypassed. This phase does not add subtitle or multiple-audio-track selection UI.
For the Edge store listing, see the privacy policy and the submission kit.
Chrome and other Chromium browsers use the load-unpacked package described below. Microsoft Edge users should install the extension from the Edge Add-ons listing instead.
-
Download
firelink-chromium.zipfrom the latest release. -
Extract the ZIP to a stable folder.
-
Open your browser's extension manager:
Browser Extension manager Chrome / Chromium chrome://extensionsEdge edge://extensionsBrave brave://extensionsVivaldi vivaldi://extensionsOpera opera:extensions -
Enable Developer mode.
-
Select Load unpacked.
-
Choose the extracted folder containing
manifest.json. -
Pair the extension from Firelink Settings -> Integrations.
Manual Chromium installs do not auto-update. Extract the new ZIP and click Reload after an update. Managed browsers may disable Developer mode.
Use this flow for local testing or add-on review:
- Clone this repository.
- Open
about:debugging#/runtime/this-firefoxin Firefox. - Select Load Temporary Add-on... and choose
manifest.json. - Pair the extension from Firelink Settings -> Integrations.
Temporary Firefox add-ons are removed when Firefox restarts.
npm test
npm run check
npm run buildThe build writes load-unpacked packages to dist/firefox/ and dist/chromium/.
Release packages are firelink-firefox.zip and firelink-chromium.zip. firelink.zip remains a Firefox-package compatibility alias.
The extension uses standard WebExtensions APIs. It integrates with Firelink.
Thanks to users who report browser compatibility issues, test releases, and review the integration.
Firelink Companion is available under the MIT License.