Deepslate

2 min read Original article ↗

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

  • Compile-time plugins: implement a Rust trait, get full type safety with minimal dispatch overhead
  • Forced hosts: route players to different servers based on the hostname they connect with
  • gRPC control plane: register servers, update routing, and manage forced hosts at runtime
  • Velocity modern forwarding: authenticate players and forward profile data to backends
  • Graceful shutdown: drain active connections on SIGTERM/SIGINT instead of dropping them

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.