Skip to main content

A GTK graphical interface for chatting with large language models (LLMs)

Project description

GTK LLM Chat

A GTK graphical interface for chatting with Large Language Models (LLMs).

screenshot

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 sidebar
    • F2: Rename conversation
    • Escape: Minimize window
    • Enter: Send message
    • Shift+Enter: New line in input
    • Ctrl+W: Delete the current conversation
    • Ctrl+M: Open model selector
    • Ctrl+S: Edit system prompt
    • Ctrl+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:

License

GPLv3 License - See LICENSE file for more details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gtk_llm_chat-3.2.2.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gtk_llm_chat-3.2.2-py3-none-any.whl (168.6 kB view details)

Uploaded Python 3

File details

Details for the file gtk_llm_chat-3.2.2.tar.gz.

File metadata

  • Download URL: gtk_llm_chat-3.2.2.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for gtk_llm_chat-3.2.2.tar.gz
Algorithm Hash digest
SHA256 e4f1cd64d1aea3d1e859717e9b7aaf7dab14645b72c0e3bf2ca5147402232cdb
MD5 b696188cf34ffa1cf0c453d511f48a8a
BLAKE2b-256 46c6fae4c6fbb7ad95617bd93922e0edbc7fab027ccfd5c18f60c3b0c8adeacf

See more details on using hashes here.

File details

Details for the file gtk_llm_chat-3.2.2-py3-none-any.whl.

File metadata

  • Download URL: gtk_llm_chat-3.2.2-py3-none-any.whl
  • Upload date:
  • Size: 168.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for gtk_llm_chat-3.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 01ddedb2ae13d09b219709908a2b6e4d1b51af07d80858d835bdfe4a8ea978b2
MD5 d2cbfdaf5c46192ba26b8f3bae88c8ba
BLAKE2b-256 fbe953b04fc4c94628bb5d002b3bc009ebd85ae3c8e7e2bde148ce2d4344832b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page