NATIVE REACTIVE UI / CROSS-PLATFORM

Build interfaces
closer to the metal.

ENKI is a production-grade C++20 GUI framework for teams who need modern declarative productivity without a managed runtime, browser engine, or platform rewrite.

V0.1.0 / APACHE 2.0130+ WIDGETS5 TARGET SURFACES0.2MS FRAME PACING
ENKICORE RUNTIME
C++20SKIAANUBLoC
ONE CODEBASE→DESKTOP→EMBEDDED→MOBILE→WEB / WASM

Native performance.
Human-scale APIs.

ENKI combines a three-tree reactive architecture, an in-house Flexbox engine, Skia GPU rasterization, and a BLoC-inspired state layer into one cohesive native toolkit.

Business logic lives in Cubits. The UI stays declarative. Subscriptions follow the Element tree and disappear deterministically when a surface unmounts.

Read the architecture
TRULY NATIVE

Compiled C++20, no garbage collector, deterministic memory, and sub-millisecond frame pacing.

NO TOOLKIT LOCK-IN

Direct X11, Wayland, Win32, Android NDK, DRM/KMS, and WASM backends.

GRANULAR REBUILDS

Only the BlocBuilder subtree changes when state changes. Pages remain static and cheap.

RICH MEDIA

Lottie, SVG, FFmpeg/VA-API video, live audio spectrum, particles, and path morphing.

FIRST-CLASS I18N

CLDR plurals, BCP-47 parsing, RTL detection, and live locale switching for global products.

HEADLESS TESTABLE

Cubits and widget trees run without a display server, GL context, or Skia surface.

PLATFORMSURFACE / GRAPHICSSTATUS
LinuxX11 · Wayland · DRM/KMS SUPPORTED
WindowsWin32 · DWM · UxTheme SUPPORTED
AndroidNDK · EGL · GLESv3 · arm64 SUPPORTED
WebAssemblyEmscripten · WebGL● EXPERIMENTAL

Compiler baseline: GCC 13+ / Clang 16+ / MSVC 2022 · C++20 · Meson ≥ 1.1

YOUR APPLICATIONStatelessWidget · StatefulWidget · Cubit · I18n · Navigator
THREE-TREE COREWidget → Element → RenderObject · Reconciler · Keys · BuildContext
ANU + RENDERINGFlexbox layout · Canvas · Paint · Path · SVG
SKIA GPU BACKENDGanesh · SkParagraph · Skottie
PLATFORM ABSTRACTIONX11 · Wayland · DRM/KMS · Win32 · Android · WASM
Separation of concerns Deterministic lifetimes Compile-time safety Pluggable backends

130+ production
widgets.

From a single Text widget to DataGrid, CommandPalette, VideoPlayer, ShellApp, and custom SkiaCanvas surfaces.

Browse the widget docs

Hello,
ENKI.

Start with a clean C++20 application or let the CLI scaffold the project for you.

Read the full guide
hello_enki.cpp 01 / 18
#include "enki/app/app.hpp"
#include "enki/widgets/text.hpp"

using namespace enki;

int main() {
  AppConfig config;
  config.title = "My ENKI Application";
  config.width = 1280;

  return runApp(app, config);
 }

From source
to surface.

enki doctorDiagnose compilers, SDKs, backends, and available targets.
enki devicesDiscover desktop, DRM, and Android surfaces.
enki create my_appScaffold a clean production application.
enki run gallery desktopBuild and run an app on the desktop target.
Explore build options

Build once.
Render natively.

ENKI is released under Apache 2.0. The next milestones expand widget coverage, then transition the rendering core from Skia to the in-house Nisaba 2D engine.