CurveCP protocol implementation in pure Javascript
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Pure Javascript CurveCP protocol

The aim of this project is to implement the CurveCP protocol in pure javascript following the specification on and interopable with the reference implementation.

This project currently implements the messaging format, encryption layer and congestion control algorithm but still needs to be tested, fine-tuned and improved upon. I don't consider this library to be usable yet.

Quick start

See examples directory for an example client and server implementation.

You should create a PacketStream to start with (supplying public/private keys and other required info) and then wrap this stream in a MessageStream() object.

Clients should then execute the connect() method on MessageStream object.


This implementation makes a clean split between:

  • The congestion control algorithm (chicago.js)
  • The crypto layer (packet-stream.js)
  • The messaging layer (message-stream.js)
  • The actual networking transport. To follow the reference implementation, you should use UDP as a networking transport (like illustrated in examples section) but in principle, the packet-stream can be connected to any networking transport. I'm also using it with different types of transports in my own projects.