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
- Apache License, Version 2.0, (https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (https://opensource.org/licenses/MIT)
at your option.