node package manager


webtorrent-hybrid travis npm downloads javascript style guide

Streaming torrent client (with WebRTC support in Node.js)

In node.js, the webtorrent package only connects to normal TCP/UDP peers, not WebRTC peers. If you want to connect to all types of peers, including WebRTC peers, from node.js, you need to use this package (webtorrent-hybrid).

Previous versions (0.x) of this package used wrtc, a WebRTC implementation via native extensions, the current one is based on electron-webrtc (which in turn uses electron-prebuilt) for better compatibility. It creates a hidden Electron process (which is based on Chromium, so WebRTC support is great!) and communicates with that process to enable WebRTC in Node.js. This adds a lot of overhead, so we are looking forward to using a pure JavaScript implementation, like perhaps Node-RTCPeerConnection when it's ready.

To run this package on a headless server execute the provided script or follow these instructions.


To install WebTorrent:

npm install webtorrent-hybrid

To install a webtorrent-hybrid command line program, run:

npm install webtorrent-hybrid -g


On OS X, this should Just Work™.


The current version of webtorrent-hybrid requires a screen, since the headless Electron instance expects one. If you're running in a screenless environment (like on a server), you must use a virtual screen such as xvfb. You must install it before using webtorrent-hybrid.

For Debian / Ubuntu:

sudo apt-get install xvfb

If you get an error about a missing .so file ("error while loading shared libraries"), use the search at the bottom of to find out which packages in your release provide a given file.

On server editions, the following additional packages should be installed since Electron depends on them:

sudo apt-get install libgtk2.0-0 libxtst-dev libxss-dev libgconf2-dev libnss3 libasound2-dev

For CentOS / RHEL:

sudo yum install xorg-x11-server-Xvfb


webtorrent-hybrid has the same command line interface (CLI) and module API as webtorrent. Just require('webtorrent-hybrid') instead of require('webtorrent').

See the WebTorrent docs.


MIT. Copyright (c) Feross Aboukhadijeh and WebTorrent, LLC.