LmCast :: Stay tuned in

Show HN: Rapel – chunked resumable downloads in unstable networks

Recorded: May 27, 2026, 1:01 a.m.

Original Summarized

GitHub - redraw/rapel: chunked resumable downloads in unstable networks · GitHub

Skip to content

Navigation Menu

Toggle navigation

Sign in

Appearance settings

PlatformAI CODE CREATIONGitHub CopilotWrite better code with AIGitHub SparkBuild and deploy intelligent appsGitHub ModelsManage and compare promptsMCP RegistryNewIntegrate external toolsDEVELOPER WORKFLOWSActionsAutomate any workflowCodespacesInstant dev environmentsIssuesPlan and track workCode ReviewManage code changesAPPLICATION SECURITYGitHub Advanced SecurityFind and fix vulnerabilitiesCode securitySecure your code as you buildSecret protectionStop leaks before they startEXPLOREWhy GitHubDocumentationBlogChangelogMarketplaceView all featuresSolutionsBY COMPANY SIZEEnterprisesSmall and medium teamsStartupsNonprofitsBY USE CASEApp ModernizationDevSecOpsDevOpsCI/CDView all use casesBY INDUSTRYHealthcareFinancial servicesManufacturingGovernmentView all industriesView all solutionsResourcesEXPLORE BY TOPICAISoftware DevelopmentDevOpsSecurityView all topicsEXPLORE BY TYPECustomer storiesEvents & webinarsEbooks & reportsBusiness insightsGitHub SkillsSUPPORT & SERVICESDocumentationCustomer supportCommunity forumTrust centerPartnersView all resourcesOpen SourceCOMMUNITYGitHub SponsorsFund open source developersPROGRAMSSecurity LabMaintainer CommunityAcceleratorGitHub StarsArchive ProgramREPOSITORIESTopicsTrendingCollectionsEnterpriseENTERPRISE SOLUTIONSEnterprise platformAI-powered developer platformAVAILABLE ADD-ONSGitHub Advanced SecurityEnterprise-grade security featuresCopilot for BusinessEnterprise-grade AI featuresPremium SupportEnterprise-grade 24/7 supportPricing

Search or jump to...

Search code, repositories, users, issues, pull requests...

Search

Clear

Search syntax tips

Provide feedback


We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.
You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

redraw

/

rapel

Public

Notifications
You must be signed in to change notification settings

Fork
0

Star
2

Code

Issues
0

Pull requests
0

Actions

Projects

Security and quality
0

Insights

Additional navigation options

Code

Issues

Pull requests

Actions

Projects

Security and quality

Insights


redraw/rapel

 mainBranchesTagsGo to fileCodeOpen more actions menuFolders and filesNameNameLast commit messageLast commit dateLatest commit History3 Commits3 Commits.github/workflows.github/workflows  cmdcmd  internalinternal  scriptsscripts  .gitignore.gitignore  CLAUDE.mdCLAUDE.md  MakefileMakefile  README.mdREADME.md  go.modgo.mod  go.sumgo.sum  main.gomain.go  View all filesRepository files navigationREADMErapel
Chunked HTTP downloader with resume support.
A modern, cross-platform implementation with improved state management and progress tracking.
Installation
go build -o bin/rapel
Or install directly:
go install github.com/redraw/rapel@latest
Usage
Download a file with default settings (100MB chunks, 1 concurrent job):
rapel download https://example.com/file.bin
Download with custom chunk size and multiple concurrent downloads:
rapel download https://example.com/file.bin -c 50M --jobs 4
Download through a proxy:
rapel download https://example.com/file.bin -x socks5h://127.0.0.1:9050
Download and auto-merge:
rapel download https://example.com/file.bin --merge
Run command after each chunk completes:
rapel download https://example.com/file.bin --post-part 'rclone move {part} remote:bucket/'
Merge chunk files manually:
rapel merge # Auto-detects output name
rapel merge --pattern 'file.*.part' # Auto-detects as "file"
rapel merge -o output.bin --delete # Explicit name, delete after merge
Features

