A reimplementation of the minecraft server in rust.
Rust
2,428
2,113 commits
updated Aug 14, 2026
[!IMPORTANT]
๐ง A fresh rewrite of FerrumC is in the works
We're rebuilding FerrumC from scratch on the
rework/v2-skeletonbranch, and we plan to merge it intomastersoon. What works so far:
- A cleaner, faster core that's much easier to build on.
- A flat creative world you can join with a normal Minecraft 1.21.8 client. Blocks like logs, slabs, stairs, fences, and doors place facing the right way, and signs and chests work.
- Area edit commands such as
/fill,/replace, and/undo.- A day and night cycle, and you can watch other players turn, look around, and hold items and armor.
- Your builds are saved when you leave, rejoin, or restart the server, and you can import an existing vanilla world.
- Plugins, written in Rust, that can allow, block, or change what players build.
- A local-only web dashboard for keeping an eye on the server.
It's early, offline-mode alpha: a creative and minigame server, not survival, not vanilla-accurate, and not a drop-in replacement for Paper or Spigot. Want to follow along or lend a hand? Come poke at the branch above.
FerrumC is a 1.21.8 Minecraft server implementation written from the ground up in Rust. Leveraging the power of the Rust programming language, it is completely multithreaded and offers high performance as well as amazing memory efficiency!
Visit ferrumc.com for more information. The official Docs are currently under construction, but you can join our Discord server for help or to discuss the project!
Unfortunately, the server is not yet ready for production use. We are still in the early stages of development and are working hard to add more features and fix bugs. For now, you can either compile the server from source or download from Github Actions.
Tagged releases publish a Docker image and pre-built binaries for each supported platform. This applies to every release, so the steps below are the same regardless of version.
docker pull ghcr.io/ferrumc-rs/ferrumc:<version>
docker run -p 25565:25565 ghcr.io/ferrumc-rs/ferrumc:<version>
Or use Docker Compose:
services:
ferrumc:
image: ghcr.io/ferrumc-rs/ferrumc:<version>
ports:
- "25565:25565"
restart: unless-stopped
Download the binary for your platform from the Releases page, then run it directly:
# Linux/macOS
chmod +x ferrumc-*
./ferrumc-*
# Windows
.\ferrumc-*.exe
Each binary ships with a SHA256 checksum file you can use to verify the download:
# Linux/macOS
shasum -a 256 -c ferrumc-*.sha256
# Windows PowerShell
Get-FileHash ferrumc-*.exe -Algorithm SHA256

Artifacts sectionUsage section# Clone the repository
git clone https://github.com/ferrumc-rs/ferrumc
cd ferrumc
# Build the project
cargo build --release
Usage: ferrumc.exe [OPTIONS] [COMMAND]
Commands:
setup Sets up the config
import Import the world data
run Start the server (default, if no command is given)
help Print this message or the help of the given subcommand(s)
Options:
--log <LOG> [default: debug] [possible values: trace, debug, info, warn, error]
-h, --help Print help
ferrumc.exe or ferrumc depending on the OS) to your desired server directory./ferrumc setup
config.toml file to customize your server settings.\ferrumc.exe./ferrumc--log=<level>:
.\ferrumc.exe --log=info for info level loggingtrace (Extremely verbose)debug (Default, Slightly verbose, used for debugging)info (Recommended, useful information)warn (Only warnings)error (Only errors)sudo docker build -t ferrumc:yourtag .docker run --rm -it -p 25565:25565 ferrumc:yourtagWe welcome contributions! If you'd like to contribute to FerrumC, please follow these steps:
Please join our Discord server to get help or discuss the project! Also have a look at our CONTRIBUTING.md file for more information.
FerrumC supports Tracy for profiling. To use it:
cargo run --release --features tracy
Yes! We currently have some very rudimentary terrain generation and vanilla terrain is currently being worked on. However, we will be implementing optimizations and cutting corners to improve performance. This could lead to the world not being exactly the same as vanilla and differences may not be fixed if they would lead to performance issues that we deem to outweigh the benefits of vanilla accuracy. That being said, we will try to make it as close to vanilla as possible without sacrificing performance.
We do very much plan to have a plugin system and as of right now we are planning to use some kind of FFI (foreign function interface) to allow for plugins to be written in Rust. Plugins are not our top priority right now, and we want to make sure the API is designed well before we start implementing it to avoid breaking changes later. We are open to suggestions and ideas from the community on how to best implement this.
No. Even if we did implement a perfect 1:1 API match for the vanilla server, the underlying implementation is still completely different. Java plugins and mods rely heavily on Java features such as reflection and dynamic class loading, which simply aren't possible in Rust. If we made a Java translation layer, it would be extremely slow and only the most basic plugins and mods would work. If a plugin or mod is basic enough to work through a translation layer, it would be much better to just rewrite it in Rust for performance and compatibility reasons.
It's a play on words. Ferrum is the Latin word for iron and it rusts. And MC (Minecraft) in the end. So it becomes Ferrumc. Get it? ๐
This project is licensed under the MIT License - see the LICENSE.md file for details.
(top 24 of 38)
2,293 followers ยท starred Sep 2024
1,103 followers ยท starred Sep 2024
59 followers ยท starred Jul 2026
115 followers ยท starred Sep 2025
A reimplementation of the minecraft server in rust.
Rust
2,428
2,113 commits
updated Aug 14, 2026
[!IMPORTANT]
๐ง A fresh rewrite of FerrumC is in the works
We're rebuilding FerrumC from scratch on the
rework/v2-skeletonbranch, and we plan to merge it intomastersoon. What works so far:
- A cleaner, faster core that's much easier to build on.
- A flat creative world you can join with a normal Minecraft 1.21.8 client. Blocks like logs, slabs, stairs, fences, and doors place facing the right way, and signs and chests work.
- Area edit commands such as
/fill,/replace, and/undo.- A day and night cycle, and you can watch other players turn, look around, and hold items and armor.
- Your builds are saved when you leave, rejoin, or restart the server, and you can import an existing vanilla world.
- Plugins, written in Rust, that can allow, block, or change what players build.
- A local-only web dashboard for keeping an eye on the server.
It's early, offline-mode alpha: a creative and minigame server, not survival, not vanilla-accurate, and not a drop-in replacement for Paper or Spigot. Want to follow along or lend a hand? Come poke at the branch above.
FerrumC is a 1.21.8 Minecraft server implementation written from the ground up in Rust. Leveraging the power of the Rust programming language, it is completely multithreaded and offers high performance as well as amazing memory efficiency!
Visit ferrumc.com for more information. The official Docs are currently under construction, but you can join our Discord server for help or to discuss the project!
Unfortunately, the server is not yet ready for production use. We are still in the early stages of development and are working hard to add more features and fix bugs. For now, you can either compile the server from source or download from Github Actions.
Tagged releases publish a Docker image and pre-built binaries for each supported platform. This applies to every release, so the steps below are the same regardless of version.
docker pull ghcr.io/ferrumc-rs/ferrumc:<version>
docker run -p 25565:25565 ghcr.io/ferrumc-rs/ferrumc:<version>
Or use Docker Compose:
services:
ferrumc:
image: ghcr.io/ferrumc-rs/ferrumc:<version>
ports:
- "25565:25565"
restart: unless-stopped
Download the binary for your platform from the Releases page, then run it directly:
# Linux/macOS
chmod +x ferrumc-*
./ferrumc-*
# Windows
.\ferrumc-*.exe
Each binary ships with a SHA256 checksum file you can use to verify the download:
# Linux/macOS
shasum -a 256 -c ferrumc-*.sha256
# Windows PowerShell
Get-FileHash ferrumc-*.exe -Algorithm SHA256

