Ghost Downloader
Architecture

Architecture Overview

The main boundaries in Ghost Downloader: UI, services, tasks, Feature Packs, and the browser bridge.

Ghost Downloader's architecture can be summarized in one sentence: the UI raises intent, CoreService schedules work, FeatureService selects the right capability, protocol logic stays inside features/*_pack, and the browser extension connects through BrowserService.

Architecture Boundaries

Protocol parsing belongs to Feature Packs, task scheduling belongs to CoreService, UI interaction belongs to app/view, and the browser bridge is an extension-facing local service rather than a public remote-control API.

Layers and Responsibilities

LayerMain SourceResponsibility
EntryGhost-Downloader-3.pyLogging, config loading, translation, service startup, window creation.
UIapp/viewTask list, settings page, dialogs, tray integration.
Servicesapp/servicesTask scheduling, Feature Pack loading, browser bridge.
Modelsapp/bases/models.pyTask, TaskStage, state, and serialization.
Feature Packsfeatures/*_packProtocol parsing, download execution, external runtime integration.
Extensionbrowser_extension/appResource capture, extension UI, WebSocket requests.

Core Data Flow

  1. A user action or browser extension submits a URL or payload.
  2. CoreService asks FeatureService to choose a Feature Pack that can handle it.
  3. The chosen Feature Pack creates a Task.
  4. CoreService runs the task under concurrency limits.
  5. The UI, extension, and taskRecorder consume task state updates.

Read More

On this page