JSON state management: Single .rapel-state.json file tracks all chunk metadata
Graceful shutdown: Ctrl+C saves progress and allows resume
Better progress display: Real-time speed, completion status with ANSI formatting
Cross-platform: Works on Linux (amd64, arm64, arm v6/v7), macOS (Intel/Apple Silicon), Windows, and FreeBSD
Raspberry Pi support: Native ARM v7 and v6 binaries for all Raspberry Pi models
Resume support: Automatically resumes interrupted downloads
Concurrent downloads: Download multiple chunks simultaneously
Post-part hooks: Run custom commands after each chunk completes (e.g., upload to cloud)
Smart merging: Auto-detects output filename and handles multiple download sessions

Options
Download command:
-c SIZE Chunk size (K, M, G suffix). Default: 100M
-x URL Proxy URL (e.g., socks5h://127.0.0.1:9050)
-r N Retries per request. Default: 10
--no-head Skip HEAD request (requires --size)
--size BYTES Total size in bytes (required if --no-head)
--jobs N Concurrent chunks. Default: 1
--force Force re-download even if state exists
--merge Merge chunks after download (auto-detects output name)
--post-part CMD Command to run after each part completes
Placeholders: {part} {idx} {base}

Merge command:
-o FILE Output filename (auto-detected if not provided)
--pattern GLOB Pattern for chunk files. Default: *.part
--delete Delete chunk files after merging

About

chunked resumable downloads in unstable networks

Resources

Readme

Uh oh!

There was an error while loading. Please reload this page.


Activity
Stars

2
stars
Watchers

0
watching
Forks

0
forks

Report repository

Releases
2

v1.0.1

Latest

Jan 6, 2026


+ 1 release

Packages
0

 

 

 

Uh oh!

There was an error while loading. Please reload this page.


Contributors

Uh oh!

There was an error while loading. Please reload this page.


Languages

Go
84.1%

Shell
13.4%

Makefile
2.5%

Footer

© 2026 GitHub, Inc.

Footer navigation

Terms

Privacy

Security

Status

Community

Docs

Contact

Manage cookies

Do not share my personal information

You can’t perform that action at this time.

The project redraw/rapel implements a modern, cross-platform tool designed for performing chunked and resumable downloads, specifically optimized for use in unstable network environments. It focuses on delivering improved state management and robust progress tracking capabilities to handle complex downloading tasks effectively.

The tool is designed to be executed either by building from source using go build or installing directly via go install. The core functionality allows users to initiate downloads with default settings, such as using 100 megabyte chunks and one concurrent job. Users have extensive control over the download process through various command-line options. For instance, users can specify a custom chunk size using the -c flag, define the number of concurrent downloads with the --jobs flag, utilize proxy settings through the -x flag, and configure retry attempts per request with the -r flag. It also supports advanced control mechanisms such as skipping the HEAD request if a size is specified using --no-head, and setting the total download size in bytes using --size.

A key feature is the ability to manage complex operations post-download via post-part hooks, allowing custom commands to be executed after each chunk completes. This facilitates workflows such as uploading data to cloud storage, exemplified by commands like rclone move. Furthermore, the system incorporates smart merging capabilities, which automatically detect output filenames and manage multiple download sessions efficiently. Users can manage the resulting files through the merge command, allowing for options to specify an output filename with -o, define file patterns with --pattern, or explicitly delete the chunk files after merging with --delete.

State management is handled through a single JSON file, .rapel-state.json, which tracks all necessary chunk metadata. This state persistence ensures resilience, providing graceful shutdown functionality where progress is saved when interrupted, allowing for seamless resumption of downloads. The application provides enhanced progress display through real-time speed metrics and completion status formatted with ANSI color coding.

In terms of technical scope, rapel is cross-platform, supporting operating systems including Linux variants (amd64, arm64, arm v6/v7), macOS (Intel and Apple Silicon), Windows, and FreeBSD. It also includes native ARM v7 and v6 binaries, providing specific support for Raspberry Pi models. The design emphasizes resume support, meaning interrupted downloads can be automatically resumed upon restart. The implementation handles concurrent downloads efficiently and prioritizes stability and state integrity, making it a sophisticated utility for developers and system administrators dealing with network instability.