Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

ouncebrew/kaihen

Games

A homebrew environment and minimal custom firmware for Switch 2, aimed at developers and advanced users.

174
20
C++
GPL-2.0
new today

Project overview

kaiHEN 改変 provides a homebrew environment and a minimal custom firmware for Switch 2. It is made up of several cooperating components: an ldr:ro service (ro/) that maps NROs into client processes, publishes JIT code, and hands initialized clients a session with HEN; a startup program (bootstrap/) that launches HEN and plugins and connects RO to HEN; the HEN service (hen/) that starts the homebrew loader when a native game is opened with R held, gives each program its own session on an SM proxy, and serves the homebrew interface; the libkaihen/ homebrew API with JIT support; and shared protocol definitions in common/. It targets people developing or running homebrew on Switch 2.

Getting started

HEN is started through the acquisition tools available for Switch 2. After that, hold R while opening a native game to launch the homebrew loader; from the second launch onward this goes into hbmenu.

To build the components, install the Switch 2 devkit in devkitPro from the ounce-devkit repository, then run in the repository root:

make

This produces RO at ro/build/main, HEN at hen/build/main, the bootstrap at bootstrap/build/bootstrap.bin, and libkaihen under libkaihen/build/. make LIBOUNCE=DIR builds against another libounce.

With Docker or Podman, inside the devkit image:

docker build --output out .

This writes out/ro/main, out/hen/main, out/bootstrap.bin, and out/libkaihen/. Adding --build-arg RELEASE=1 instead writes the release archive out/kaiHEN.zip, containing those binaries plus nx-hbloader, nx-hbmenu, OunceShell (a file manager with an FTP server), and the bundled licenses, built at the commits named in the Dockerfile.

Host tests are run with sh hen/test.sh and sh ro/test.sh; they compile with the host compiler and read libounce headers from LIBOUNCE.

Building homebrew

Existing Switch 1 homebrew that uses libnx and OpenGL or Vulkan can be compiled for Switch 2 with the ounce-devkit. Homebrew and plugins are granted access to all system modules that fs can access.

Constraints and risks

The project is a work in progress and may contain bugs. It allows full system access, including the system NAND; a malicious homebrew could write to the console and permanently brick it. The project is licensed under GPL-2.0-only with an exemption for Nintendo, while libkaihen/ is ISC; each file names its license in an SPDX header.

HotRepo's take

kaiHEN 改変 appeared on the HotRepo new-project list for the C++ language on 2026-11-14, reporting 100 stars and 9 forks gained across a roughly 14-hour window beginning 2026-11-13. That is a single early snapshot with no GitHub daily rank recorded, so it shows initial interest rather than an established trend. The repository's substance is in its component split (RO, HEN, bootstrap, libkaihen) and its documented build paths, which makes it a concrete implementation to evaluate rather than just a distribution wrapper.

Written by AI from the project's README, updated . The project's own docs are the source of truth.

You might also like

  1. Atmosphere-NX/AtmosphereA custom firmware for the Nintendo Switch that replaces its boot chain and OS components to enable homebrew and system modifications.C++20,200
  2. ravensclawx/HBLauncherBrowse and launch GPU homebrew apps on a Switch 2 through SmileBASIC, with an SDK for building them.JavaScript136
  3. heydemoura/EglantinePS5Experimental PS5 homebrew port of the Eglantine Switch 2-capable emulator, for jailbroken consoles.C++358
  4. aydencharles/onionHENA modular homebrew payload stack that gives jailbroken PS5 consoles a settings toolbox, plugins, overlays and cheat loading.C++468
  5. itsPLK/ps5-payload-managerWeb dashboard for managing, importing, and auto-loading payloads on a PS5, aimed at homebrew users.JavaScript740