Source
> Dear ImGui Bundle: immediate-mode GUIs for Python & C++

Stop fighting
GUI frameworks.
Start building.

Interactive Python & C++ apps for desktop, mobile, and the web.
The same code runs in the browser: no server, no rewrite.

Try in Playground → Read the docs →
✓ Windows ✓ macOS ✓ Linux ✓ WebAssembly
Dear ImGui Bundle Explorer
// philosophy

Code that
reads like a book.

Your UI is just a function that runs every frame: what it draws is what you see, and user input is handled right there. No widget tree, no callbacks, no implicit state (the graphics-programming term for this is immediate mode).

Each frame, the whole UI is redrawn: this is fast, because rendering goes straight to the GPU. The same code runs at 60+ FPS, on desktop and in a browser canvas.

10 lines 12 lines
from imgui_bundle import imgui, hello_imgui

class App:
    def __init__(self):
        self.selected_idx = 0
        self.items = ["Apple", "Banana", "Cherry"]

    def gui(self):
        imgui.text("Choose a fruit:")
        _clicked, self.selected_idx = imgui.list_box("##fruits", self.selected_idx, self.items)
        imgui.text(f"You selected: {self.items[self.selected_idx]}")

hello_imgui.run(App().gui, window_title="Fruit Picker", window_size_auto=True)
#include "hello_imgui/hello_imgui.h"
#include "imgui.h"

int selected_idx = 0;
const char* items[3] = { "Apple", "Banana", "Cherry" };

void gui() {
    ImGui::Text("Choose a fruit:");
    /*bool clicked=*/ImGui::ListBox("##fruits", &selected_idx, items, IM_ARRAYSIZE(items));
    ImGui::Text("You selected: %s", items[selected_idx]);
}

int main() {
    HelloImGui::Run(gui, "Fruit Picker", true);
}
Fruit Picker
Choose a fruit:
Apple
Banana
Cherry
You selected: Apple
// capabilities

What you can build with it.

Interactive 2D & 3D plots

ImPlot and ImPlot3D — rotatable, zoomable, real-time. Stock prices, signals, scientific data.

// implot & implot3d

GPU-accelerated rendering

Render directly on the GPU. Blend custom shaders and 3D content into your UI in real time.

// shaders

Image analysis

ImmVision — display, debug and inspect RGB and float images. Zoom, pan, pixel inspection, colormaps.

// immvision

Visual node editors

Explore ideas in graph form — connect functions, see data flow, build pipelines visually.

// imgui-node-editor
// pyodide · webassembly

Deploy Python apps
to the web.

Same code. No HTML, no server.

Thanks to Pyodide (which compiles Python to WebAssembly), the same code runs in the browser. Your UI can be drawn on a native app window as well as on a <canvas>.

After an 8 MB initial download, the app runs natively on the GPU, fully client-side.

Notes: iOS and Android can also display these apps. C++ uses Emscripten, with the same approach.

Open the playground → /playground/ · runs in your browser
// in the wild

Real-time research, real codebases.

Physics simulation, Gaussian splatting, neural rendering, volumetric video: the projects below use Dear ImGui Bundle as an interactive viewerfor real time rendering together with interactive parameters tweaking.

// also embedded in graphics frameworks

... and 100+ more on GitHub dependents.

// foundation

Powered by Dear ImGui.

Dear ImGui Bundle stands on the shoulders of Dear ImGui, the battle-tested, widely adopted immediate-mode GUI library created by Omar Cornut, plus 20+ of its most popular addons including ImPlot, ImPlot3D, ImmVision, and imgui-node-editor.

ocornut/imgui
// alternatives

How does it compare?

Isn't this just Dear PyGui?

Different project, different paradigm. Dear PyGui provides retained-mode wrappers around ImGui: you build a widget tree once and wire callbacks.

Dear ImGui Bundle brings true immediate mode to Python. It also tracks the latest Dear ImGui release closely (thanks to auto-generated bindings), and runs in the browser via Pyodide.

What about NiceGUI, Streamlit, or Gradio?

Those shine for dashboards and ML demos. Pick Dear ImGui Bundle when you need native performance, offline desktop binary, or smooth web apps without dealing with HTML or a remote server.

When it fits.

Real-time tools, viewers, scientific UIs, creative apps, prototyping. Anything GPU-heavy, or cross-platform from one codebase.

When to skip it.

Form-heavy or accessibility-critical apps (limited screen-reader support). Apps that plug into a web design system.

Full side-by-side comparison →
// where next

Three ways in.

// Ecosystem

The ecosystem.

Hello ImGui cross-platform runtime (based on Dear ImGui) Dear ImGui Bundle 23 libs: C++ & Python Python bindings automatically updated via litgen you are here fiatlight low-code prototyping   litgen generates the bindings
Cross-platform runtime built on Dear ImGui

Hello ImGui

Dear ImGui apps made simple — desktop, mobile, web from one codebase.

Minimal code. Maximally readable.

$ open documentation → repo
Low-code prototyping built on Dear ImGui Bundle

fiatlight

Turn Python functions into interactive apps in one line.

Visual pipelines. Persistent state. Zero UI code.

$ open documentation → repo
Automatic Python bindings powers Dear ImGui Bundle

litgen

Automatic Python bindings for C++ — readable and discoverable.

Battle-tested on 20+ libraries.

$ open documentation → repo
// even less code with fiatlight

Annotate a Python function and fiatlight builds the UI for you: sliders, file pickers, advanced viewers, live pipelines. Zero UI code. Apps save and reload their state automatically.

fiatlight →