GTK LLM Chat
A GTK graphical interface for chatting with Large Language Models (LLMs).
Key Features
-
Simple and easy-to-use graphical interface built with GTK
-
Support for multiple conversations in independent windows
-
Integration with python-llm for chatting with various LLM models
-
Modern interface using libadwaita
-
Support for real-time streaming responses
-
Message history with automatic scrolling
-
Windows installer, Linux AppImage, and Macos bundles available!
-
Markdown rendering of the responses
-
Sidebar Navigation: Modern sidebar for model/provider selection, parameters, and settings.
-
Model Parameters: Adjust temperature and system prompt per conversation.
-
API Key Management: Banner with symbolic icons for setting/changing API keys per provider.
-
Keyboard Shortcuts:
F10: Toggle sidebarF2: Rename conversationEscape: Minimize windowEnter: Send messageShift+Enter: New line in inputCtrl+W: Delete the current conversationCtrl+M: Open model selectorCtrl+S: Edit system promptCtrl+N: New conversation window
-
Conversation Management: Rename and delete conversations.
-
Tray Applet: Use a system tray applet for quick access to recent conversations.
-
Error Handling: Clear error messages displayed in the chat.
-
Dynamic Input: The input area dynamically adjusts its height.
Gtk-LLM-Chat is a graphical frontend for the command-line llm utility. Just as llm integrates large language models into the command line interface, Gtk-LLM-Chat aims to bring that same power to the desktop environment. Its goal is to provide intuitive affordances and seamless integration for using LLMs in everyday tasks — all while remaining convenient, lightweight, and transparent in its behavior.
Installation
Downloadable application bundles
While the command line is fun in every operating system, Gtk-LLM-Chat also offers prepackaged binary application bundles for all three major operating sytems: Windows installers, Linux Appimages and Macos Application Bundles are available in our releases section.
An effort has been made to support desktop integration across systems but your mileage may vary - as the Gtk tools are still maturing outside of the GNU/Linux ecosystem.
As an llm plugin
Playing with LLMs in the command line is fun! I recommend you to install llm and play around with it to size up the possibilities. Gtk-LLM-Chat can be installed as a plugin extension for llm itself, thus extending the possibilities of llm with some graphical features. Not all features of llm are exposed yet.
pipx install llm # required by gtk-llm-chat
llm install gtk-llm-chat
You may want to copy the provided .desktop files to your ~/.local/share/applications/ folder. A welcome assistant will do this in the future for you.
System Requirements
- llm (when installing as an llm plugin)
- Python 3.8 or higher
- GTK 4.0
- libadwaita
- libayatana-appindicator (on linux)
These dependency installation instructions are collected here for reference only:
# fedora: # sudo dnf install cairo-devel object-introspection-devel gtk4-devel pkgconf-pkg-config gcc redhat-rpm-config
# debian: # sudo apt install libgtk-4-1 python3-gi python3-gi-cairo libadwaita-1-0 libayatana-appindicator3
# arch: # sudo pacman -S python-gobject gtk4
# windows (msys2): # pacman -S mingw-w64-$(uname -m)-gtk4 mingw-w64-$(uname -m)-python-pip mingw-w64-$(uname -m)-python3-gobject mingw-w64-$(uname -m)-libadwaita mingw-w64-x86_64-python3-pillow
# macos (homebrew): # brew install pygobject3 gtk4 adwaita-icon-theme libadwaita
Usage
Running the Application
To start the applet (system tray mode):
llm gtk-applet
To start a single chat window:
llm gtk-chat
Optional arguments:
llm gtk-chat --cid CONVERSATION_ID # Continue a specific conversation
llm gtk-chat -s "System prompt" # Set system prompt
llm gtk-chat -m model_name # Select specific model
llm gtk-chat -c # Continue last conversation
Development
To set up the development environment:
git clone https://github.com/icarito/gtk-llm-chat.git
cd gtk-llm-chat
python -m venv venv
source venv/bin/activate
pip install -e .
Shoulders of giants
This project is made possible thanks to these great components, among others:
- llm by @simonw
- hello-world-gtk by @zevlee
License
GPLv3 License - See LICENSE file for more details.
Metadata
Release files for gtk-llm-chat 4.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| gtk_llm_chat-4.0.5.tar.gz | 1.2 MB | Without provenance | Details for gtk_llm_chat-4.0.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| gtk_llm_chat-4.0.5-py3-none-any.whl | Python 3 | none | any | Details for gtk_llm_chat-4.0.5-py3-none-any.whl |
Total release size: 1.3 MB
Release files / gtk_llm_chat-4.0.5.tar.gz
| Download URL | gtk_llm_chat-4.0.5.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
71c46bb276454f659c61840ba2dd89f3bf8a26e7adf6a0cfe69305928afcbbd7
|
|
BLAKE2b-256 checksum How to use checksums |
dd1632b0cf6d244d66d6726842c565a3f20fca78cb45080afd6f49f815cd2499
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|
Release files / gtk_llm_chat-4.0.5-py3-none-any.whl
| Download URL | gtk_llm_chat-4.0.5-py3-none-any.whl |
|---|---|
| Size | 169.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3ddf2192b6a1e3a2c17ac77d26a6179e3a21e0dd9916a6877bf369ebd23f10ee
|
|
BLAKE2b-256 checksum How to use checksums |
05cba1098e55004c1087ae1ce7e3b861c64ec1bf99302d47455dcf52c92e2a6f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|
Security for gtk-llm-chat 4.0.5
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.