This guide covers how to package and distribute Chat Linux Client for different platforms and distribution methods.
Chat Linux Client supports multiple packaging formats for easy distribution:
AppImage is a universal Linux package format that works on most Linux distributions without installation.
Use the provided build script:
./scripts/build_appimage.sh
The AppImage is configured using packaging/AppImageBuilder.yml:
version: 1.0.0
app:
id: chat-linux-client
name: Chat Linux Client
icon: assets/icon.png
version: 1.0.0
exec: python main.py
runtime:
env:
PYTHONPATH: $APPDIR/usr/lib/python3.9/site-packages
The AppImage includes:
chmod +x Chat-Linux-Client-1.0.0-x86_64.AppImage
./Chat-Linux-Client-1.0.0-x86_64.AppImage
The desktop entry file integrates the application with Linux desktop environments.
Located at packaging/chatgpt-client.desktop:
[Desktop Entry]
Version=1.0
Type=Application
Name=Chat Linux Client
Comment=Privacy-first multi-provider AI desktop client
Exec=/usr/bin/chat-linux-client
Icon=chat-linux-client
Terminal=false
Categories=Utility;Network;
Keywords=AI;Chat;Assistant;
StartupNotify=true
# Copy to applications directory
sudo cp packaging/chatgpt-client.desktop /usr/share/applications/
# Copy icon
sudo cp assets/icon.png /usr/share/icons/hicolor/256x256/apps/chat-linux-client.png
# Update desktop database
sudo update-desktop-database /usr/share/applications/
Distribute source code for manual installation:
# Create source distribution
python setup.py sdist
# Or use git archive
git archive --format=tar.gz --prefix=chat-linux-client-1.0.0/ HEAD > chat-linux-client-1.0.0.tar.gz
Tag the release:
:::bash
git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin v1.0.0
Create release on GitHub
Host files for direct download:
# snap/snapcraft.yaml
name: chat-linux-client
version: '1.0.0'
summary: Privacy-first AI client
description: Multi-provider AI desktop client
confinement: strict
grade: stable
apps:
chat-linux-client:
command: python3 main.py
plugs:
- network
- home
parts:
chat-linux-client:
plugin: python
source: .
<!-- com.github.username.chat-linux-client.json -->
{
"app-id": "com.github.username.chat-linux-client",
"runtime": "org.freedesktop.Platform",
"runtime-version": "22.08",
"sdk": "org.freedesktop.Sdk",
"command": "python3 main.py",
"finish-args": [
"--share=network",
"--filesystem=home"
],
"modules": [
{
"name": "chat-linux-client",
"buildsystem": "simple",
"build-commands": [
"pip3 install --prefix=/app ."
],
"sources": [
{
"type": "dir",
"path": "."
}
]
}
]
}
Chat Linux Client follows Semantic Versioning (SemVer): MAJOR.MINOR.PATCH
1.0.0: Initial stable release1.1.0: New feature (backwards compatible)1.1.1: Bug fix2.0.0: Breaking changesUpdate version in:
packaging/AppImageBuilder.ymlUpdate Version
bash
# Update version in all files
# Update CHANGELOG.md
git commit -am "Bump version to X.Y.Z"
Create Tag
bash
git tag -a vX.Y.Z -m "Release version X.Y.Z"
git push origin vX.Y.Z
Build Artifacts
bash
./scripts/build_appimage.sh
Create GitHub Release
Upload artifacts
Announce
Sign packages for verification:
# Sign AppImage
gpg --output Chat-Linux-Client-1.0.0-x86_64.AppImage.sig --detach-sign Chat-Linux-Client-1.0.0-x86_64.AppImage
# Verify signature
gpg --verify Chat-Linux-Client-1.0.0-x86_64.AppImage.sig Chat-Linux-Client-1.0.0-x86_64.AppImage
Generate checksums for integrity verification:
# Generate SHA256 checksum
sha256sum Chat-Linux-Client-1.0.0-x86_64.AppImage > SHA256SUMS
# Verify checksum
sha256sum -c SHA256SUMS
# Make executable
chmod +x Chat-Linux-Client-1.0.0-x86_64.AppImage
# Extract to debug
./Chat-Linux-Client-1.0.0-x86_64.AppImage --appimage-extract
# Run extracted
./squashfs-root/AppRun
# Verify desktop entry syntax
desktop-file-validate packaging/chatgpt-client.desktop
# Update desktop database
update-desktop-database /usr/share/applications/
# Check icon path
ls /usr/share/icons/hicolor/256x256/apps/
Ensure all dependencies are listed in requirements.txt and included in AppImage configuration.