szczyglis-dev/py-gpt

★ 1,930⑂ 345

Desktop AI Assistant powered by GPT-6, GPT-5, Gemini, Claude, Ollama, Grok, DeepSeek, Perplexity, Bielik, chat, agents, vision, voice, RAG, image and video generation, tools, MCP, plugins

About szczyglis-dev/py-gpt

szczyglis-dev/py-gpt is an open-source project on GitHub, mainly written in Python. Desktop AI Assistant powered by GPT-6, GPT-5, Gemini, Claude, Ollama, Grok, DeepSeek, Perplexity, Bielik, chat, agents, vision, voice, RAG It currently holds 1,930 stars and 345 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

AI Homed tracks it on the Local & On-Device AI board.

GitHub Repository Details

Repository szczyglis-dev/py-gpt · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

PyGPT - Desktop AI Assistant

pygpt

Release: 2.8.27 | build: 2026-09-20 | Python: >=3.10, <3.14

Official website: https://pygpt.net | Documentation | Discord
Get it from: PyPi | Snap Store | Microsoft Store | AppImage
Compiled version for Linux and Windows: Download (64bit)
Donate: Buy Me A Coffee | GitHub Sponsors | PayPal

Overview

PyGPT is an all-in-one desktop AI assistant supporting models from OpenAI (GPT-6 Astra, GPT-5.6, GPT-4, etc.), Google Gemini, Anthropic Claude, xAI Grok, Perplexity / Sonar, DeepSeek, and models available through HuggingFace, LlamaIndex, OpenAI-compatible APIs, and local Ollama installations such as Gemma, Qwen, Llama, Mistral, DeepSeek, Bielik, Nemotron, and gpt-oss.

It supports chat, Chat with Agents and other agent workflows, completions, Chat with Files (RAG), image and video generation, and image analysis. Models can work with files, run Python and system or custom commands, transfer files, call external APIs, and search the web with DuckDuckGo, Google and Microsoft Bing.

PyGPT also provides speech synthesis through OpenAI, Microsoft Azure, Google Cloud / GenAI, Eleven Labs and xAI, plus speech recognition with OpenAI Whisper (API or local), Google / Google Cloud / GenAI, Bing and xAI Grok Voice. It stores conversation history and memory, supports reusable presets, and can be extended with built-in or custom plugins for tools, automation and external integrations.

Screenshots (version 2.8.23, build 2026-09-17):

Dark theme: v2_main

Light theme: v2_light

You can download compiled 64-bit versions for Windows and Linux here: https://pygpt.net/#download

Features

The application is free, open-source, and runs on PCs with Linux, Windows 10, Windows 11 and Mac. Full Python source code is available on GitHub.

PyGPT uses your own API credentials to connect to supported AI providers such as OpenAI, Google, Anthropic, xAI, Perplexity, Mistral, OpenRouter, and others. Depending on the selected model and provider, you may need an account and a valid API key for that service. Local models do not require external API credentials. You can also use built-it LlamaIndex support to connect to other Large Language Models (LLMs), such as those on HuggingFace. Additional API keys may be required.

Installation

Binaries (Linux, Windows 10 and 11)

You can download compiled binary versions for Linux and Windows (10/11).

PyGPT binaries require a PC with Windows 10, 11, or Linux. Simply download the installer or the archive with the appropriate version from the download page at https://pygpt.net, extract it, or install it, and then run the application. A binary version for Mac is not available, so you must run PyGPT from PyPi or from the source code on Mac. Currently, only 64-bit binaries are available.

Linux version requires GLIBC >= 2.35.

Microsoft Store (Windows)

For Windows 10/11, you can install PyGPT directly from Microsoft Store:

Get it from Microsoft Store

Link to MS Store: https://apps.microsoft.com/detail/XP99R4MX3X65VQ

AppImage (Linux)

You can download the latest PyGPT AppImage for Linux from the release page:

Releases: https://github.com/szczyglis-dev/py-gpt/releases

Tip: Remember to give execution permissions to the downloaded file:

