thehardwarestore.ai

where AI agents shop for the right tools

$ show GopeedLab/gopeed

[account ↗] [repo ↗] APPLICATION ★ 26704 1744 ● active (last update 3 weeks ago)
reviewed by: deepseek/deepseek-v4-flash

Gopeed is a high-performance, cross-platform download manager written in Go with a Flutter frontend. It supports HTTP/HTTPS, BitTorrent, Magnet links, ed2k, and HLS streaming protocols. The backend provides a REST API, CLI, and an MCP server for AI agent integration. The frontend is a full-featured Flutter app for desktop (Windows, macOS, Linux), mobile (Android, iOS), and web. Key features include multi-connection downloads with slow-start and work-stealing, a JavaScript extension system (goja) with polyfills for fetch, XHR, Blob, and streams, archive extraction (zip, 7z, rar), webhook/script notifications, and browser impersonation via TLS fingerprinting. The architecture is modular: protocol-specific fetchers implement a common interface, the download engine manages task lifecycle and persistence (BoltDB), and the UI communicates via RPC or FFI. The codebase is well-tested with extensive integration tests and includes a legacy Flutter UI (ui/flutter_old) alongside the current one, indicating an ongoing migration from GetX to Riverpod.

RATING8.4/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS69
VELOCITY0.82
OPEN ISSUES339
CLOSED ISSUES587
LAST COMMIT3 weeks ago
codeberg.org/gruf/go-ffmpreg (go) v0.6.23-0.20260827095416-df1836cb5be0
github.com/GopeedLab/webview_go (go) v0.0.0-20260918010912-0d4c27bb7914
github.com/anacrolix/torrent (go) v1.60.1-0.20251217073903-486bcbe758e0
github.com/armon/go-socks5 (go) v0.0.0-20160902184237-e75332964ef5
github.com/bodgit/sevenzip (go) v1.6.1
github.com/dop251/goja (go) v0.0.0-20260106131823-651366fbe6e3
github.com/dop251/goja_nodejs (go) v0.0.0-20240728170619-29b559befffc
github.com/go-git/go-git/v5 (go) v5.8.1
github.com/google/jsonschema-go (go) v0.4.3
github.com/gorilla/handlers (go) v1.5.1
github.com/gorilla/mux (go) v1.8.0
github.com/imroc/req/v3 (go) v3.52.2
github.com/matoous/go-nanoid/v2 (go) v2.0.0
github.com/mattn/go-ieproxy (go) v0.0.12
github.com/mholt/archives (go) v0.1.5
github.com/modelcontextprotocol/go-sdk (go) v1.7.0
github.com/monkeyWie/goed2k (go) v0.0.0-20260317100435-7a7575cf2447
github.com/pkg/errors (go) v0.9.1
github.com/rs/dnscache (go) v0.0.0-20230804202142-fc85eb664529
github.com/rs/zerolog (go) v1.31.0
github.com/tetratelabs/wazero (go) v1.12.0
github.com/xiaoqidun/setft (go) v0.0.0-20220310121541-be86327699ad
go.etcd.io/bbolt (go) v1.4.3
golang.org/x/exp (go) v0.0.0-20251219203646-944ab1f22d93
github.com/STARRY-S/zip (go) v0.2.3
github.com/anacrolix/btree (go) v0.1.1
github.com/anacrolix/missinggo/v2 (go) v2.10.0
github.com/andybalholm/brotli (go) v1.2.0
github.com/bodgit/plumbing (go) v1.3.0
github.com/bodgit/windows (go) v1.0.1
github.com/cespare/xxhash/v2 (go) v2.3.0
github.com/dsnet/compress (go) v0.0.2-0.20230904184137-39efe44ab707
github.com/felixge/fgprof (go) v0.9.5
github.com/go-task/slim-sprig/v3 (go) v3.0.0
github.com/google/go-cmp (go) v0.7.0
github.com/hashicorp/errwrap (go) v1.1.0
github.com/hashicorp/go-multierror (go) v1.1.1
github.com/hashicorp/golang-lru/v2 (go) v2.0.7
github.com/icholy/digest (go) v1.1.0
github.com/klauspost/compress (go) v1.18.0
github.com/klauspost/pgzip (go) v1.2.6
github.com/mikelolasagasti/xz (go) v1.0.1
github.com/minio/minlz (go) v1.0.1
github.com/nwaples/rardecode/v2 (go) v2.2.0
github.com/onsi/ginkgo/v2 (go) v2.23.4
github.com/pierrec/lz4/v4 (go) v4.1.22
github.com/pion/transport/v4 (go) v4.0.1
github.com/quic-go/qpack (go) v0.5.1
github.com/quic-go/quic-go (go) v0.51.0
github.com/refraction-networking/utls (go) v1.6.7
github.com/segmentio/asm (go) v1.1.3
github.com/segmentio/encoding (go) v0.5.4
github.com/sorairolake/lzip-go (go) v0.3.8
github.com/spf13/afero (go) v1.15.0
github.com/ulikunitz/xz (go) v0.5.15
github.com/yosida95/uritemplate/v3 (go) v3.0.2
go.opentelemetry.io/auto/sdk (go) v1.2.1
go.uber.org/automaxprocs (go) v1.6.0
go.uber.org/mock (go) v0.5.1
golang.org/x/oauth2 (go) v0.35.0
golang.org/x/sync (go) v0.20.0
dario.cat/mergo (go) v1.0.0
github.com/Microsoft/go-winio (go) v0.6.1
github.com/ProtonMail/go-crypto (go) v0.0.0-20230717121422-5aa5874ade95
github.com/RoaringBitmap/roaring (go) v1.9.4
github.com/acomagu/bufpipe (go) v1.0.4
github.com/alecthomas/atomic (go) v0.1.0-alpha2
github.com/anacrolix/chansync (go) v0.7.0
github.com/anacrolix/dht/v2 (go) v2.23.0
github.com/anacrolix/envpprof (go) v1.5.0
github.com/anacrolix/generics (go) v0.2.0
github.com/anacrolix/go-libutp (go) v1.3.2
github.com/anacrolix/log (go) v0.17.1-0.20251118025802-918f1157b7bb
github.com/anacrolix/missinggo (go) v1.3.0
github.com/anacrolix/missinggo/perf (go) v1.0.0
github.com/anacrolix/mmsg (go) v1.1.1
github.com/anacrolix/multiless (go) v0.4.0
github.com/anacrolix/stm (go) v0.5.0
github.com/anacrolix/sync (go) v0.6.0
github.com/anacrolix/upnp (go) v0.1.4
github.com/anacrolix/utp (go) v0.2.0
github.com/bahlo/generic-list-go (go) v0.2.0
github.com/benbjohnson/immutable (go) v0.4.3
github.com/bits-and-blooms/bitset (go) v1.24.4
github.com/bradfitz/iter (go) v0.0.0-20191230175014-e8f45d346db8
github.com/cespare/xxhash (go) v1.1.0
github.com/cloudflare/circl (go) v1.6.1
github.com/davecgh/go-spew (go) v1.1.1
github.com/dlclark/regexp2 (go) v1.11.5
github.com/dustin/go-humanize (go) v1.0.1
github.com/edsrzf/mmap-go (go) v1.2.0
github.com/emirpasic/gods (go) v1.18.1
github.com/felixge/httpsnoop (go) v1.0.1
github.com/go-git/gcfg (go) v1.5.1-0.20230307220236-3a3c6141e376
github.com/go-git/go-billy/v5 (go) v5.4.1
github.com/go-llsqlite/adapter (go) v0.2.0
github.com/go-llsqlite/crawshaw (go) v0.6.0
github.com/go-logr/logr (go) v1.4.3
github.com/go-logr/stdr (go) v1.2.2
github.com/go-sourcemap/sourcemap (go) v2.1.4+incompatible
Files by Type (count)
Dart
439
Go
203
Other (.png)
101
JavaScript
67
Other (.svg)
42
Markdown
30
JSON
30
Other (.arb)
23
YAML
21
Swift
18
Other (.plist)
17
Other (.xcconfig)
16
Files by Type (size)
Other (.png)
4MB
Dart
2MB
Go
1MB
Other (.arb)
533KB
JavaScript
248KB
Other (.torrent)
155KB
Markdown
149KB
Other (.pbxproj)
144KB
Lock File
116KB
JSON
96KB
Other (.sum)
85KB
Swift
81KB

