Essentials Lite
Spawn, homes, warps, teleport requests, /back, private messages and broadcasts, with a teleport warmup and cooldown.
Rustic Server is Horizon’s server with a sandboxed plugin system. Create one from the launcher, host it where you want, add plugins that cannot take it down.

Recorded in Rustic Launcher with example data: a plugin that failed at start-up, updated and reloaded while the server runs.
Plugins run in a WebAssembly sandbox with fuel, memory and time limits. A trap, a panic or an infinite loop disables that plugin; the server goes on.
buggy: infinite loop
0players disconnected; only the faulty plugin is disabled
On this computer, on your own VPS over SSH, or reachable through Rustic Relay without port forwarding. Managed from the same screen.

Start a server next to your game. Console, players, backups and statistics in the launcher.

Give the launcher your server's address: it installs, configures and updates Horizon over SSH, after checking the host key with you.

No port forwarding: friends join with an invite code or a temporary address, your own domain is optional.
Watch a faulty plugin get disabled while the game goes on, what a call into a plugin costs, and the limits every plugin runs under.
Example in the server’s own log format. Limits per call: fuel, a wall-clock deadline and a memory cap.
Logarithmic bars. Source: docs/PERFORMANCE.md (Rust benchmarks of the server repo).
Default limits of each plugin
fuel_per_call = 50_000_000Instructions a plugin may run per call (default); an infinite loop runs out.epoch_deadline_ms = 50Wall-clock deadline of one call; a plugin that hangs is stopped.memory_mb = 64Default memory limit of a plugin, capped by the server (512 MB).Written from scratch for Rustic, in English and French, each one a sandboxed .rplugin you can read, test and change.
Spawn, homes, warps, teleport requests, /back, private messages and broadcasts, with a teleport warmup and cooldown.
Groups with inheritance and weights, prefixes, wildcard and negated nodes, temporary nodes, promotion tracks.
Per-group line formats, @mentions, anti-spam, link and word filters, mutes with expiry.
Chest menus built with the SDK’s Menu builder, and a recipe book of patterns to copy.
Spleef and King of the Hill: lobby countdown, timed rounds, live sidebar, a leaderboard.
$ rustic newPlugins are Rust crates built for WebAssembly with the Rustic SDK. Tests run your real plugin in an in-memory server from cargo test, MockBukkit-style, without starting a game.
use rustic::prelude::*;
#[rustic::handlers]
impl Greeter {
#[command(name = "spawn", description = "Teleport to the spawn")]
fn spawn(&mut self, cmd: &mut CommandCtx) -> CommandResult {
let player = cmd.player()?;
let spawn = World::overworld().spawn_location()?;
player.teleport(&spawn)?;
cmd.reply(Text::mini("<green>Welcome back to spawn!"));
Ok(())
}
}A /spawn command: registered when the plugin is enabled, removed when it is disabled. From the first-plugin guide.
rustic new <id>A plugin crate from a template, with passing tests.rustic buildCompile for wasm32-wasip2, check the component, package the .rplugin.rustic checkValidate a manifest or a package, list what it asks for.rustic testRun the plugin’s tests against the in-memory server.rustic run --watchStart a dev server; every save rebuilds and hot-reloads the plugin.rustic bridge analyzeTell which Bukkit plugin jars could run on Rustic Bridge.Rustic Bridge runs existing Bukkit and Paper plugin jars, unmodified, in a JVM next to the server. If one gets stuck or crashes, the JVM is stopped and those plugins are disabled; the server goes on.
Each jar becomes a Rustic plugin with its plugin.yml commands and permissions, its listeners at their priorities, its scheduler tasks and its config. Bukkit and WebAssembly plugins share the same events.
Free, with your own copy of the game. Plugins, console, players and backups on one screen.
Download