```chmod +x ./PyGPT-X.X.X-x86_64.AppImage


To manage future updates you can use AppImageUpdate tool:

You can download it from: https://github.com/AppImage/AppImageUpdate/releases

After downloading, run the following command in terminal:

appimageupdatetool ./PyGPT-X.X.X-x86_64.AppImage

Snap Store (Linux)

You can install PyGPT directly from Snap Store:

commandline sudo snap install pygpt

To manage future updates use:

commandline sudo snap refresh pygpt

Get it from the Snap Store

Using camera: to use camera in Snap version you must connect the camera with:

commandline sudo snap connect pygpt:camera

Using microphone: to use microphone in Snap version you must connect the microphone with:

commandline sudo snap connect pygpt:audio-record :audio-record sudo snap connect pygpt:alsa

Using audio output: to use audio output in Snap version you must connect the audio with:

commandline sudo snap connect pygpt:audio-playback sudo snap connect pygpt:alsa

Connecting the Docker sandbox in the Snap version:

To use Docker-backed plugin sandboxes in the Snap version, you must connect PyGPT to the Docker daemon:

commandline sudo snap connect pygpt:docker-executables docker:docker-executables

`commandline sudo snap connect pygpt:docker docker:docker-daemon `

PyPi (pip)

The application can also be installed from PyPi using pip install:

1. Create virtual environment:

commandline python3 -m venv venv source venv/bin/activate

2. Install from PyPi:

commandline pip install pygpt-net

3. Once installed run the command to start the application:

commandline pygpt

Running from GitHub source code

An alternative method is to download the source code from GitHub and execute the application using the Python interpreter (>=3.10, <3.14).

Install with pip

1. Clone git repository or download .zip file:

commandline git clone https://github.com/szczyglis-dev/py-gpt.git cd py-gpt

2. Create a new virtual environment:

commandline python3 -m venv venv source venv/bin/activate

3. Install requirements:

commandline pip install -r requirements.txt

4. Run the application:

commandline python3 run.py

Install with Poetry

1. Clone git repository or download .zip file:

commandline git clone https://github.com/szczyglis-dev/py-gpt.git cd py-gpt

2. Install Poetry (if not installed):

commandline pip install poetry

3. Create a new virtual environment that uses Python 3.10:

commandline poetry env use python3.10 poetry shell

or (Poetry >= 2.0):

commandline poetry env use python3.10 poetry env activate

4. Install requirements:

commandline poetry install

5. Run the application:

commandline poetry run python3 run.py

Tip: you can use PyInstaller to create a compiled version of
the application for your system (required version 6.4.0).

Troubleshooting

If you have a problems with xcb plugin with newer versions of PySide on Linux, e.g. like this:

commandline qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

...then install libxcb:

commandline sudo apt install libxcb-cursor0

If you have a problems with audio on Linux, then try to install portaudio19-dev and/or libasound2:

commandline sudo apt install portaudio19-dev

commandline sudo apt install libasound2 sudo apt install libasound2-data sudo apt install libasound2-plugins

Problems with GLIBC on Linux

If you encounter error:

commandline Error loading Python lib libpython3.10.so.1.0: dlopen: /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.35 not found (required by libpython3.10.so.1.0)
when trying to run the compiled version for Linux, try updating GLIBC to version 2.35, or use a newer operating system that has at least version 2.35 of GLIBC.

Access to camera in Snap version:

commandline sudo snap connect pygpt:camera

Access to microphone in Snap version:

To use microphone in Snap version you must connect the microphone with:

commandline sudo snap connect pygpt:audio-record :audio-record

Snap and AppArmor permission denied

Snap installs AppArmor profiles for each application by default. The profile for PyGPT is created at:

/var/lib/snapd/apparmor/profiles/snap.pygpt.pygpt

The application should work with the default profile; however, if you encounter errors like:

PermissionError: [Errno 13] Permission denied: '/etc/httpd/conf/mime.types'

add the appropriate access rules to the profile file, for example:

/var/lib/snapd/apparmor/profiles/snap.pygpt.pygpt

...

/etc/httpd/conf/mime.types r


and reload the profiles.

Alternatively, you can try removing snap and reinstalling it:

sudo snap remove --purge pygpt

sudo snap install pygpt

Access to a microphone and audio in Windows version:

If you have a problems with audio or a microphone in the non-binary PIP/Python version on Windows, check to see if FFmpeg is installed. If it's not, install it and add it to the PATH. You can find a tutorial on how to do this here: https://phoenixnap.com/kb/ffmpeg-windows. The binary version already includes FFmpeg.

Windows and VC++ Redistributable

On Windows, the proper functioning requires the installation of the VC++ Redistributable, which can be found on the Microsoft website:

https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist

The libraries from this environment are used by PySide6 - one of the base packages used by PyGPT. The absence of the installed libraries may cause display errors or completely prevent the application from running.

It may also be necessary to add the path C:\path\to\venv\Lib\python3.x\site-packages\PySide6 to the PATH variable.

WebEngine/Chromium renderer and OpenGL problems

If you have a problems with WebEngine / Chromium renderer you can force the legacy mode by launching the app with command line arguments:

ini python3 run.py --legacy=1

and to force disable OpenGL hardware acceleration:

ini python3 run.py --disable-gpu=1

You can also manualy enable legacy mode by editing config file - open the %WORKDIR%/config.json config file in editor and set the following options:

json "render.engine": "legacy", "render.open_gl": false, ```