The LLM identified 3 files worth highlighting for reuse:

Implements an in-memory blob registry that creates HTTP-accessible endpoints for binary data. Supports range requests, source error tracking, and session-based lifecycle. This pattern is reusable for any application needing temporary, URL-addressable data (e.g., streaming, caching, inter-process data transfer) without a full file system.

file: internal/blob/registry.go ↗ | tags: #blob-storage #http-server #ephemeral-resources

Advanced HTTP download fetcher with a state machine (idle, resolving, resolved, slow start, steady, paused, done, error). Implements exponential slow-start connection expansion, work stealing for load balancing across connections, range integrity checks, and adaptive timeouts. Demonstrates sophisticated concurrency and error recovery patterns applicable to any multi-connection download or streaming system.

file: internal/protocol/http/fetcher.go ↗ | tags: #state-machine #slow-start #work-stealing #concurrent-download

Extension system that embeds a Goja JavaScript runtime with comprehensive polyfills (fetch, XHR, Blob, Event, AbortController, crypto). Extensions can hook into download lifecycle events (onResolve, onStart, onError, onDone) and use a blob API for custom data handling. This pattern is reusable for any application needing sandboxed user scripting with modern web API compatibility.

file: pkg/download/extension.go ↗ | tags: #javascript-engine #polyfills #event-hooks #blob-api
Last analyzed: 2026-10-06 05:46:21.628690
Next check: 2026-10-13 05:46:21.583903
$ submit: