Skip to content
View colocohen's full-sized avatar
๐Ÿงฉ
Focusing
๐Ÿงฉ
Focusing

Sponsors

@cometkim
@NullVoxPopuli

Block or report colocohen

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please donโ€™t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
colocohen/README.md

Aviv Cohen

Author of low-level libraries for Node.js. Pure-JavaScript implementations of core internet protocols - QUIC/HTTP3, TLS, DNSSEC, STUN/TURN, WebRTC, SMTP - alongside supporting libraries for real-time media, data formats, storage, and runtime utilities.

These libraries share a single principle: every layer of the stack should be controllable from code. Running nginx, BIND, Postfix, or coturn next to your Node.js application is the standard answer - but it limits you to what their configuration files allow, makes the system hard to extend in directions the original authors didn't anticipate, and puts a process boundary between every layer. Each library here removes that compromise. The protocol becomes a function you write, not a config you maintain - DNS records computed at runtime per query, cryptographic keys held in your own code, every packet visible to your handler.

The libraries are also intentionally narrow. Each one implements its protocol and stops there. Every decision the protocol doesn't dictate - storage, business logic, signaling transport, architectural choices - stays in your code. They are libraries to compose, not frameworks to inherit.

When that's true, infrastructure stops being something you assemble around your code and becomes part of it. A two-person team can ship a system that used to require a dedicated SRE. Edge deployments don't have to ship without DNS, mail, or media handling. Geo-routing, canary releases, and health-driven failover stop being managed-service features and become a few lines of JavaScript. When something fails at the protocol level, you read source - your source. That's the Node.js these libraries are working toward.

Projects

Networking & internet protocols

Project Description
โšก quico First full QUIC and HTTP/3 implementation in pure JavaScript for Node.js.
๐Ÿ” lemon-tls TLS 1.3 / 1.2 implementation with full control over cryptographic keys and the record layer.
๐Ÿ“œ cert-manager ACME client with automatic certificate management. Zero dependencies.
๐ŸŒ dnssec-server Handler-based authoritative DNS - answers computed per query in JavaScript, DNSSEC signed at runtime, no zone files.
๐Ÿ›ฐ๏ธ turn-server Embeddable STUN/TURN client and server. Full RFC coverage, zero dependencies.
๐Ÿ“ง email-server Full mail stack - SMTP, IMAP, and POP3 (server + client) with DKIM, SPF, DMARC, and MTA-STS built in.

Real-time communication & media

Project Description
๐Ÿ“ก stable-webrtc WebRTC for Node.js and browsers, focused on signaling reliability and connection state in production.
๐ŸŽฅ webrtc-server Server-side WebRTC stack with a browser-compatible API - SFU, RTP, data channels.
๐ŸŽ™๏ธ rtp-packet RTP, RTCP, and SRTP packetization for Node.js.
๐ŸŽž๏ธ media-processing WebCodecs-compatible API for encoding, decoding, muxing, and demuxing - backed by FFmpeg subprocesses.

Data & storage

Project Description
๐Ÿ’พ uni-indexeddb Unified key-value storage with the same API across browser (IndexedDB) and server (LevelDB).
๐Ÿ—œ๏ธ litepack Schema-based binary encoding for JavaScript - compact, fast, zero dependencies.

JavaScript primitives & utilities

Project Description
๐Ÿงฎ bloom-filter-numbers Bloom filter optimized for numeric IDs, using splitmix64 and XOR fingerprinting.
๐Ÿ“ flat-ranges Merge, subtract, and invert flat numeric ranges.
๐ŸŽฒ pcg64dxsm Bit-compatible PCG64-DXSM PRNG. WASM-accelerated, NumPy-compatible.
๐Ÿ”” deep-events Path-based event system covering events, state, DOM, workers, and lifecycle cleanup.
๐ŸŒ hint-locale Locale detection from browser signals and HTTP headers - country, language, confidence scoring.
๐Ÿงญ js-runtime-environment Detect the JavaScript runtime - Browser, Node.js, Deno, Bun, Electron, and more.

Contributing

Building production-grade implementations of the entire internet stack in pure JavaScript is more work than one person can finish alone. These projects benefit from anyone willing to read an RFC closely, find the edge case nobody else has hit, or push a library in directions the original draft never imagined. Issues, pull requests, and design discussions are open on every repository - particularly welcome from protocol implementers, security researchers, and engineers running these stacks in production.

Sponsorship

If your team relies on any of these libraries, sponsorship through GitHub Sponsors supports continued development and maintenance.

Popular repositories Loading

  1. quico quico Public

    Pure JavaScript QUIC/HTTP3 implementation for Node.js

    JavaScript 85 2

  2. lemon-tls lemon-tls Public

    JavaScript TLS 1.3/1.2 implementation for Node.js, with full control over cryptographic keys and record layer.

    JavaScript 7

  3. dnssec-server dnssec-server Public

    Pure JavaScript authoritative DNS server for Node.js with built-in DNSSEC, dynamic zones, and modern record support.

    JavaScript 4 1

  4. stable-webrtc stable-webrtc Public

    Stable, production-ready WebRTC for Node.js & Browsers

    JavaScript 2

  5. flat-ranges flat-ranges Public

    Lightweight JavaScript library for merging, subtracting, and inverting flat numeric ranges

    JavaScript 1

  6. hint-locale hint-locale Public

    Client & server locale detection from browser signals and HTTP headers - country, language, confidence scoring. Zero dependencies, single file.

    JavaScript 1