Other requirements

For API-based models, an internet connection and the appropriate provider API key are required. Models from OpenAI, Google, Anthropic, and xAI require API keys for their respective providers. Local models, such as those served through Ollama, do not require external API keys.

Troubleshooting and diagnostics

See Debugging and Logging for logging and diagnostic options.

Quick Start

Setting-up API Key(s)

You can configure API keys for various providers, such as OpenAI, Anthropic, Google, xAI, Perplexity, OpenRouter, and more. This flexibility allows you to use different providers based on your needs.

During the initial setup, configure your API keys within the application.

To do so, navigate to the menu:

Config -> Settings -> API Keys

Here, you can add or manage API keys for any supported provider.

v2_api_keys

Configuring Provider

1. Select the Provider: Choose a tab with provider. 2. Enter the API Key: Paste the corresponding API key for the selected provider.

Example

Note: The ability to use models or services depends on your access level with the respective provider. If you wish to use custom API endpoints or local APIs that do not require API keys, simply enter any value into the API key field to bypass prompts about an empty key.

Work modes

Chat

+ Inline vision and image generation

In PyGPT, this mode lets you chat with models such as GPT-6 Astra, GPT-5.6, GPT-4, o1, o3, Claude, Gemini, Grok, Perplexity (Sonar), DeepSeek, and many others. PyGPT can use native SDKs from supported providers, including OpenAI, Google, Anthropic, and xAI, when enabled. It can also connect to providers and local services through OpenAI-compatible APIs, including Responses API and ChatCompletions API compatible endpoints where supported.

Tip: This mode uses the provider SDK directly. If there's no native client built into the app, models like Sonar or local Ollama models such as Qwen 3.6 and Gemma 4 are supported in Chat mode via LlamaIndex or OpenAI-compatible API endpoints. The app automatically switches to these endpoints when using non-OpenAI models. You can enable or disable the use of the native API SDK (per provider) in Settings -> API Keys. If the native SDK is disabled, the OpenAI SDK will be used via the compatible ChatCompletions API endpoint.

Currently built-in native clients:

Local Ollama models and models from other configured providers are also supported.

The main part of the interface is a chat window where you see your conversations. Below it is a message box for typing. On the right side, you can set up or change the model and system prompt. You can also save these settings as presets to easily switch between models or tasks.

Above where you type your messages, the interface shows you the number of tokens your message will use up as you type it – this helps to keep track of usage. There is also a feature to attach and upload files in this area. Go to the Files and Attachments section for more information on how to use attachments.

v2_mode_chat

Vision: If you want to analyze photos from disk, screenshots, or camera captures and the currently selected model cannot accept image input, enable the Vision (inline) plugin in the Plugins menu. The plugin uses a separately configured image-capable Chat model only for the image-analysis turn. The fallback model can come from any supported provider (for example OpenAI, Google, Anthropic, xAI, OpenRouter, or another OpenAI-compatible provider), as long as the model is configured for Chat and image input.

