AI Playground — FedAero Setup Guide#
AI Playground is an open source generative AI application suite for offline Ai chat, code assistance, document search, image analysis, and image and video generation. All features are powered by your PC’s Intel® Core™ Ultra with built-in Intel® Arc™ GPU or discrete Intel® Arc™ GPU Series A or B with 8GB+ of vRAM.
Edge Node Infrastructure Blueprint (ENIB) images ship with GPU, NPU, and compute-runtime drivers pre-installed. This guide covers how to install and run AI Playground on an ENIB system.
For more information about AI Playground features, see
AI Playground Documentation.
For GPU driver requirements on standalone Ubuntu, see
Ubuntu GPU driver installation.
Contents#
1. Prerequisites and hardware#
What ENIB provides (already installed):
Intel GPU compute-runtime (
libze-intel-gpu1,intel-igc-*,intel-gmmlib)Level Zero loader (
level-zeropackage,libze_loader.so.1)Intel NPU userspace driver (
intel-driver-compiler-npu,intel-fw-npu,intel-level-zero-npu)Vulkan loader and Intel ANV driver (
libvulkan1,mesa-vulkan-drivers) — for llama.cpp GPUKernel with
xedriver support (kernel ≥ 6.10 or ENIB-supplied 6.18-intel)System proxy variables in
/etc/environment
Before installing AI Playground, add UV proxy environment variables to /etc/environment
(see §2) — required for the Python backend installer to reach PyPI and HuggingFace. Any other
missing system packages (e.g. python3-venv, libfuse2t64) are detected and prompted by the
AI Playground UI on first run.
Minimum specs:
Intel Core Ultra Series 1/2/3 with Xe iGPU, or Intel Arc dGPU (A/B series, 8 GB+ vRAM)
Ubuntu 24.04 (Noble)
32 GB system RAM recommended (16 GB minimum for CPU-only LLM)
≥ 100 GB free disk space for models and Python venvs
2. Proxy configuration#
ENIB images ship with http_proxy / https_proxy already set in /etc/environment.
The UV-specific proxy variables still need to be added —
uv (AI Playground’s Python package manager) reads UV_HTTP_PROXY / UV_HTTPS_PROXY
in addition to the standard environment proxy.
Verify existing proxy#
cat /etc/environment | grep -i proxy
# Should already contain http_proxy=... and https_proxy=...
If the proxy entries are missing, add them (replace with the site proxy address):
sudo tee -a /etc/environment <<'EOF'
http_proxy=http://proxy.example.com:port
https_proxy=http://proxy.example.com:port
HTTP_PROXY=http://proxy.example.com:port
HTTPS_PROXY=http://proxy.example.com:port
no_proxy=localhost,127.0.0.1,::1
NO_PROXY=localhost,127.0.0.1,::1
EOF
Add UV proxy variables#
sudo tee -a /etc/environment <<'EOF'
UV_HTTP_PROXY=http://proxy.example.com:port
UV_HTTPS_PROXY=http://proxy.example.com:port
EOF
Re-login and verify#
Note: Changes to /etc/environment only take effect after a logout and re-login.
The GNOME desktop launcher reads the PAM session environment set at login time — it does not
inherit variables exported in a terminal. Skipping the re-login is the most common cause of
backend install failures on ENIB.
After re-login, confirm all proxy vars are present and contain no quote characters:
printenv | grep -i proxy
# Expected: http_proxy, https_proxy, UV_HTTP_PROXY, UV_HTTPS_PROXY
3. Download and install AI Playground#
Download the installer#
AI Playground 3.1.2-beta-hf2:
curl -fL --proxy "$http_proxy" \
-o ~/AI-Playground.deb \
"https://github.com/intel/AI-Playground/releases/download/v3.1.2-beta_hf2/AI-Playground-installer.deb"
Install the .deb#
sudo apt install ~/AI-Playground.deb
apt resolves the Electron runtime dependencies
(libgtk-3-0, libnss3, libasound2, pciutils, python3, git) automatically.
Add the user to render and video groups#
If not already done by the ENIB image:
sudo gpasswd -a "$USER" render
sudo gpasswd -a "$USER" video
Group changes require a re-login to take effect:
groups | tr ' ' '\n' | grep -E 'render|video'
4. First run and backend setup#
Launch AI Playground#
After re-login, launch from the application menu (search “AI Playground”) or from a terminal.
Do not launch as root — Electron refuses to start with sudo.
ai-playground
Hardware Profile#
On initial set up, AI Playground detects your hardware profile and selects the appropriate feature mode (Studio, Essentials, Nvidia) to install. For ENIB systems (Intel Core Ultra - Panther Lake ), AI Playground Studio will be selected by default. Leave this as selected.
Backend installation#
For each backend (AI-Backend / OVMS, ComfyUI, LlamaCPP, Home-Agent):
Click Install in the AI Playground UI
The app downloads Python wheels, OVMS binaries, and clones the ComfyUI repository
If any system packages are missing (
python3-venv,libfuse2t64, build tools), the UI prompts to install them — follow the on-screen instructionsComfyUI installation takes ~5 minutes (XPU torch wheels + insightface compilation)
OVMS/AI-Backend installs in ~2 minutes
If any install fails with a network error, confirm proxy settings (§2) and retry from within
the app. Do not reinstall the .deb.
5. Verify GPU and NPU are detected#
Level Zero (ComfyUI XPU, OpenVINO GPU)#
ldconfig -p | grep -E 'libze_loader|libze_intel_gpu'
# Expected:
# libze_loader.so.1 => /usr/lib/x86_64-linux-gnu/libze_loader.so.1
# libze_intel_gpu.so.1 => /usr/lib/x86_64-linux-gnu/libze_intel_gpu.so.1
NPU#
ls /dev/accel/accel0 # device node must exist
ls /usr/lib/x86_64-linux-gnu/libze_intel_npu.so* # NPU Level Zero plugin
Render node access#
ls -l /dev/dri/renderD128 # must exist
groups | tr ' ' '\n' | grep -E 'render|video' # user must be in these groups
OpenVINO device enumeration#
After installing the AI-Backend:
~/.local/share/ai-playground/resources/OpenVINO/.venv/bin/python3 -c \
"import openvino as ov; print(ov.Core().available_devices)"
# Expected: ['CPU', 'GPU', 'NPU']
# GPU missing → Level Zero not found; check ldconfig
# NPU missing → group membership not applied; re-login and retry
ComfyUI XPU (PyTorch)#
After installing the ComfyUI backend:
~/.local/share/ai-playground/resources/ComfyUI/.venv/bin/python3 -c \
"import torch; print('torch:', torch.__version__); print('xpu devs:', torch.xpu.device_count())"
# Expected: torch: 2.12.x+xpu xpu devs: 1
# xpu devs: 0 → Level Zero not visible to venv; check ldconfig and re-login
6. Known ENIB-specific issues and fixes#
Backend installation fails with proxy / network errors#
Symptom: Installing any backend fails with Connection refused, ERR_CONNECTION_TIMED_OUT,
or git clone errors.
Cause — proxy not in session environment. The GNOME desktop launcher starts AI Playground
without proxy variables exported in ~/.profile or ~/.bashrc. Only variables in
/etc/environment are loaded for desktop-launched processes.
Fix: Confirm /etc/environment has both the system proxy and UV proxy vars (§2), then
log out and back in. Confirm with printenv http_proxy UV_HTTP_PROXY in a new terminal.
ENIB GPU stack — Level Zero package naming#
ENIB ships Level Zero as the level-zero package (not libze1). These are the same loader
under different package names for different Ubuntu generations. Installing libze1 from the
Intel apt repo on top of the ENIB level-zero package will conflict.
Disk space — model storage#
AI Playground downloads models on first use. Approximate storage per feature:
Feature |
Model size |
|---|---|
LLM (OpenVINO / OVMS) |
4–15 GB per model |
LLM (llama.cpp, GGUF) |
2–8 GB per model |
Image generation |
5–12 GB per model set |
NPU chat |
2–5 GB |
At least 50–100 GB must be free on the partition containing ~/.local/share/ai-playground/.
Check before installing backends:
df -h ~/.local/share
Models are stored at ~/.local/share/ai-playground/resources/models/.
GPU utilization not visible#
Symptom: GPU monitoring tools (e.g. intel_gpu_top) show no data or fail to start.
Cause: ENIB uses the xe kernel driver (not i915). intel_gpu_top does not support
xe.
GPU frequency is readable via sysfs without any permission changes:
cat /sys/class/drm/card0/device/tile0/gt0/freq0/cur_freq # current GPU MHz
cat /sys/class/drm/card0/device/tile0/gt0/freq0/max_freq
7. Uninstall#
# Remove AI Playground app:
sudo apt remove ai-playground
# Remove downloaded models and Python venvs (several GB):
rm -rf ~/.local/share/ai-playground
# Remove uv cache (optional):
rm -rf ~/.cache/uv
# Remove UV proxy vars added in §2b (if desired):
sudo sed -i '/UV_HTTP_PROXY\|UV_HTTPS_PROXY/d' /etc/environment