Skip to content

Surge is a blazing fast, open-source terminal (TUI) download manager built in Go.

License

Notifications You must be signed in to change notification settings

elijahthis/surge

 
 

Repository files navigation

Surge

Ask DeepWiki Release Go Version License X (formerly Twitter) Follow Stars

Blazing fast, open-source TUI download manager built in Go.

InstallationUsageBenchmarksExtension


What is Surge?

Surge is designed for power users who prefer a keyboard-driven workflow. It features a beautiful Terminal User Interface (TUI), as well as a background Headless Server and a CLI tool for automation.

Surge Demo

Why use Surge?

Most browsers open a single connection for a download. Surge opens multiple (up to 32), splits the file, and downloads chunks in parallel. But we take it a step further:

  • Blazing Fast: Designed to maximize your bandwidth utilization and download files as quickly as possible.
  • Multiple Mirrors: Download from multiple sources simultaneously. Surge distributes workers across all available mirrors and automatically handles failover.
  • Sequential Download: Option to download files in strict order (Streaming Mode). Ideal for media files that you want to preview while downloading.
  • Daemon Architecture: Surge runs a single background "engine." You can open 10 different terminal tabs and queue downloads; they all funnel into one efficient manager.
  • Beautiful TUI: Built with Bubble Tea & Lipgloss, it looks good while it works.

For a deep dive into how we make downloads faster (like work stealing and slow worker handling), check out our Optimization Guide.


Installation

Surge is available on multiple platforms. Choose the method that works best for you.

Platform / Method Command / Instructions Notes
Prebuilt Binary Download from Releases Easiest method. Just download and run.
Arch Linux (AUR) yay -S surge Managed via AUR.
macOS / Linux (Homebrew) brew install surge-downloader/tap/surge Recommended for Mac/Linux users.
Windows (Winget) winget install surge-downloader.surge Recommended for Windows users.
Go Install go install github.com/surge-downloader/surge@latest Requires Go 1.21+.

Usage

Surge has two main modes: TUI (Interactive) and Server (Headless).

For a comprehensive list of all commands, flags, and configuration options, please refer to the Detailed Settings & Configuration Guide.

1. Interactive TUI Mode

Just run surge to enter the dashboard. This is where you can visualize progress, manage the queue, and see speed graphs.

# Start the TUI
surge

# Start TUI with downloads queued
surge https://example.com/file1.zip https://example.com/file2.zip

# Combine URLs and batch file
surge https://example.com/file.zip --batch urls.txt

2. Server Mode (Headless)

Great for servers, Raspberry Pis, or background processes.

# Start the server
surge server start

# Start the server with a download
surge server start https://url.com/file.zip

# Check server status
surge server status

surge and surge server start bind the HTTP API to 0.0.0.0 (all interfaces) by default. This means the server is accessible via localhost (127.0.0.1) as well as your local network IP.

The API is token-protected. Generate/read your token from:

~/.surge/token

3. Remote TUI

Connect to a running Surge daemon (local or remote).

# Connect to a local daemon (auto-discovery)
surge connect

# Connect to a remote daemon
surge connect 192.168.1.10:1700 --token <token>

By default, surge connect uses:

  • http:// for loopback and private IP targets
  • https:// for public/hostname targets

Benchmarks

We tested Surge against standard tools. Because of our connection optimization logic, Surge significantly outperforms single-connection tools.

Tool Time Speed Comparison
Surge 28.93s 35.40 MB/s
aria2c 40.04s 25.57 MB/s 1.38× slower
curl 57.57s 17.79 MB/s 1.99× slower
wget 61.81s 16.57 MB/s 2.14× slower

Test details: 1GB file, Windows 11, Ryzen 5 5600X, 360 Mbps Network. Results averaged over 5 runs.

We would love to see you benchmark surge on your system!


Browser Extension

The Surge extension intercepts browser downloads and sends them straight to your terminal. It communicates with the Surge client on port 1700 by default.

Chrome / Edge / Brave

  1. Clone or download this repository.
  2. Open your browser and navigate to chrome://extensions.
  3. Enable "Developer mode" in the top right corner.
  4. Click "Load unpacked".
  5. Select the extension-chrome folder from the surge directory.

Firefox

  1. Stable: Get the Add-on
  2. Development:
    • Navigate to about:debugging#/runtime/this-firefox.
    • Click "Load Temporary Add-on...".
    • Select the manifest.json file inside the extension-firefox folder.

Community & Contributing

We love community contributions! Whether it's a bug fix, a new feature, or just cleaning up typos.

You can check out the Discussions for any questions or ideas, or follow us on X (Twitter)!

License

Distributed under the MIT License. See LICENSE for more information.


Star History Chart
If Surge saved you some time, consider giving it a ⭐ to help others find it!

About

Surge is a blazing fast, open-source terminal (TUI) download manager built in Go.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 81.8%
  • JavaScript 9.6%
  • Python 4.8%
  • CSS 3.2%
  • HTML 0.6%