A high-performance Minecraft client written in Rust
Pomme is a from-scratch Minecraft: Java Edition client built entirely in Rust. It connects to vanilla servers, renders the world through Vulkan, and handles physics, networking, and UI without any Mojang code. The goal is a lightweight, performant alternative to the official Java client.
-
Vulkan rendering -chunk meshing, frustum culling, water/lava, sky, block overlays, hand animation
-
Vanilla-exact physics -sprinting, swimming, drowning, collision, all matched against decompiled source
-
Full protocol support -connects to 26.1.1 servers via azalea-protocol, handles chunk streaming, block updates, chat
-
Microsoft authentication -sign in with your Microsoft account, tokens stored in the OS keyring
-
HUD & menus -health, hunger, air bubbles, hotbar, F3 debug, chat, pause menu, options, server list
-
Launcher -Tauri-based launcher with frosted glass UI, multi-account management, Mojang patch notes, installation manager
pomme-client/ # Minecraft client (Rust, Vulkan)
pomme-launcher/ # Launcher app (Tauri, React, TypeScript)The client is a standalone binary that receives launch arguments from the launcher. The launcher handles authentication, asset downloading, version management, and spawns the client with the appropriate flags.
Requires the Vulkan SDK and a Rust toolchain.
Can be built with pnpm (recommended):
pnpm client:build-releaseor with cargo:
cargo build -p pomme-client --releasepnpm install
pnpm launcher:build-releasepnpm launcher:devRunning the standalone client requires minecraft assets, for which you have 2 options:
-
Run the launcher and install the latest supported release. Then you can do:
pnpm client:dev -- --username Steve --quick-access-server localhost
-
If you're on linux, extract the vanilla 26.1.1 assets from
.minecraft/toreference/:mkdir -p reference/assets/indexes mkdir -p reference/assets/objects mkdir -p reference/versions/26.1.1/extracted mkdir -p reference/game-dir # 30 is the asset index id for 26.1.1 cp ~/.minecraft/assets/indexes/30.json reference/assets/indexes/26.1.1.json cp -r ~/.minecraft/assets/objects/. reference/assets/objects/ cp ~/.minecraft/versions/26.1.1/26.1.1.jar reference/versions/26.1.1/ unzip reference/versions/26.1.1/26.1.1.jar 'assets/*' -d reference/versions/26.1.1/extracted/ pnpm client:dev -- --username Steve --quick-access-server localhost \ --version 26.1.1 \ --assets-dir $PWD/reference/assets \ --versions-dir $PWD/reference/versions \ --game-dir $PWD/reference/game-dir
Contributions are welcome. Please open an issue first to discuss what you'd like to change.
This project is licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later).
It is not affiliated with or endorsed by Mojang Studios or Microsoft. Minecraft is a trademark of Mojang Studios.
