Deepslate

Deepslate is a high-performance Minecraft server proxy written in Rust.

Deepslate sits between your players and your backend servers, handling authentication, packet forwarding, and server switching.

It's built for server networks that need a proxy they can trust at scale.

Plugins are compiled into the binary rather than loaded at runtime, giving you full type safety with minimal dispatch overhead.

Features

Quick start

Add deepslate to your Cargo.toml:

[dependencies]
deepslate = "0.3"
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }

Build your own proxy binary with a plugin:

use deepslate::{Proxy, ServerId};
use deepslate::event::*;
use deepslate::event::events::*;

const LOBBY: ServerId = ServerId::new("lobby", "127.0.0.1:25566");

struct LobbyPlugin;

impl Plugin for LobbyPlugin {
    fn register(&self, events: &mut EventManager) {
        events.subscribe::<ChooseServerEvent>(PostOrder::EARLY, |event| {
            event.set_server(&LOBBY);
        });

        events.observe::<LoginEvent>(Phase::Post, |event| {
            println!("Player logged in: {}", event.player.profile.name);
        });
    }
}

#[tokio::main]
async fn main() {
    let proxy = Proxy::builder()
        .forwarding_secret("your-secret")
        .server(&LOBBY)
        .try_servers([&LOBBY])
        .plugin(LobbyPlugin)
        .build()
        .expect("failed to build proxy");

    deepslate::init_tracing(proxy.config());
    proxy.run().await.expect("proxy error");
}

Documentation

For configuration, the plugin API, events, and more, see the wiki.

License

Deepslate is licensed under either of

at your option.