SJMCL: a Tauri and Next.js Minecraft launcher with a community extension system
🌟 A Minecraft launcher born from @SJMC-Dev, built with the community
At a glance
- What is it?
- SJMCL is a cross platform Minecraft launcher built with Tauri 2, Next.js, and Chakra UI, with instance management, CurseForge and Modrinth downloads, Microsoft and Yggdrasil login, and an open extension system. Its Windows installer, AUR package, and Homebrew cask are community maintained, so supply chain checks are part of installing it.
- Who is it for?
- SJMCL fits a Minecraft player who wants instance management, Modrinth and CurseForge downloads, multiple accounts, and a launcher that runs on Windows, macOS, and Linux from one codebase, and who is willing to use a project still on a 1.x version. It is the wrong tool if you need an official launcher, since the README states plainly that it is not an official Minecraft service and is not approved by or associated with Mojang or Microsoft.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A launcher built for people running more than one Minecraft
SJMCL is a Minecraft launcher born from SJMC-Dev and built with the community, and the feature list explains what kind of user it is built for. The headline is efficient instance management, supporting multiple game directories and instances and letting you manage all instance resources, such as saves, mods, resource packs, shaders, and screenshots, along with settings in one place. Convenient resource download follows, covering game clients, mod loaders, game resources, and modpacks from CurseForge and Modrinth. Below that sits a multi-account system with built-in Microsoft login and third-party authentication server support, compatible with the OAuth login process proposed by the Yggdrasil Connect proposal. This is not a launcher for one account and one vanilla session. It is a launcher for the person with a modded profile, a vanilla profile, and a server pack, who wants them side by side without fighting a folder of saves.
Tauri and Next.js, which is a unusual pairing for a desktop app
The stack is stated in the README's Built with badges and confirmed by the package manifest. The shell is Tauri v2, which means the UI is web technology running in a native window, and the front end is Next.js 16 with React 18, styled with Chakra UI v2 and Emotion. The Tauri plugin list in the dependencies is the interesting part for understanding the feature set, since each plugin is a capability the launcher has claimed. There is a deep-link plugin and an http plugin, which together support the external service collaboration the README describes, working with external web pages, applications, and agent services through deeplinks and MCP services. There are also clipboard, dialog, fs, log, opener, os, and window-state plugins. A launcher built this way can hand a URL to another program and receive one back, which is the mechanism behind the automation features the README mentions.
The extension system is the part a community can actually build on
The open extension system is listed as a first-class feature, with a link to a community extension gallery, and the README points developers to extension documentation that includes an introduction to the extension system, API references, and a scaffold to create a template project quickly. Combined with the deeplink and MCP support, this is the part of the design that goes beyond a launcher. An extension is a way to add behaviour to the launcher without forking it, and a deeplink is a way for another program to trigger that behaviour. The repository layout backs this up, with a `cli/` directory, a `tools/` directory, an `src-tauri/` directory holding the Rust side, and an `AGENTS.md` and `CLAUDE.md` at the root, which suggests the project expects automated tooling to work inside its repository. The `scripts/` directory carries the version and locale tooling that the package manifest calls from `pnpm version` and `pnpm locale`.
Installing on Linux, macOS, and Windows, five different ways
The README documents command line installs for all three platforms, which is unusual for a launcher and useful for scripted setups. On Linux the shell installer fetches the latest stable release:
curl -LsSf https://mc.sjtu.cn/sjmcl/releases/install.sh | sh -s -- --source sjmcThe portable build installs without root access, using `curl -LsSf https://mc.sjtu.cn/sjmcl/releases/install.sh | sh -s -- --portable --source sjmc`. There is also a Homebrew cask, an AUR package installed with `yay -S sjmcl-bin` or cloned from `https://aur.archlinux.org/sjmcl-bin.git` and built with `makepkg -si`, and a Snap package installed with `sudo snap install sjmcl`. On macOS the route is the Homebrew cask, `brew install --cask sjmcl`. On Windows it is Winget, `winget install SJMC.SJMCL`. The README also carries the platform table, with Windows 10 and above in `aarch64`, `i686`, and `x86_64` as an installer or portable `.exe`, macOS 10.15 and above in `aarch64` and `x86_64` as `.app` or `.dmg`, and Linux on webkit2gtk 4.1 as in Ubuntu 22.04, in `aarch64` and `x86_64`, with `.deb`, `.rpm`, and a portable binary.
Two warnings in the install section are worth reading twice
The README attaches two specific cautions, and both concern things outside the project's control. The first is about Snap. When installing via Snap, game data may be stored in a sandboxed directory by default, and the warning says to back up important data such as saves, resource packs, and mods before uninstalling the launcher. That is a data portability warning about a packaging decision made by the Snap format rather than by SJMCL. The second is about Winget. The Winget index is publicly maintained, and the README advises running `winget show SJMC.SJMCL` before installing to inspect the installer URL, and making sure the download source is `github.com/UNIkeEN/SJMCL` or `sjmcl.club`. For a launcher that downloads and executes game code on your machine, and that runs with your account credentials, that is a sensible habit to apply to any launcher, not just this one.
Running from source is a pnpm install and a Tauri dev command
The development path is short. You clone the repository and install the dependencies:
git clone [email protected]:UNIkeEN/SJMCL.git
pnpm installand then run the project in development mode with:
pnpm tauri devThe package manifest shows how the pieces fit together. The `dev` script is `next dev`, `build` is `next build --webpack`, and `start` is `next start`, while the `tauri` script simply forwards to `tauri`, which is how `pnpm tauri dev` reaches the desktop shell. The `browserslist` entry targets Safari 14 and above, which is a useful hint about the rendering floor of the web view. The lint-staged configuration is thorough: ESLint with `--no-fix --max-warnings=0` over the TypeScript sources and the scripts, `rustfmt --check` over the Rust sources in `src-tauri`, and locale diffs between `en` and `zh-Hans` for the translation files. Husky is wired up as the `prepare` script, so the git hooks install themselves on the first install.
The licence adds conditions beyond plain GPLv3
The software is distributed under the GNU General Public License v3.0, and the copyright line reads SJMCL Team, 2024 to 2026. What is unusual is the additional terms file, `LICENSE.EXTRA`, which the README says are required by GPLv3 licence term 7 when distributing a modified version. The stated conditions include using a different software name than SJMCL or SJMC Launcher, and marking clearly in your repository that the work is a modified version, with further conditions listed in the extra file. This is the GPL mechanism for requiring modified versions to carry additional notices, and it matters for anyone who forks the launcher, because a fork has to change the name and state the modification rather than shipping under the original branding. Separately, the README states that the project is not an official Minecraft service and is not approved by or associated with Mojang or Microsoft, which is the trademark position every third party launcher has to take.
Editorial conclusion
SJMCL fits a Minecraft player who wants instance management, Modrinth and CurseForge downloads, multiple accounts, and a launcher that runs on Windows, macOS, and Linux from one codebase, and who is willing to use a project still on a 1.x version. It is the wrong tool if you need an official launcher, since the README states plainly that it is not an official Minecraft service and is not approved by or associated with Mojang or Microsoft. Before you install, run `winget show SJMC.SJMCL` and confirm the download source is `github.com/UNIkeEN/SJMCL` or `sjmcl.club`, and note that the Snap package stores game data in a sandboxed directory, so saves and mods need backing up before you uninstall.
Frequently asked questions
How do I install SJMCL on Windows?
The README documents a Winget install with `winget install SJMC.SJMCL`. It warns that the Winget index is publicly maintained and advises running `winget show SJMC.SJMCL` first to confirm the download source is `github.com/UNIkeEN/SJMCL` or `sjmcl.club`.
How do I install the portable SJMCL build on Linux without root?
The README gives a portable install command, `curl -LsSf https://mc.sjtu.cn/sjmcl/releases/install.sh | sh -s -- --portable --source sjmc`, which installs without root access. Other Linux options include the Homebrew cask, the AUR package `sjmcl-bin`, and the Snap store.
What platforms and architectures does SJMCL support?
Windows 10 and above in `aarch64`, `i686`, and `x86_64` with an installer or portable `.exe`; macOS 10.15 and above in `aarch64` and `x86_64` as `.app` or `.dmg`; and Linux on webkit2gtk 4.1, for example Ubuntu 22.04, in `aarch64` and `x86_64` with `.deb`, `.rpm`, and a portable binary.
What accounts can I use to sign in to SJMCL?
The launcher has a multi-account system with built-in Microsoft login and third-party authentication server support, and it is compatible with the OAuth login process proposed by the Yggdrasil Connect proposal.
Can I write extensions for SJMCL?
Yes. The README lists an open extension system and links extension documentation that includes an introduction to the extension system, API references, and a scaffold for a template project. A community extension gallery is linked as well.
What licence applies to SJMCL and to forks of it?
The software is distributed under the GNU General Public License v3.0, and the README states that by GPLv3 licence term 7 a modified distribution must also obey GPLv3 along with additional terms in the LICENSE.EXTRA file, including using a different software name and clearly marking the repository as modified.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/unikeen-sjmcl)Was this useful?