Skip to content

Architecture

WarpDL uses a daemon-based architecture with parallel segment downloading.

┌─────────────────────────────────────────────┐
│ warpdl │
│ (single binary) │
├─────────────────┬───────────────────────────┤
│ CLI │ Daemon │
└────────┬────────┴──────────┬────────────────┘
└───────────┬───────┘
┌──────────┐
│ warplib │
└──────────┘
PackageDescription
cmd/CLI commands using urfave/cli
pkg/warplib/Core download engine
pkg/warpcli/CLI-to-daemon communication
pkg/credman/Credential management with OS keyring
internal/server/Daemon server (Unix socket/TCP)
internal/api/API handlers
internal/extl/JavaScript extension engine
common/Shared types and constants
CLI → pkg/warpcli → Socket → internal/server → internal/api → pkg/warplib → HTTP
  • Handler Pattern: Event callbacks for progress tracking
  • Manager Pattern: Centralized state in Manager (warplib)
  • Daemon Architecture: Single daemon serves multiple CLI clients
PathContents
~/.config/warpdl/userdata.warpDownload metadata (GOB encoded)
~/.config/warpdl/dldata/Partial segment data
~/.config/warpdl/extstore/Installed extensions
/tmp/warpdl.sockDaemon socket (Linux/macOS)
\\.\pipe\warpdlDaemon named pipe (Windows)