DHT fully implements BitTorrent DHT Protocol. It is also a fast spider that crawling the BitTorrent DHT network. You can use it to crawl torrent files info.

Programming language: Go
License: MIT License
Latest version: v0.1

DHT alternatives and similar packages

Based on the "Distributed Systems" category.
Alternatively, view DHT alternatives based on common mentions on social networks and blogs.

  • go-micro

    A Go microservices framework
  • grpc-go

    The Go language implementation of gRPC. HTTP/2 based RPC
  • Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
    Promo www.influxdata.com
    InfluxDB Logo
  • Nomad

    Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.
  • go-zero

    DISCONTINUED. go-zero is a web and rpc framework written in Go. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity. [Moved to: https://github.com/zeromicro/go-zero]
  • micro

    A Go service development platform
  • rpcx

    Best microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily. Try it. Test it. If you feel it's better, use it! ๐‰๐š๐ฏ๐šๆœ‰๐๐ฎ๐›๐›๐จ, ๐†๐จ๐ฅ๐š๐ง๐ ๆœ‰๐ซ๐ฉ๐œ๐ฑ! build for cloud!
  • raft

    Golang implementation of the Raft consensus protocol
  • tendermint

    โŸ Tendermint Core (BFT Consensus) in Go
  • ringpop-go

    Scalable, fault-tolerant application-layer sharding for Go applications
  • Kitex

    Go RPC framework with high-performance and strong-extensibility for building micro-services.
  • Serf

    Service orchestration and management tool.
  • KrakenD

    Ultra performant API Gateway with middlewares. A project hosted at The Linux Foundation
  • torrent

    Full-featured BitTorrent client package and utilities
  • dht

    9.2 9.3 DHT VS dht
    Full-featured BitTorrent client package and utilities
  • dragonboat

    A feature complete and high performance multi-group Raft library in Go.
  • Dkron

    Dkron - Distributed, fault tolerant job scheduling system https://dkron.io
  • Encore

    Encore is the Backend Development Platform purpose-built to help you create event-driven and distributed systems.
  • emitter-io

    High performance, distributed and low latency publish-subscribe platform.
  • gleam

    Fast, efficient, and scalable distributed map/reduce system, DAG execution, in memory or on disk, written in pure Go, runs standalone or distributedly.
  • glow

    Glow is an easy-to-use distributed computation system written in Go, similar to Hadoop Map Reduce, Spark, Flink, Storm, etc. I am also working on another similar pure Go system, https://github.com/chrislusf/gleam , which is more flexible and more performant.
  • Olric

    Distributed in-memory object store. It can be used as an embedded Go library and a language-independent service.
  • gocelery

    Celery Distributed Task Queue in Go
  • liftbridge

    Lightweight, fault-tolerant message streams.
  • Dragonfly

    Dragonfly is an open source P2P-based file distribution and image acceleration system. It is hosted by the Cloud Native Computing Foundation (CNCF) as an Incubating Level Project.
  • go-doudou

    go-doudou๏ผˆdoudou pronounce /dษ™udษ™u/๏ผ‰is OpenAPI 3.0 (for REST) spec and Protobuf v3 (for grpc) based lightweight microservice framework. It supports monolith service application as well.
  • hprose

    Hprose is a cross-language RPC. This project is Hprose for Golang.
  • redis-lock

    Simplified distributed locking implementation using Redis
  • go-health

    Library for enabling asynchronous health checks in your service
  • arpc

    More effective network communication, two-way calling, notify and broadcast supported.
  • rain

    ๐ŸŒง BitTorrent client and library in Go
  • trpc-go

    A pluggable, high-performance RPC framework written in golang
  • gorpc

    Simple, fast and scalable golang rpc library for high load
  • resgate

    A Realtime API Gateway used with NATS to build REST, real time, and RPC APIs, where all your clients are synchronized seamlessly.
  • Temporal

    Temporal Go SDK
  • consistent

    Consistent hashing with bounded loads in Golang
  • go-peerflix

    Go Peerflix
  • digota

    ecommerce microservice
  • go-sundheit

    A library built to provide support for defining service health for golang services. It allows you to register async health checks for your dependencies and the service itself, provides a health endpoint that exposes their status, and health metrics.
  • go-jump

    go-jump: Jump consistent hashing
  • sleuth

    A Go library for master-less peer-to-peer autodiscovery and RPC between HTTP services
  • jsonrpc

    The jsonrpc package helps implement of JSON-RPC 2.0
  • dynamolock

    DynamoDB Lock Client for Go
  • outboxer

    A library that implements the outboxer pattern in go
  • Maestro

    Take control of your data, connect with anything, and expose it anywhere through protocols such as HTTP, GraphQL, and gRPC.
  • doublejump

    A revamped Google's jump consistent hash
  • dot

    3.9 0.0 DHT VS dot
    distributed data sync with operational transformation/transforms
  • celeriac

    Golang client library for adding support for interacting and monitoring Celery workers, tasks and events.
  • drmaa

    Compute cluster (HPC) job submission library for Go (#golang) based on the open DRMAA standard.
  • go-mysql-lock

    MySQL Backed Locking Primitive
  • flowgraph

    Flowgraph package for scalable asynchronous system development

Do you think we are missing an alternative of DHT or a related project?

Add another 'Distributed Systems' Package


See the video on the Youtube.



DHT implements the bittorrent DHT protocol in Go. Now it includes:

It contains two modes, the standard mode and the crawling mode. The standard mode follows the BEPs, and you can use it as a standard dht server. The crawling mode aims to crawl as more metadata info as possiple. It doesn't follow the standard BEPs protocol. With the crawling mode, you can build another BTDigg.

bthub.io is a BT search engine based on the crawling mode.


go get github.com/shiyanhui/dht


Below is a simple spider. You can move here to see more samples.

import (

func main() {
    downloader := dht.NewWire(65535)
    go func() {
        // once we got the request result
        for resp := range downloader.Response() {
            fmt.Println(resp.InfoHash, resp.MetadataInfo)
    go downloader.Run()

    config := dht.NewCrawlConfig()
    config.OnAnnouncePeer = func(infoHash, ip string, port int) {
        // request to download the metadata info
        downloader.Request([]byte(infoHash), ip, port)
    d := dht.New(config)



You can download the demo compiled binary file here.


  • The default crawl mode configure costs about 300M RAM. Set MaxNodes and BlackListMaxSize to fit yourself.
  • Now it cant't run in LAN because of NAT.


  • [ ] NAT Traversal.
  • [ ] Implements the full BEP-3.
  • [ ] Optimization.


Why it is slow compared to other spiders ?

Well, maybe there are several reasons.

  • DHT aims to implements the standard BitTorrent DHT protocol, not born for crawling the DHT network.
  • NAT Traversal issue. You run the crawler in a local network.
  • It will block ip which looks like bad and a good ip may be mis-judged.


MIT, read more here

*Note that all licence references and agreements mentioned in the DHT README section above are relevant to that project's source code only.