A Linux service for automating updates of AppImage applications from their respective websites.
AppImage Updater monitors configured applications for new releases and provides automated downloading of updated AppImage files.
Platform Support: Linux only - AppImage is a Linux-specific package format. See Linux-Only Support for details.
Key Features:
- High Performance: Async operations with concurrent downloads and parallel processing
- Multi-Format Output: Rich terminal UI, plain text, JSON, and HTML output formats
- Multi-Repository Support: GitHub releases, direct downloads, and dynamic URLs
Supported Sources:
- GitHub releases with intelligent asset selection and API integration
- GitLab repositories (gitlab.com and self-hosted) with GitLab API v4 support
- Codeberg and other GitHub-compatible Git forges (Gitea, Forgejo)
- Direct download URLs with checksum verification and automatic detection
- Dynamic URLs with automatic resolution and fallback support
- ZIP files containing AppImage files with automatic extraction
- Multi-architecture releases with automatic compatibility detection (x86_64, arm64, etc.)
- Python 3.11 or higher
- pipx (for recommended installation) or pip
Recommended (pipx):
pipx install appimage-updaterAlternative methods:
# User pip install
pip install --user appimage-updater
# Executing from source
git clone https://github.com/royw/appimage-updater.git
cd appimage-updater
uv sync
uv run appimage-updater --helpFor detailed installation instructions and troubleshooting, see the Installation Guide.
# Add applications from different repository types
appimage-updater add FreeCAD https://github.com/FreeCAD/FreeCAD ~/Applications/FreeCAD
appimage-updater add Inkscape https://gitlab.com/inkscape/inkscape ~/Applications/Inkscape
appimage-updater add OpenRGB https://codeberg.org/OpenRGB/OpenRGB ~/Applications/OpenRGB
# Filter versions with patterns (exclude prereleases)
appimage-updater add --version-pattern "^[0-9]+\.[0-9]+$" MyApp https://github.com/user/repo ~/Apps/MyApp
# Check for updates
appimage-updater check
# List configured applications
appimage-updater list
# Use different output formats (rich, plain, json, html)
appimage-updater list --format json # List all configured apps as a JSON
appimage-updater check --format plain # Check for updates and show plain text output
appimage-updater show MyApp --format html # Show app details in HTML format
# Help is available:
appimage-updater --help
appimage-updater list --help
appimage-updater add --help
appimage-updater edit --help
appimage-updater show --help
appimage-updater check --help
appimage-updater remove --help
appimage-updater config --helpFor example, you want to keep current official releases and weekly releases of FreeCAD. You use appimaged to integrate your AppImages into your system. You do not want the official releases integrated into your system (i.e., you are ok with manually running them from the terminal) so you do not want them on appimaged's search path. However you do want the latest weekly release integrated into your system, and a few previous releases if you need to track down a development issue.
Official Releases go into ~/Applications/FreeCAD/ while the weekly releases go into ~/Applications/FreeCAD_weekly/. A symbolic link, ~/Applications/FreeCAD_weekly.AppImage is on appimaged's search path and points to the current weekly release. If you hit an issue with the current release, simply replace the symbolic link with one that points to an old release.
Cool. Works nicely except you have to manually check the github repository, download updates, verify checksums, and rotate the extensions and symbolic link. This is where appimage-updater comes in.
Here is an example of FreeCAD AppImages that appimage-updater is currently managing (uses scripts/tree-to-github-markdown.sh):
➤ scripts/tree-to-github-markdown.sh --noreport -l -P "[fF]r*" -I "[a-eA-Eg-zG-Z]*" -C ~/ApplicationsCode/Directory Structure:
/home/royw/Applications
- FreeCAD
- FreeCAD-1.0.0-conda-Linux-x86_64-py311.appimage
- FreeCAD_1.0.2-conda-Linux-x86_64-py311.AppImage
- FreeCAD_1.0.2-conda-Linux-x86_64-py311.AppImage.info
- FreeCAD.readme
- FreeCAD_weekly
- FreeCAD_weekly-2025.09.11-Linux-x86_64-py311.AppImage.old
- FreeCAD_weekly-2025.09.11-Linux-x86_64-py311.AppImage.old.info
- FreeCAD_weekly-2025.09.12-Linux-x86_64-py311.AppImage.old
- FreeCAD_weekly-2025.09.12-Linux-x86_64-py311.AppImage.old.info
- FreeCAD_weekly-2025.09.24-Linux-x86_64-py311.AppImage.old
- FreeCAD_weekly-2025.09.24-Linux-x86_64-py311.AppImage.old.info
- FreeCAD_weekly-2025.10.01-Linux-x86_64-py311.AppImage.old
- FreeCAD_weekly-2025.10.01-Linux-x86_64-py311.AppImage.old.info
- FreeCAD_weekly-2025.10.08-Linux-x86_64-py311.AppImage.current
- FreeCAD_weekly-2025.10.08-Linux-x86_64-py311.AppImage.current.info
- FreeCAD_weekly.AppImage -> /home/royw/Applications/FreeCAD_weekly/FreeCAD_weekly-2025.10.08-Linux-x86_64-py311.AppImage.current
To add FreeCAD official releases:
➤ appimage-updater add FreeCAD https://github.com/FreeCAD/FreeCAD/releases ~/Applications/FreeCAD
Detected download URL, using repository URL instead:
Original: https://github.com/FreeCAD/FreeCAD/releases
Corrected: https://github.com/FreeCAD/FreeCAD
Successfully added application 'FreeCAD'
Source: https://github.com/FreeCAD/FreeCAD
Download Directory: /home/royw/Applications/FreeCAD
Pattern: (?i)FreeCAD.*\.(zip|AppImage)(\.(|current|old))?$
Tip: Use 'appimage-updater show FreeCAD' to view full configurationNotice that the URL is corrected from the release directory (could even be the image file itself), to the project directory.
And to add FreeCAD weekly releases:
~/Applications $ appimage-updater add FreeCAD_weekly https://github.com/FreeCAD/FreeCAD/releases ~/Applications/FreeCAD_weekly --prerelease --rotation --symlink ~/Applications/FreeCAD_weekly.AppImage
Detected download URL, using repository URL instead:
Original: https://github.com/FreeCAD/FreeCAD/releases
Corrected: https://github.com/FreeCAD/FreeCAD
Successfully added application 'FreeCAD_weekly'
Source: https://github.com/FreeCAD/FreeCAD
Download Directory: /home/royw/Applications/FreeCAD_weekly
Pattern: (?i)FreeCAD.*\.(zip|AppImage)(\.(|current|old))?$
Tip: Use 'appimage-updater show FreeCAD_weekly' to view full configuration➤ appimage-updater show FreeCAD- Name: FreeCAD
- Status: Enabled
- Source: Github
- URL: https://github.com/FreeCAD/FreeCAD
- Download Directory: /home/royw/Applications/FreeCAD
- File Pattern: (?i)FreeCAD.*.(zip|AppImage)(.(|current|old))?$
- Config File: /home/royw/.config/appimage-updater/apps/FreeCAD.json
- Prerelease: No
- Checksum Verification: Enabled
- Algorithm: SHA256
- Pattern: {filename}-SHA256.txt
- Required: No
- File Rotation: Disabled
- FreeCAD_1.0.2-conda-Linux-x86_64-py311.AppImage
- Size: 759.0 MB
- FreeCAD-1.0.0-conda-Linux-x86_64-py311.appimage
- Size: 648.2 MB
- No symlinks found pointing to AppImage files
To see the two new apps that are being managed:
➤ appimage-updater list --format markdown| Source | Download Directory | ||
|---|---|---|---|
| https://github.com/probonopd/go-appimage | ~/Applications/appimaged | ||
| https://github.com/AppImage/appimagetool | ~/Applications/appimagetool | ||
| https://github.com/bambulab/BambuStudio | ~/Applications/BambuStudio | ||
| https://github.com/EdgeTX/edgetx | ~/Applications/EdgeTX | ||
| https://github.com/FreeCAD/FreeCAD | ~/Applications/FreeCAD | ||
| https://github.com/FreeCAD/FreeCAD | ~/Applications/FreeCAD_weekly | ||
| https://github.com/shiftkey/desktop | ~/Applications/GitHubDesktop | ||
| https://inkscape.org/release/all/gnulinux/appimage/ | ~/Applications/InkScape | ||
| https://github.com/cnr-isti-vclab/meshlab | ~/Applications/Meshlab | ||
| https://codeberg.org/OpenRGB/OpenRGB | ~/Applications/OpenRGB | ||
| https://github.com/OpenShot/openshot-qt | ~/Applications/OpenShot | ||
| https://github.com/SoftFever/OrcaSlicer | ~/Applications/OrcaSlicer | ||
| https://github.com/SoftFever/OrcaSlicer | ~/Applications/OrcaSlicerNightly | ||
| https://github.com/SoftFever/OrcaSlicer | ~/Applications/OrcaSlicerRC | ||
| https://sourceforge.net/projects/scribus/files/scribus-devel/1.7.0 | ~/Applications/ScribusDev | ||
| https://github.com/Ultimaker/Cura | ~/Applications/UltiMaker-Cura | ||
| https://developers.yubico.com/yubikey-manager-qt/Releases/yubikey-manager-qt-latest-linux.AppImage | ~/Applications/YubiKey |
You can manually run appimage-updater check or integrate it into crontab or your favorite task scheduler.
➤ appimage-updater check -n --format markdownChecking 17 applications for updates...
- Starting concurrent checks: [0/17] (0.0%)
- Completed appimagetool: [1/17] (5.9%)
- Completed appimaged: [2/17] (11.8%)
- Completed FreeCAD: [3/17] (17.6%)
- Completed BambuStudio: [4/17] (23.5%)
- Completed EdgeTX_Companion: [5/17] (29.4%)
- Completed YubiKey: [6/17] (35.3%)
- Completed Meshlab: [7/17] (41.2%)
- Completed FreeCAD_weekly: [8/17] (47.1%)
- Completed OrcaSlicer: [9/17] (52.9%)
- Completed OrcaSlicerRC: [10/17] (58.8%)
- Completed GitHubDesktop: [11/17] (64.7%)
- Completed OrcaSlicerNightly: [12/17] (70.6%)
- Completed UltiMaker-Cura: [13/17] (76.5%)
- Completed OpenShot: [14/17] (82.4%)
- Completed OpenRGB: [15/17] (88.2%)
- Completed InkScape: [16/17] (94.1%)
- Completed ScribusDev: [17/17] (100.0%)
Quick Commands:
# Add applications (configuration is created automatically)
appimage-updater add FreeCAD https://github.com/FreeCAD/FreeCAD ~/Apps/FreeCAD
appimage-updater add --prerelease --rotation VSCode https://github.com/microsoft/vscode ~/Apps/VSCode
# Check for updates
appimage-updater check # All applications
appimage-updater check --dry-run # Check only, no downloads
appimage-updater check FreeCAD # Specific application
# Manage applications
appimage-updater list --format json # List all configured apps as a JSON file
appimage-updater show FreeCAD # Show app details
appimage-updater edit FreeCAD --prerelease # Enable prereleases
appimage-updater remove OldApp # Remove applicationFor complete command documentation, see the Usage Guide.
- Easy Application Setup: Simple
addcommand with intelligent defaults - File Rotation & Symlinks: Automatic file management with configurable retention (fixed naming)
- Flexible Configuration: Custom rotation settings and symlink management
- Multi-Format Support: Works with
.zip,.AppImage, and other release formats seamlessly - Batch Operations: Download multiple updates concurrently with retry logic
- GitHub Integration: Full support for releases, prereleases, and asset detection
- Automatic Checksum Verification: SHA256, SHA1, MD5 support for download security
- Progress Tracking: Visual feedback with transfer speeds and ETAs
- Robust Error Handling: Automatic retries with exponential backoff
- Intelligent Architecture Filtering: Automatically eliminates incompatible downloads based on CPU architecture (x86_64, arm64, etc.) and supported Linux formats
- Distribution-Aware Selection: Automatically selects the best compatible distribution (Ubuntu, Fedora, Debian, Arch, etc.)
- Smart Auto-Detection: Automatically detects continuous build repositories and enables prerelease support
- Version Metadata System: Accurate version tracking with
.infofiles (a text file containing the version) for complex release formats - Enhanced ZIP Support: Automatically extracts AppImages from ZIP files with intelligent error handling
- Smart Pattern Matching: Handles naming variations (underscore/hyphen) and character substitutions
Comprehensive support for applications that distribute AppImage files inside ZIP archives:
# Applications like EdgeTX Companion that provide ZIP files containing AppImages
appimage-updater add EdgeTX_Companion https://github.com/EdgeTX/edgetx-companion ~/Apps/EdgeTX
# Automatic ZIP extraction workflow:
# 1. Downloads: EdgeTX-Companion-2.9.4-x64.zip
# 2. Extracts: EdgeTX-Companion-2.9.4-x64.AppImage (made executable)
# 3. Creates: EdgeTX-Companion-2.9.4-x64.AppImage.info (version metadata)
# 4. Removes: Original ZIP fileAutomatically eliminates incompatible downloads:
# Multi-architecture project (e.g., BalenaEtcher)
# Available: linux-x86_64.AppImage, linux-arm64.AppImage, darwin.dmg, win32.exe
uv run python -m appimage_updater add BalenaEtcher https://github.com/balena-io/etcher ~/Apps/BalenaEtcher
# On a Ubuntu x86_64 system, appimage-updater will automatically select Linux x86_64 AppImage
# Filters out: ARM64, macOS, Windows versions (non-Linux platforms ignored)Note that the module name uses an underscore instead of a hyphen (uv run python -m appimage_updater). This is a python quirk.
System Detection:
- Architecture: x86_64, amd64, arm64, armv7l, i686 (with intelligent aliasing)
- Platform: Linux only (AppImage is Linux-specific)
- Format Support: .AppImage, .zip (that contains a .AppImage)
For Distribution-Specific Releases:
# Automatically selects best distribution match
uv run python -m appimage_updater add BambuStudio https://github.com/bambulab/BambuStudio ~/Apps/BambuStudio
# Ubuntu 25.04 → Selects ubuntu-24.04 (closest compatible)
# Fedora 38 → Selects fedora version
# Gentoo → Shows interactive selection menuSupported Distributions:
- Ubuntu/Debian family (automatic compatibility)
- Fedora/CentOS/RHEL family (automatic compatibility)
- openSUSE/SUSE family (automatic compatibility)
- Arch/Manjaro family (automatic compatibility)
- Other distributions (interactive selection)
Each monitored application has its own configuration file specifying:
- Source URL (e.g., GitHub releases)
- Target download directory
- File pattern matching for AppImage files
- Checksum verification settings (optional, recommended for security)
AppImage Updater supports multiple repository types with comprehensive documentation for each:
- GitHub Repositories - Full support for GitHub releases API with authentication and enterprise support
- GitLab Repositories - Complete GitLab integration for both gitlab.com and self-hosted instances
- SourceForge Repositories - Complete SourceForge integration for both sourceforge.net and self-hosted instances
- Direct Download URLs - Static download links, "latest" symlinks, and dynamic download pages
Each repository type has detailed documentation covering setup, authentication, troubleshooting, and advanced features.
Some applications cannot be automatically monitored due to technical limitations:
- Issue: Uses complex JavaScript-generated download URLs with dynamic dropdown selectors
- Workaround: Download manually from lmstudio.ai/download and place in your configured directory
- Alternative: Monitor their beta releases page for direct download links
Applications requiring authentication or login cannot be automatically monitored.
Download pages with CAPTCHA verification are not supported for automated access.
Continuous Integration - Full CI pipeline with automated testing and documentation
Live Documentation - Documentation site with enhanced navigation using github pages
Open Source - Public repository with contribution guidelines and templates
Tools - Built with Python 3.13 (local) and 3.11 & 3.12 (ci), uv, ruff, mypy, pytest
Our comprehensive documentation is live and automatically updated:
User Guides:
- Getting Started - Step-by-step tutorial and basic usage
- Installation - Complete installation methods and troubleshooting
- Usage Guide - Complete CLI command reference
- Configuration - Advanced configuration options
- Examples - Practical usage patterns and workflows
Feature Guides:
- ZIP Support - Handling applications distributed in ZIP files
- Rotation Guide - File rotation and symlink management
- Compatibility System - Distribution compatibility and selection
Support & Maintenance:
- Security Guide - Authentication, checksums, and security best practices
- Troubleshooting - Common issues, solutions, and diagnostics
- Changelog - Version history and release notes
Developer Resources:
- Architecture - System design and component overview
- Developer Commands - Task automation and development tools
- Development - Setting up development environment
- Testing Guide - Running tests and quality checks
- Contributing - Guidelines for contributing to the project
- Python 3.11 or higher
- pipx (for recommended installation) or pip
- git
- pymarkdownlint
- uv package manager
- Task runner (taskfile.dev)
Quick Start:
# Clone and setup
git clone https://github.com/royw/appimage-updater.git
cd appimage-updater
uv sync --extra dev
# Run tests
task test
# Code quality
task check
# Build package
task makeFor complete development setup, testing procedures, and contribution guidelines, see:
MIT License