
A modern Lavalink alternative built entirely in Node.js
Lightweight, modular, and optimized for real-time performance.
📚 Documentation • API Reference • NodeLink vs Lavalink • Troubleshooting
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 💚
# 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.
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
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
$ claude mcp add NodeLink \
-- python -m otcore.mcp_server <graph>