Back to your adventure.
A little guidance goes a long way. Find help with installing, signing in, and making Serenity your own.
Getting it running
How do I install Serenity?
Choose your platform in the download section, download the installer, and follow the installation prompts. Then open Serenity and sign in with the Microsoft account that owns Minecraft: Java Edition.
For development from source, install Rust and Node 20 or newer. Copy .env.example to .env, run npm install in launcher/, then npm run tauri dev. The first run compiles the whole Rust dependency tree and takes several minutes; after that it is seconds.
Do I need to install a JDK for every Minecraft version?
No. The launcher finds a runtime for whichever version you play — it scans the usual install locations, so nothing has to be on your PATH. An exact match is preferred; failing that it takes the nearest newer runtime and says so in the log.
Building the mod from source does not need them installed either. Gradle fetches each version's toolchain itself.
The game launches but the menu is vanilla's.
That means Fabric started without the Serenity mod in it. The mod jars are build output rather than something the repository carries, so a fresh clone has none of them and has to build them before they exist.
From client/, build the line you are playing — for example ./gradlew "1.21.11:installToLauncher". That writes the jar both where a launcher running from source reads it and where a packaged one bundles it from.
One line does this on purpose: 1.16 is never themed. It needs Java 8, which is too tight a constraint to hold the shared source to, so it boots vanilla's menu by design.
Signing in
Nothing happens when I click sign in.
If you are running from source, this is almost always an empty SERENITY_AZURE_CLIENT_ID in .env. The launcher reads that before it opens Microsoft's window, so with it blank the window never appears at all.
Restart the launcher after editing .env. It is read once per process, so editing it while the launcher is running changes nothing.
Microsoft returns an error about the redirect URI.
Register http://localhost on your Azure app as a Mobile and desktop applications redirect URI — not a Web one. That platform type is what allows any loopback port, which is what lets the launcher bind a random one per sign-in.
Sign-in fails with a tenant error.
SERENITY_AZURE_TENANT defaults to consumers, which is right for personal Microsoft accounts. If your app registration lives in a work or school directory, set it to common.
On Linux, sign-in fails with a keyring or org.freedesktop.secrets error.
Serenity keeps your Microsoft session in your desktop's own secure storage rather than in a file. On Linux that is the Secret Service, and minimal installs of Ubuntu — and several non-GNOME desktops — do not ship one, so there is nowhere for it to go and sign-in stops.
Install a keyring, then log out and back in so it starts with your session:
sudo apt install gnome-keyring on Ubuntu or Debian, sudo dnf install gnome-keyring on Fedora. On KDE, kwalletmanager does the same job.
There is deliberately no fallback to a file. What is being stored is a token that can open your Minecraft account, and a launcher with nowhere safe to put it should say so rather than leave it somewhere anything on the machine could read.
Does Serenity see my password?
No. Sign-in is Microsoft's own auth-code flow with PKCE: their page, not ours. Tokens go to your operating system's keychain. The cosmetics service never receives an access token either — it verifies you through Mojang's third-party handshake instead. More detail.
Cosmetics
Can I buy a cape yet?
Not yet. Checkout is not open and no payment is taken anywhere on this site. The shop shows the catalogue the cosmetics service seeds itself with so the path can be tested end to end.
Nobody else can see my cape.
Capes are drawn by Serenity, so only other players running Serenity see yours. On vanilla or another client you appear with your normal skin — nothing about your account is changed by wearing one.
Do I have to buy one per version?
No. Cosmetics belong to your Minecraft account rather than to a version, so one follows you across every line you play.
Java per version
Each Minecraft release declares the JDK it was built against. The launcher picks a matching runtime for you — this is here for when you want to know what it chose.
Open the game log from the launcher's header — the icon left of the folder button. It records which runtime was chosen, which jar was loaded and what failed, and it is the first thing worth reading when a launch does not go the way it should.