Skip to content
TurboDL

Advanced

Architecture

The parts of TurboDL and how the engine works.

The parts

shared engine      Rust library, no UI
turbodl            egui app
turbodl-cli        command line
turbodl-mcp        MCP server (rmcp)
extensions         Chrome and Firefox
profiles           default profile and JSON Schema

The engine

ModulePurpose
engine/probeFirst request: size, byte ranges, name, ETag; network retries
engine/planSegments restored from the state or split from scratch
engine/workerOne connection per segment, batched writes (256 KiB), retries with growing waits
engine/splitterInitial split and re-split of the largest remaining segment
engine/finishDestination, state saved every 2 s, finalization, history
resume.part.turbodl file without secrets, written atomically
request / authRequest, ${VAR} headers, Netscape cookies, Basic
resolversGoogle Drive
statshistory.jsonl history, aggregates and insights

Front ends get no message per received block: they read a snapshot at their own pace, which keeps the display smooth whatever the speed.

The desktop app

ModulePurpose
queueDownload list, waiting queue, persistence in downloads.json
bridgeSingle instance and native messaging host for the extensions
i18nInterface texts in English, French and Spanish; English is the fallback
theme + iconsLight/dark themes tinted by the accent color, Phosphor icon font
updateVersion lookup, package download with the engine, checksum, file replacement with rollback
uiWindows and dialogs

Technical choices

  • Rust: no garbage collector nor global lock, one native program per platform.
  • egui: immediate-mode interface rendered by the GPU, without an embedded browser.
  • rustls: TLS without depending on OpenSSL.