NimBold 8eb1a55e72 fix: eliminate OS keychain prompt on startup by persisting pairing token in DB
The root cause was hydrate_extension_pairing_token accessing the
keychain when keychainAccessGranted was true in the DB.  Any keychain
access on macOS triggers the system prompt when the binary signature
changes after an update.

Architecture change: two-store model.
- The SQLite settings DB is now the primary store for the token.
  hydrate_extension_pairing_token reads from it exclusively -- it
  never touches the OS keychain.  No system prompt on startup.
- The OS keychain remains defence-in-depth: grant_keychain_access
  still writes the token there, but it is only reached from the
  explicit Grant Access button, so any system prompt is user-initiated.

DB helpers: load_pairing_token_from_settings / save_pairing_token_to_settings
hydrate_extension_pairing_token: reads from DB, skips keychain entirely
grant_keychain_access: syncs token to DB after keychain access
Frontend: extensionPairingToken included in partialize for auto-persist
2026-06-25 03:09:50 +03:30

Firelink

Firelink

A fast, focused desktop download manager powered by Rust and Tauri.

Version macOS Windows Linux Tauri Rust License CI

Features · Install · Development · Project status


Dark Theme Main Window Dark Theme Add Window Light Theme Main Window Light Theme Add Window
View More Screenshots
Dark Theme Settings Light Theme Settings

Firelink brings segmented downloads, media extraction, scheduling, and browser integration into one native-feeling desktop application. The application is built with a Rust backend and a React/TypeScript interface, providing excellent cross-platform support.

Features

  • Fast transfers with segmented downloading powered by aria2
  • Media downloads through yt-dlp, FFmpeg, and Deno
  • Persistent queues with configurable concurrency and speed limits
  • Download scheduling with optional post-queue system actions
  • Pause, resume, retry, and duplicate-file handling
  • Smart organization with categories and configurable destinations
  • Browser integration through the Firelink Companion extension
  • Secure local handoff using authenticated extension pairing
  • System integration including tray controls, notifications, and sleep prevention
  • Built-in update checks backed by GitHub Releases

Installation

Important

The cross-platform rust implementation is completing release packaging for macOS, Windows, and Linux. The current v0.7.3 macOS asset on GitHub Releases belongs to the archived SwiftUI implementation.

For now, run the maintained application from source using the development instructions below. New packaged builds will be published through GitHub Releases once the packaging CI workflow is fully ready.

Production bundles include target-specific media engines, so packaged releases do not require separate aria2, yt-dlp, FFmpeg, Deno, Python, or package-manager installations.

macOS builds are distributed without Apple code signing or notarization. Users must approve the downloaded app through Finder or System Settings → Privacy & Security. Firelink does not claim Gatekeeper trust.

🧩 Browser Extension

Install on Firefox

Install the companion extension to send browser downloads directly to Firelink. Pair the extension from Settings → Integrations using the generated local token.

Project Status

The cross-platform audit has been successfully completed. Firelink implements robust OS-specific behaviors to ensure native integration and stability across all platforms.

Target Status
macOS arm64 Fully supported. Automated build, engine validation, and unsigned DMG packaging complete.
Windows x64 Fully supported. Native CI and NSIS packaging configured.
Linux x64 Fully supported. Native CI and AppImage packaging configured.

See the changelog for release history and recent work.

Development

Requirements

Clone the repository with its browser-extension submodule:

git clone --recurse-submodules https://github.com/nimbold/Firelink.git
cd Firelink

Install dependencies and launch the desktop app:

npm install
npm run tauri dev

Run the frontend build and backend tests:

npm run build
cd src-tauri
cargo test --all-targets

Create a production bundle:

npm run tauri build

macOS development uses locked payloads in src-tauri/binaries. Windows and Linux payloads are provisioned from checksum-pinned archives:

node scripts/provision-engines.js --target x86_64-pc-windows-msvc
node scripts/provision-engines.js --target x86_64-unknown-linux-gnu

Build staging includes only the current target. See engines.lock.json, engine-sources.lock.json, and RELEASE.md.

Repository Structure

.
├── src/                  React and TypeScript interface
├── src-tauri/            Rust backend and Tauri configuration
└── Extensions/Firefox/   Firelink Companion submodule

Technology & Credits

Firelink is made possible by these incredible open-source projects:

  • Tauri 2 for the lightweight, secure desktop runtime
  • Rust and Tokio for high-performance native application logic
  • React and TypeScript for the responsive user interface
  • Zustand for simplified frontend state management
  • SQLite for reliable, persistent application data
  • aria2 for blazing fast segmented downloading
  • yt-dlp, FFmpeg, and Deno for unmatched media extraction and processing capabilities

License

Firelink is available under the MIT License.

S
Description
Languages
TypeScript 55.2%
Rust 37.4%
JavaScript 3.8%
CSS 3.6%