v3_vision_plugins

With this plugin, you can capture an image with your camera or attach an image and send it for analysis. Camera controls are available from the main Audio / Video menu under the Video section. Use Enable camera to start the live preview. Enable Auto capture to automatically capture the current frame for compatible vision turns; with auto capture disabled, click the live camera preview to take a manual snapshot. Camera device, resolution, and JPEG quality are configured in Settings -> Vision and camera -> Camera:

v3_vision_chat

Image generation: If you want to generate images directly in chat, enable the Image generation (inline) plugin in the Plugins menu. The plugin allows you to generate images in Chat mode.

For supported models/providers, you can alternatively enable the provider-side image-generation remote tool in Config -> Settings -> Remote Tools. When available, this lets the model generate images natively without the inline plugin.

v3_img_chat

Chat with Files (LlamaIndex)

This mode enables chat interaction with your documents and entire context history through conversation. It seamlessly incorporates LlamaIndex into the chat interface, allowing for immediate querying of your indexed documents.

Tip: If you do not want to call tools/commands, disable the Tools switch. It will speed up the response time when using local models. When tools are enabled, PyGPT prefers native tool calls whenever the current model/provider supports them. If native tool calls are unavailable, Chat with Files automatically falls back to a LlamaIndex ReAct agent. The ReAct fallback is non-streaming, so stream mode is disabled automatically only on that path; there is no separate ReAct setting.

Querying single files

You can also query individual files "on the fly" using the query_file command from the Files I/O plugin. This allows you to query any file by simply asking a question about that file. A temporary index will be created in memory for the file being queried, and an answer will be returned from it. A similar command is available for querying web and external content: Directly query web content with LlamaIndex.

For example:

If you have a file: data/my_cars.txt with content My car is red.

You can ask for: Query the file my_cars.txt about what color my car is.

And you will receive the response: Red.

Note: this command indexes the file only for the current query and does not persist it in the database. To store queried files also in the standard index you must enable the option Auto-index readed files in plugin settings. Remember to enable the Tools switch to allow the use of tools and commands from plugins.

Using Chat with Files mode

In this mode, you are querying the whole index, stored in a vector store database. To start, you need to index (embed) the files you want to use as additional context. Embedding transforms your text data into vectors. If you're unfamiliar with embeddings and how they work, check out this article:

https://stackoverflow.blog/2023/11/09/an-intuitive-introduction-to-text-embeddings/

For a visualization from OpenAI's page, see this picture:

vectors

Source: https://cdn.openai.com/new-and-improved-embedding-model/draft-20221214a/vectors-3.svg

To index your files, copy or upload them into the active data directory and initiate indexing (embedding) by clicking the Index all button, or right-click on a file and select Embed into index. Normally this is /data; if the current conversation belongs to a project with a custom data workdir, the project directory is used instead. Additionally, you have the option to utilize data from indexed files in any Chat mode by activating the RAG (inline) plugin.

v2_idx1

After the file(s) are indexed (embedded in vector store), you can use context from them in chat mode.

Built-in file loaders:

Files:

Web/external content:

GitHub Stars & Activity

1,930Stars
345Forks
0Open issues
PythonLanguage

GitHub Popularity

GitHub stars1,930
Forks345
Open issues0
Primary languagePython
License-
Stars gained today0
Created-
Last pushed-

Trending History

Trending statusnot on today's boards

Related AI Projects

1

open-webui / open-webui

Python★ 152,659⑂ 22,336
2

HKUDS / nanobot

Python★ 48,435⑂ 8,555
3

chatchat-space / Langchain-Chatchat

Python★ 38,654⑂ 6,265
4

lss233 / kirara-ai

Python★ 19,032⑂ 1,837
5

langbot-app / LangBot

Python★ 17,931⑂ 1,602
6

Open-LLM-VTuber / Open-LLM-VTuber

Python★ 13,855⑂ 1,653
7

ollama / ollama-python

Python★ 10,545⑂ 1,178
8

LearningCircuit / local-deep-research

Python★ 9,113⑂ 828

More AI Rankings