Artifacts sectionUsage section# Clone the repository
git clone https://github.com/ferrumc-rs/ferrumc
cd ferrumc
# Build the project
cargo build --release
Usage: ferrumc.exe [OPTIONS] [COMMAND]
Commands:
setup Sets up the config
import Import the world data
run Start the server (default, if no command is given)
help Print this message or the help of the given subcommand(s)
Options:
--log <LOG> [default: debug] [possible values: trace, debug, info, warn, error]
-h, --help Print help
ferrumc.exe or ferrumc depending on the OS) to your desired server directory./ferrumc setup
config.toml file to customize your server settings.\ferrumc.exe./ferrumc--log=<level>:
.\ferrumc.exe --log=info for info level loggingtrace (Extremely verbose)debug (Default, Slightly verbose, used for debugging)info (Recommended, useful information)warn (Only warnings)error (Only errors)sudo docker build -t ferrumc:yourtag .docker run --rm -it -p 25565:25565 ferrumc:yourtagWe welcome contributions! If you'd like to contribute to FerrumC, please follow these steps:
Please join our Discord server to get help or discuss the project! Also have a look at our CONTRIBUTING.md file for more information.
FerrumC supports Tracy for profiling. To use it:
cargo run --release --features tracy
Yes! We currently have some very rudimentary terrain generation and vanilla terrain is currently being worked on. However, we will be implementing optimizations and cutting corners to improve performance. This could lead to the world not being exactly the same as vanilla and differences may not be fixed if they would lead to performance issues that we deem to outweigh the benefits of vanilla accuracy. That being said, we will try to make it as close to vanilla as possible without sacrificing performance.
We do very much plan to have a plugin system and as of right now we are planning to use some kind of FFI (foreign function interface) to allow for plugins to be written in Rust. Plugins are not our top priority right now, and we want to make sure the API is designed well before we start implementing it to avoid breaking changes later. We are open to suggestions and ideas from the community on how to best implement this.
No. Even if we did implement a perfect 1:1 API match for the vanilla server, the underlying implementation is still completely different. Java plugins and mods rely heavily on Java features such as reflection and dynamic class loading, which simply aren't possible in Rust. If we made a Java translation layer, it would be extremely slow and only the most basic plugins and mods would work. If a plugin or mod is basic enough to work through a translation layer, it would be much better to just rewrite it in Rust for performance and compatibility reasons.
It's a play on words. Ferrum is the Latin word for iron and it rusts. And MC (Minecraft) in the end. So it becomes Ferrumc. Get it? ๐
This project is licensed under the MIT License - see the LICENSE.md file for details.
(top 24 of 38)
2,293 followers ยท starred Sep 2024
1,103 followers ยท starred Sep 2024
59 followers ยท starred Jul 2026
115 followers ยท starred Sep 2025