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
| Generation | H.264 | HEVC | AV1 | Notes |
|---|---|---|---|---|
| Intel iGPU, all supported generations | Yes | 6th 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.