Minecraft server
software for
potato machines
PotatoMC is a radically stripped-down, violently fast open-source Minecraft server written in Rust. Run a 20 TPS survival world on a $3 VPS.
Brute Force
Efficiency.
We replaced bloated JVM heaps and garbage collectors with manual memory management and jemalloc. The result is a server that runs on hardware meant for calculators.
The Pipeline.
How does PotatoMC achieve a locked 20 TPS on a single gigabyte of RAM? By completely rethinking the server architecture around an Entity Component System (ECS) and parallel processing.
1. Epoll / Kqueue Ingress
Raw TCP (Java) and UDP RakNet (Bedrock) packets hit the asynchronous network loop. Connections are handled with zero-cost abstractions.
2. Zero-Copy Decoder
Incoming bytes are mapped directly to packet structs using unsafe Rust. No memory allocation occurs during packet deserialization.
3. Rayon Work-Stealing
Tick logic (entities, block updates, physics) is broken down into parallel jobs. Idle cores steal work from busy cores to ensure 100% utilization.
4. Async Region I/O
Modified Anvil chunk data is buffered and flushed to disk on a dedicated background thread, preventing any block on the main server tick loop.
Head-to-Head.
How does PotatoMC compare to the industry standard Java servers? We put it against Paper, Spigot, and Mojang's Vanilla server across key performance and architectural metrics.
| Metric | PotatoMC | PaperMC | Spigot | Vanilla |
|---|---|---|---|---|
| Startup Time | ~0.4s | ~15s | ~20s | ~25s+ |
| Idle RAM (RSS) | ~114 MB | ~1.5 GB | ~1.2 GB | ~2.0 GB |
| CPU Usage (Idle) | < 2% | ~10-15% | ~10% | ~5% |
| Capacity (1GB RAM) | 30+ Players | 5-10 Players (OOM Risk) | 10-15 Players | 1-5 Players |
| Plugin Support | Potato API (WASM) | Bukkit / Paper API | Bukkit / Spigot API | Data Packs Only |
| Language | Rust (Native) | Java (JVM) | Java (JVM) | Java (JVM) |
| GC Pauses | ZERO (RAII) | ZGC/G1GC Spikes | Heavy GC Stops | Heavy GC Stops |
| Chunk Generation | Rayon Parallel | Mostly Single-Thread | Single-Thread | Single-Thread |
Under the Hood
Rayon Parallel Pipeline
Chunk generation and entity ticking are aggressively parallelized across all available cores using Rayon's work-stealing thread pool.
Zero-Copy Networking
Network packets are serialized directly into buffers without intermediate allocations. No wasted memory bandwidth.
Bedrock Native Bridge
Integrated RakNet protocol handler allows Bedrock players to join without heavy middleware like Geyser. It just works.
Aggressive Pruning
Unused chunks are rapidly unloaded to disk, keeping the RSS footprint firmly under 150MB for small servers.
The End of
GC Spikes.
Watch what happens to a Java server's heap when players load chunks. The Garbage Collector struggles, causing massive TPS drops. PotatoMC uses manual memory management—meaning zero pauses and a perfectly locked memory footprint.
Memory Architecture
LIVE SIMULATIONDevelopment Roadmap
The path to replacing the JVM
The Core Engine
- ❯Native Rust memory management
- ❯Rayon parallel chunk generation
- ❯Cross-play: Java & Bedrock (RakNet)
- ❯Zero-copy packet serialization
- ❯Basic entity physics & movement
The Potato API
- ❯WebAssembly (WASM) plugin support
- ❯Dynamic registry injection
- ❯Custom blocks & items API
- ❯Event listener hooks
- ❯Hot-reloading for scripts
Redstone & AI
- ❯Deterministic redstone graph
- ❯A* Pathfinding navmeshes
- ❯Advanced mob behaviors
- ❯Complex world-gen structures
Production Ready
- ❯100% Vanilla parity (Mechanics)
- ❯Enterprise proxy forwarding
- ❯High-availability clustering
- ❯Long-term API stability guarantees
Intel.
Frequently Asked Questions & Technical Specifications
Can I run Bukkit / Spigot / Paper plugins?
No. JVM bytecode cannot execute within a native Rust binary. PotatoMC will utilize its own ultra-fast extension system known as the Potato API, which will support WebAssembly (WASM) based plugins.
Does it support Geyser for Bedrock players?
You don't need Geyser. PotatoMC has a built-in RakNet network bridge that natively translates and supports Bedrock connections at the protocol level without any external middleware.
What dimensions are supported?
Currently, the Overworld, Nether, and The End are fully supported. World generation uses deterministic Rust noise algorithms to closely match vanilla seed generation.
Can I use BungeeCord or Velocity?
Yes. PotatoMC supports standard proxy forwarding protocols (including Velocity modern forwarding and BungeeCord IP forwarding) so it can seamlessly drop into your existing proxy networks.
Why is it called PotatoMC?
Because it is so violently optimized and lightweight that it could theoretically run a stable server on a literal potato. Or a Raspberry Pi 2. Same thing.
Is it production ready?
Not yet. While it boasts a 0.4s startup time and a tiny memory footprint, complex redstone mechanics and advanced mob AI are still under active development.
Get Running.
No JRE. No configurations.
One native binary.
Download PotatoMC for Linux
Run this command to fetch and execute the setup script. It downloads the static binary directly.
curl -sSL https://potatomc.flaxa.in/install.sh | bash
cd potato-server
./potato-server run