Skip to content

FalconA Modern, Cross-Platform C++ Resource Transfer Engine

Unified downloading and access for HTTP, FTP, SFTP, WebDAV, object storage, and P2P resources — delivered as a CLI, a daemon, and a desktop app

Falcon logo

The main-view design prototypes (warm console / cold utility) and live desktop screenshots (download management, completed list, add-download dialog, cloud storage, settings) rotate automatically — hovering pauses the carousel, and you can switch with the left/right arrows, the dots, or the keyboard arrow keys.

warm console main view design prototype (dark)
Design PrototypeMain view prototype - warm console (current theme direction, warm-dark base + falcon orange accent)

More UI screenshots (52 in total: 13 views × light/dark × two window widths) are available in the repository at docs/design/ui-sandbox/.

Quick Preview ​

Install ​

bash
# Build from source
git clone https://github.com/cuihairu/falcon.git
cd falcon
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release

The current documentation focuses on building from source; it no longer assumes that Homebrew, APT, or prebuilt installers have been published.

Basic Usage ​

bash
# Download a single file
falcon-cli https://example.com/file.zip

# Multi-threaded download
falcon-cli https://example.com/large.zip -c 5

# Read URLs from a file for batch downloading
falcon-cli -i urls.txt -j 3

# Download through a proxy
falcon-cli https://example.com/file.zip --proxy http://127.0.0.1:7890

C++ API ​

cpp
#include <falcon/falcon.hpp>

int main() {
    falcon::DownloadEngine engine;

    falcon::DownloadOptions options;
    options.max_connections = 5;

    auto task = engine.add_task(
        "https://example.com/file.zip",
        options
    );

    if (task) {
        engine.start_task(task->id());
        task->wait();
    }
    return 0;
}

Project Structure ​

falcon/
├── packages/
│   ├── libfalcon-core/      # Core download engine, task model, event system
│   ├── libfalcon-protocols/ # Standard download protocols
│   ├── libfalcon-storage/   # Object storage and resource browsing
│   ├── libfalcon-drives/    # Cloud drive and share-link capabilities
│   ├── falcon-cli/          # Command-line tool
│   └── falcon-daemon/       # Background daemon
├── apps/
│   ├── desktop/             # Desktop application
│   └── browser_extension/   # Browser extension
└── docs/                    # Project documentation

Protocol Support ​

ProtocolStatusNotes
HTTP/HTTPSEnabledResumable and chunked downloads
FTP/FTPSEnabledActive/passive modes
BitTorrentEnabledlibtorrent-based, with seeding, DHT, and NAT port mapping
ED2KOptionalImplemented in the codebase, usually off in default builds
ThunderOptionalImplemented in the codebase, usually off in default builds
QQ WhirlwindOptionalImplemented in the codebase, usually off in default builds
FlashGetOptionalImplemented in the codebase, usually off in default builds
HLS/DASHOptionalImplemented in the codebase, usually off in default builds

Contributing ​

Contributions, bug reports, and suggestions are welcome!

License ​

Apache License 2.0

Released under the Apache 2.0 License