Skip to main content

Intel

Alchemist tries Intel VAAPI first and QSV second. That matches current Intel Linux reality: Intel Arc uses VAAPI through the i915 or xe driver, not QSV. QSV remains a fallback path for older Intel hardware and FFmpeg setups.

Supported generations

GenerationH.264HEVCAV1Notes
Intel iGPU, all supported generationsYes6th gen+Arc / Meteor Lake+Alchemist prefers VAAPI, then QSV; AV1 encode needs Arc or a Meteor Lake / Core Ultra iGPU

Critical note for Intel Arc

Intel Arc uses VAAPI via the Linux DRM stack. Do not force QSV for Arc unless you have a specific reason and have verified it works in your FFmpeg build. The expected path is VAAPI first.

Host setup

Install the Intel VAAPI driver and verification tools.

sudo apt install intel-media-va-driver-non-free vainfo

Verify the render node directly on the host:

vainfo --display drm --device /dev/dri/renderD128

For newer systems, renderD129 may be the Intel node. Check ls -l /dev/dri if renderD128 is not Intel.

Docker

Pass /dev/dri into the container. The image bundles vainfo and an FFmpeg with the Intel VAAPI and QSV encoders, and the default (root) container can open the render nodes without any group_add. Driver auto-detection handles modern Intel iGPUs; only set LIBVA_DRIVER_NAME=iHD if it picks the wrong driver. Running with PUID/PGID? Also add the host's numeric render GID — see Device permissions.

Docker Compose

services:
alchemist:
image: ghcr.io/bybrooklyn/alchemist:latest
ports:
- "3000:3000"
volumes:
- ./config:/app/config
- ./data:/app/data
- /path/to/media:/media
devices:
- /dev/dri:/dev/dri
environment:
- ALCHEMIST_CONFIG_PATH=/app/config/config.toml
- ALCHEMIST_DB_PATH=/app/data/alchemist.db
# Optional — only if auto-detection picks the wrong driver:
# - LIBVA_DRIVER_NAME=iHD
restart: unless-stopped

docker run

docker run -d \
--name alchemist \
--device /dev/dri:/dev/dri \
-p 3000:3000 \
-v ./config:/app/config \
-v ./data:/app/data \
-v /path/to/media:/media \
-e ALCHEMIST_CONFIG_PATH=/app/config/config.toml \
-e ALCHEMIST_DB_PATH=/app/data/alchemist.db \
--restart unless-stopped \
ghcr.io/bybrooklyn/alchemist:latest

Verify inside the container

vainfo --display drm --device /dev/dri/renderD128
ffmpeg -hide_banner -encoders | grep -E 'vaapi|qsv'

FFmpeg lists h264_vaapi, hevc_vaapi, av1_vaapi, and the *_qsv encoders out of the box. If VAAPI is healthy, Alchemist probes av1_vaapi, hevc_vaapi, and h264_vaapi first, then the QSV encoders.

In Alchemist

Set Settings → Hardware → Preferred Vendor → intel. Only set Device Path if auto detection chooses the wrong render node on a multi-GPU Linux host.