MCPcopy Index your code
hub / github.com/PerformanC/NodeLink

github.com/PerformanC/NodeLink @v3.8.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.8.0 ↗ · + Follow
4,573 symbols 11,167 edges 253 files 2,355 documented · 51%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

NodeLink Banner

NodeLink

A modern Lavalink alternative built entirely in Node.js

Lightweight, modular, and optimized for real-time performance.

📚 DocumentationAPI ReferenceNodeLink vs LavalinkTroubleshooting


Prerequisites

  • Node.js v22.22.2 or higher (v24 recommended)
  • Git

Overview

NodeLink is an alternative audio server built in Node.js, designed for those who value control and efficiency. 🌿 It doesn’t try to reinvent the wheel — it just makes it spin with less weight. Easy to configure, naturally scalable, and with smooth playback, it provides a solid foundation for music bots and real-time audio systems.

Created by Brazilian developers, NodeLink was born from the desire for a simpler, open, and truly accessible audio server for everyone.

Full documentation available at nodelink.js.org 💚


Features

  • 100% Node.js implementation – No external runtime required
  • Lavalink-compatible API – Works with most existing clients
  • Optimized decoding ⚡ – Powered by WebAssembly and native modules
  • Worker-based architecture – Each player can run in its own process for true isolation
  • Real-time audio filters – Equalizer, timescale, tremolo, compressor, echo, chorus, phaser, and more
  • Low memory footprint – Efficient even with multiple active players
  • Prometheus metrics – Production-ready monitoring with detailed statistics
  • Multiple source support – 15+ sources including YouTube, Spotify, Apple Music, Deezer, and more

Quick Start

# Clone the repository
git clone https://github.com/PerformanC/NodeLink.git
cd NodeLink

# Install dependencies
npm install

# Copy the default configuration file
cp config.default.js config.js

# Start the server
npm run start

Once started, NodeLink runs a Lavalink-compatible WebSocket server, ready for immediate use.

Docker

NodeLink also supports Docker for easy deployment:

# Using Docker Compose
docker-compose up -d

# Or using Docker directly
docker build -t nodelink .
docker run -p 2333:2333 nodelink

See the Docker guide: nodelink.js.org/docs/advanced/docker


Usage

NodeLink is compatible with most Lavalink clients, as it implements nearly the entire original API. However, some clients may not work properly, since NodeLink changes certain behaviors and endpoints.

Client Platform v3 supported? NodeLink Features? NodeLink major version Notes
Lavalink-Client JVM unknown No v1 and v2
Lavalink.kt Kotlin unknown No v1
DisGoLink Go unknown No v1 and v2
Lavalink.py Python unknown No v1 and v2
Mafic Python unknown No v1 and v2
Wavelink Python Yes No v1, v2, v3
Pomice Python unknown No v1 and v2
lava-lyra Python Yes Yes v3
Hikari-ongaku Python unknown No v1 and v2
Moonlink.js TypeScript Yes Yes v1, v2, v3
Magmastream TypeScript unknown No v1
Lavacord TypeScript unknown No v1 and v2
Shoukaku TypeScript Yes No v1, v2, v3
Hoshimi TypeScript Yes No v1, v2, v3 ;P
Lavalink-Client TypeScript Yes Yes v1, v3
Rainlink TypeScript unknown No v1 and v2
Poru TypeScript unknown No v1 and v2
Blue.ts TypeScript unknown No v1 and v2
FastLink Node.js Yes No v1, v2, v3
Riffy Node.js Yes No v1, v2, v3
TsumiLink Node.js unknown No v1 and v2
AquaLink JavaScript Yes Yes v1, v2, v3
DisCatSharp .NET unknown No v1 and v2
Lavalink4NET .NET unknown No v1 and v2
Nomia .NET unknown No v1 and v2
CogLink C unknown No v1 and v2
Lavalink-rs Rust, Python unknown No v1 and v2
nyxx_lavalink Dart unknown No v1

[!IMPORTANT] Lack of explicit NodeLink support usually means that the client implements the Lavalink API inconsistently, not following its defined formats and fields. Using such clients may lead to unexpected behavior.

[!NOTE] Data was sourced from the official Lavalink documentation and manual

Extension points exported contracts — how you extend this code

YouTubeSearchCapableClient (Interface)
(no doc) [53 implementers]
src/typings/sources/youtubeClient.types.ts
TelegramTrackPluginInfo (Interface)
* Telegram-specific plugin payload attached to resolved tracks.
src/sources/telegram.ts
LoadedPluginEntry (Interface)
* In-memory cache entry for loaded plugins. * @internal
src/managers/pluginManager.ts
LyricsSubscriptionPlayerManager (Interface)
* Runtime player manager contract required by the lyrics subscription route.
src/api/sessions.id.players.id.lyrics.subscribe.ts
ScratchState (Interface)
* Internal state for an active scratch effect.
src/playback/processing/ScratchTransformer.ts
JsonRecord (Interface)
* Object-like JSON record used to safely inspect HTTP payloads.
src/lyrics/lrclib.ts
RequestShimInternal (Interface)
(no doc)
src/index.ts
HeadQueue (Interface)
(no doc)
src/workers/headQueue.ts

Core symbols most depended-on inside this repo

logger
called by 1180
src/utils.ts
push
called by 364
src/typings/playback/streamProcessor.types.ts
get
called by 258
src/typings/sources/youtubeClient.types.ts
set
called by 251
src/typings/sources/youtubeClient.types.ts
match
called by 215
src/sources/vimeo.ts
on
called by 215
src/typings/performanc.d.ts
http1makeRequest
called by 154
src/utils.ts
split
called by 153
src/sources/youtube/sabr/sabr.ts

Shape

Method 2,361
Interface 1,181
Function 676
Class 354
Enum 1

Languages

TypeScript100%

Modules by API surface

src/playback/processing/streamProcessor.ts148 symbols
src/managers/workerManager.ts79 symbols
src/playback/player.ts68 symbols
src/index.ts68 symbols
src/typings/playback/streamProcessor.types.ts60 symbols
src/api/profiler.ts60 symbols
src/sources/vimeo.ts58 symbols
src/sources/youtube/sabr/sabr.ts57 symbols
src/sources/eternalbox.ts56 symbols
src/sources/deezer.ts56 symbols
src/workers/main.ts50 symbols
src/utils.ts50 symbols

For agents

$ claude mcp add NodeLink \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact