Skip to content
Hekate, a highly-concurrent BitTorrent seeder
Find file
Failed to load latest commit information.
dht @ e4f5b6d Import dht-0.21 plus one patch.
.gitignore Add .gitignore
.gitmodules Import dht-0.15 as a submodule
LICENCE Add 2010 Copyright
Makefile Generate call graphs even when missing annotations
README Add website to README
hashtable.c Make private functions and variables static
hashtable.h Free the hashtable when exiting
hekate.cpc Use random(3) if /dev/urandom is not available Log dht messages and tweak debug levels
io.cpc cpc_runtime.h must be included first
io.h Use lazy buffers for reads
list.c Add 2010 Copyright
list.h use signaling instead of flag for stream_writer
parse.c Remove spurious, commented cps keywords
parse.h Change token names.
server.h Make private functions and variables static
torrent.c Change token names.
torrent.h Add 2010 Copyright
tracker.cpc Use random(3) if /dev/urandom is not available
util.c Use random(3) if /dev/urandom is not available
util.h Use random(3) if /dev/urandom is not available



Hekate is a BitTorrent seeder (informally, a "BitTorrent server", or software
for your "seedbox") designed to handle millions of simultaneous torrents and
tens of thousands of simultaneously connected peers.

Hekate is written in CPC, an experimental concurrent dialect of C. In order to
build Hekate, you will need to install the CPC compiler first.

Checking out from repository

If you want to grab the latest development version:

  git clone --recursive git://

Note that you need the --recursive flag because of the dht submodule.
In case you forget it, you can check out (and update) submodules with:

  git submodule update --init

There is also a github mirror:

  git clone --recursive git://


To build Hekate, you need to install:

- the CPC compiler [],
- libcurl,
- libopenssl,
- libpthread (which is required by CPC anyway),

and run:


Known bugs and limitations

- When listening() fails, trackers and dht continue to run whereas Hekate
  should leave.
- Hekate uses mmap() for every file it serves, and never releases them.  This
  means you need enough virtual memory to hold all your files; this might be an
  issue if you run Hekate on a 32-bit architecture.

Do not hesitate to report other bugs to the hekate-users mailing list:

Gabriel Kerneis <>
Something went wrong with that request. Please try again.