Desktop app for organizing media by date, batch-encoding video (AV1, H.265, H.264), and optional local AI tools (scanner, image/video upscalers). Cross-platform (Windows, Linux, macOS). Uses PySide6 and a private app environment—no need to install Python packages system-wide.
Installers (Windows & macOS): GitHub Releases (Release 6.6.4).
From source (Python 3.10+):
git clone https://github.com/UnDadFeated/ChronoArchiver.git
cd ChronoArchiver
python src/bootstrap.pyIf the bundled environment breaks: python src/bootstrap.py --reset-venv.
Arch Linux: chronoarchiver — e.g. paru -S chronoarchiver or yay -S chronoarchiver.
| Area | Role |
|---|---|
| Media Organizer | Sort files into date folders (EXIF, metadata, filename, or modified time). Supports remote directories via SSH/SFTP. |
| Mass Video Encoder | Batch transcode with H.264, H.265, or AV1; software or hardware encoders when available. Supports remote paths with a prefetch pipeline and OpenSSH connection sharing. |
| AI Media Scanner | Local OpenCV / ONNX classification and duplicate detection using dhash similarity grouping (no cloud upload). Supports remote scanning. |
| AI Image Upscaler | Optional local AI image upscaling using RealESRGAN. |
| AI Video Upscaler | Optional local AI video upscaling using RealESRGAN. |
GPU support is optional; CPU paths are available. After launch, wait until the footer shows READY, then open a panel and set paths or models as prompted.
If something fails: wait for READY, use each panel’s install/setup actions for engines and models, or open HEALTH / the DEBUG log path from the footer. Offline-only work continues when the network is unavailable; downloads may show NO NETWORK.
The application includes a standardized error code system (E100 to E999) for easier diagnostics (defined in errors.py):
- E1xx: Virtual environment creation, Python interpreter, or package setup failures.
- E2xx: Media Organizer filesystem permissions, overlap, or EXIF issues.
- E3xx: Mass Video Encoder FFmpeg initialization or process crashes.
- E4xx: SSH/SFTP connection, authentication, command, or upload failures.
- E5xx: AI Media Scanner ONNX runtime, OpenCV, or CUDA OOM issues.
- E6xx / E7xx: PyTorch/RealESRGAN load, CUDA OOM, or muxing failures for upscalers.
- E8xx: Model manager download timeouts or checksum hash mismatches.
- E9xx: Unsupported OS platform, network connectivity, or disk issues.
For JSON logs: set CHRONOARCHIVER_JSON_LOG=1 before starting the app.
For crash diagnostics, the session debug log records PID and hints for gdb / core analysis. On Linux/macOS, if the app is hung (still running), kill -USR2 <pid> appends Python stack dumps to the same log; set CHRONOARCHIVER_GDB_BACKTRACE=1 before that signal to also attempt a live gdb thread apply all bt (requires gdb and ptrace permission). Fatal native crashes may still omit Python stacks; use core files + gdb as logged.
Scanner and inference run on your machine unless you choose to move data elsewhere. See SECURITY.md for policy and reporting.
| Resource | Link |
|---|---|
| Changelog | CHANGELOG.md |
| Contributing | CONTRIBUTING.md |
| License | LICENSE |
Maintainer: UnDadFeated.