Skip to main content

Imery

Build interactive GUI applications with YAML instead of code.

Imery lets you create Dear ImGui applications using declarative YAML files, powered by Dear ImGui Bundle for Python.

Why Imery?

Traditional GUI development with ImGui requires writing repetitive boilerplate code. Every button, slider, or layout change means modifying and recompiling your application.

Origins

Imery emerged from building an audio viewing and analysis tool with imgui-bundle. We discovered that live data observation and manipulation was a central pattern - UI components constantly consuming and updating data in real-time. This led us to separate concerns in an MVC-like direction: the UI as a tree structure consuming an equivalent data tree, similar to React's approach in the web world.

While most UI elements directly manipulate or observe data tree nodes, the framework also supports event generation and handling. We're also exploring a broader vision: an "Imery browser" where you write interactive applications with Python and YAML instead of HTML and JavaScript.

These concepts are in early alpha. We'd love to hear your thoughts and suggestions.

For architectural details, see docs/design/main.md.

Imery changes this:

  • Declarative - Define your UI in YAML, not code
  • Rapid iteration - Edit layouts without recompiling
  • No programming required - Create simple UIs with just YAML
  • Modular - Reusable widget definitions with imports
  • Data-driven - Separate UI structure from application logic

Quick Example

Create a simple GUI in app.yaml:

app:
  window_title: "Hello Imery"
  widget: builtin.text
  data: greeting

data:
  greeting:
    metadata:
      label: "Welcome to Imery!"

Run it:

imery --main app

That's it. No Python code, no compilation - just a YAML file describing what you want.

Who is Imery for?

  • Python developers who prefer declarative approaches
  • ImGui users frustrated with boilerplate code
  • Data scientists needing quick interactive tools
  • Game developers prototyping UI and tools
  • Anyone who wants to experiment with ImGui without writing code

Framework or Library?

Both. Imery provides structure and patterns (like a framework) but you can use it flexibly, picking what you need (like a library). Use it however it serves you best.

Project Status

⚠️ Early Alpha - Imery is experimental. APIs will change, features are incomplete, and breaking changes should be expected. We welcome feedback and contributions!

Installation

pip install imery

Requires Python 3.12+

Examples

Check out the demo directory for examples:

  • demo/classic/ - Classic ImGui demo widgets
  • demo/hello-imgui/ - Basic Hello ImGui examples
  • demo/hello-imgui-full/ - Full-featured application layout

Run any demo:

imery --layouts-path demo/hello-imgui-full --main app

Documentation

For more examples, explore the YAML files in the demo directories.

How It Works

  1. Write YAML - Define your UI structure, widgets, and data
  2. Import modules - Compose UIs from reusable components
  3. Run - Imery renders your YAML as a native ImGui application
  4. Iterate - Change the YAML and see updates immediately

Contributing

We're in early development and actively seeking feedback:

  • Try Imery with your use cases
  • Report issues and suggest features
  • Share what works and what doesn't

Your input helps shape Imery's direction.

License

[Add license information]

Credits

Built on top of:

Metadata

Release files for imery 0.0.61

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for imery 0.0.61
File Size Uploaded Provenance Actions
imery-0.0.61.tar.gz 354.6 kB Without provenance Details for imery-0.0.61.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for imery 0.0.61
File Interpreter ABI Platform Actions
imery-0.0.61-py3-none-any.whl Python 3 none any Details for imery-0.0.61-py3-none-any.whl

Total release size: 770.8 kB

Release files / imery-0.0.61.tar.gz

Download URL imery-0.0.61.tar.gz
Size 354.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d4c609526897eb7f43d84a00f419d0dcaa4526b2c7050646d7b002b824b9d9df
BLAKE2b-256 checksum
How to use checksums
c04a0318960d8f3a22d82c1a0416629caa8129baad811bea8e856a3446ef3381
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release files / imery-0.0.61-py3-none-any.whl

Download URL imery-0.0.61-py3-none-any.whl
Size 416.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4a3d885df7abcea6e6b6c37045d9f3f2b73ea37364115ba98c5f3c1e0d18f196
BLAKE2b-256 checksum
How to use checksums
930400d3165ed7701b66a0bc5832fac26baae905ba7989d9edb0b2114eb8b564
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Security for imery 0.0.61

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.0.61 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page