# chrisknott/eel

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/chrisknott-eel).**

6,748 stars · 606 forks · Python · MIT · archived

## Links

- GitHub: https://github.com/ChrisKnott/Eel
- awesome-repositories: https://awesome-repositories.com/repository/chrisknott-eel.md

## Description

Eel is a framework for creating desktop applications using a Python backend and a web-based frontend. It acts as a bidirectional bridge between Python and JavaScript, allowing developers to build graphical user interfaces with HTML and JavaScript that communicate with local system logic.

The project facilitates two-way communication by enabling the exposure of Python functions to the browser and allowing the backend to trigger JavaScript functions. It uses a local server to render web interfaces as standalone desktop windows and provides tools to bundle the Python code and web assets into a single standalone binary executable for distribution.

The framework covers application window management, desktop interface rendering, and data exchange using both synchronous and asynchronous communication patterns.

## Tags

### User Interface & Experience

- [Browser-Based Desktop UIs](https://awesome-repositories.com/f/user-interface-experience/browser-based-desktop-uis.md) — Uses a web browser as the primary rendering engine for a standalone desktop application interface.
- [Backend GUIs](https://awesome-repositories.com/f/user-interface-experience/backend-guis.md) — Creates web-based graphical user interfaces that communicate with a local Python backend.
- [Web-Based Interfaces](https://awesome-repositories.com/f/user-interface-experience/cross-platform-gui-frameworks/desktop-application-interfaces/web-based-interfaces.md) — Enables the creation of desktop user interfaces using web technologies connected to a Python backend. ([source](https://github.com/chrisknott/eel#readme))
- [Python GUI Frameworks](https://awesome-repositories.com/f/user-interface-experience/ui-architecture/gui-toolkits/python-gui-frameworks.md) — Framework for creating desktop applications combining a Python backend with an HTML/JS frontend.

### Development Tools & Productivity

- [Standalone Binary Packaging](https://awesome-repositories.com/f/development-tools-productivity/lightweight-application-frameworks/standalone-binary-packaging.md) — Bundles the Python interpreter and application source into a single standalone executable binary.
- [Python Application Packagers](https://awesome-repositories.com/f/development-tools-productivity/python-application-packagers.md) — Packages Python code and web assets into a single standalone native executable binary.

### Networking & Communication

- [Language Runtime Bridges](https://awesome-repositories.com/f/networking-communication/communication-protocols-architectures/communication-channels/language-runtime-bridges.md) — Establishes a two-way bridge to call Python functions from JavaScript and vice versa.
- [Local HTTP Servers](https://awesome-repositories.com/f/networking-communication/local-http-servers.md) — Includes a built-in local HTTP server to serve frontend web assets to the browser window.

### Programming Languages & Runtimes

- [Cross-Language Bridges](https://awesome-repositories.com/f/programming-languages-runtimes/cross-language-bridges.md) — Provides a bidirectional bridge allowing Python and JavaScript to call each other's functions. ([source](https://github.com/chrisknott/eel#readme))
- [Host Function Exposure](https://awesome-repositories.com/f/programming-languages-runtimes/host-function-exposure.md) — Exposes Python functions to the browser, enabling the frontend to execute backend logic. ([source](https://github.com/chrisknott/eel#readme))
- [JavaScript Function Invocations](https://awesome-repositories.com/f/programming-languages-runtimes/javascript-interop/stream-writes-to-javascript/javascript-function-invocations.md) — Allows the Python backend to trigger JavaScript functions to update the user interface. ([source](https://github.com/chrisknott/eel#readme))
- [Python-JavaScript Bridges](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/runtime-environments/language-runtimes/language-host-runtime-bridges/python-javascript-bridges.md) — Implements a bidirectional communication layer for mapping function calls between Python and JavaScript.

### Web Development

- [Backend-Frontend Bridges](https://awesome-repositories.com/f/web-development/backend-frontend-bridges.md) — Uses a persistent WebSocket connection as the communication layer between Python and JavaScript.
- [Desktop Development](https://awesome-repositories.com/f/web-development/desktop-development.md) — Provides a framework for building desktop applications using Python logic and web-based UIs.
- [Local Web App Hosting](https://awesome-repositories.com/f/web-development/local-web-app-hosting.md) — Hosts a local server to serve web assets and render them within a standalone desktop window. ([source](https://github.com/chrisknott/eel#readme))

### Data & Databases

- [Asynchronous Callbacks](https://awesome-repositories.com/f/data-databases/data-exchange-protocols/runtime-data-exchange/asynchronous-callbacks.md) — Supports passing callback functions to handle cross-process return values without blocking execution. ([source](https://github.com/chrisknott/eel#readme))
- [Synchronous Request-Response](https://awesome-repositories.com/f/data-databases/data-exchange-protocols/runtime-data-exchange/synchronous-request-response.md) — Enables retrieving values from another process by pausing execution until the result is received. ([source](https://github.com/chrisknott/eel#readme))

### DevOps & Infrastructure

- [Standalone Application Packaging](https://awesome-repositories.com/f/devops-infrastructure/deployment-management-strategies/execution-platforms-and-targets/deployment-targets/node-js-runtimes/standalone-application-packaging.md) — Bundles web frontends and Python backends into single-file binaries to remove runtime dependencies.

### Part of an Awesome List

- [GUI Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/gui-frameworks.md) — Library for building offline HTML/JS desktop apps.
