A GTK graphical interface for chatting with Large Language Models (LLMs).
-
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.
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.
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.
- 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
To start the applet (system tray mode):
llm gtk-applet
To start a single chat window:
llm gtk-chat
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
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 .
This project is made possible thanks to these great components, among others:
- llm by @simonw
- hello-world-gtk by @zevlee
GPLv3 License - See LICENSE file for more details.