cloudburn.dev

Building an IronClaw AI Assistant on Debian LXC

Technical deep-dive into setting up ROCm 6.0 and IronClaw on a Beelink EQR6 Proxmox node for autonomous site growth.

Mission Status: IronClaw Deployment

Just finished building a high-performance local AI assistant on a Beelink EQR6 (Ryzen 9 6900HX). This isn’t just a standard VM setup — leveraging the integrated Radeon 680M GPU inside a Debian LXC to handle local AI tasks while bridging to Claude Pro and Gemini Workspace to keep API costs at zero.

The Hardware & Storage Stack

  • Host: Proxmox VE running on a Beelink EQR6 (Ryzen 9 6900HX).
  • LXC Container: Debian 12 (Bookworm) with 16GB RAM and 40GB NVMe root storage.
  • GPU: Radeon 680M (gfx1030) verified with ROCm 6.0.
  • Drivers: ROCm installed with --no-dkms for userspace compute without kernel module headaches.
  • Storage: NAS mounted at /mnt/nas via host-level bind mounts.

Step 1 — Proxmox Host: Wire the GPU into the LXC

On the Proxmox host, identify your render devices:

ls -l /dev/dri
stat -c "%t %T" /dev/dri/card0        # major:minor → 226:0
stat -c "%t %T" /dev/dri/renderD128   # major:minor → 226:128
stat -c "%t %T" /dev/kfd              # major:minor → 234:0

Edit the LXC config (replace 400 with your CT ID):

nano /etc/pve/lxc/400.conf

Add to the bottom:

lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 234:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/kfd dev/kfd none bind,optional,create=file

Set the container to privileged and restart:

pct stop 400 && pct start 400

Step 2 — Inside the LXC: Install ROCm 6.0 (No DKMS)

Shell into the container:

pct exec 400 -- bash

Add the AMD ROCm repo and install userspace-only (no kernel modules needed in LXC):

apt-get install -y wget gnupg2

# Add ROCm signing key
wget -qO - https://repo.radeon.com/rocm/rocm.gpg.key | apt-key add -

# Add repo (ROCm 6.0, Debian 12)
echo 'deb [arch=amd64] https://repo.radeon.com/rocm/apt/6.0 bookworm main' \
  | tee /etc/apt/sources.list.d/rocm.list

apt-get update
apt-get install -y rocm-hip-libraries rocm-opencl-runtime --no-install-recommends

Add your user to the render/video groups:

usermod -aG render,video root

Verify GPU is visible:

rocminfo | grep -A2 gfx
# Should show: gfx1030 (Radeon 680M)

Step 3 — Fix the systemd-logind NAMESPACE Error

Inside the LXC you’ll hit status=226/NAMESPACE on login — newer Debian tries to sandbox systemd-logind using kernel namespaces that LXC restricts.

mkdir -p /etc/systemd/system/systemd-logind.service.d/

cat > /etc/systemd/system/systemd-logind.service.d/override.conf << 'EOF'
[Service]
PrivateUsers=no
RestrictNamespaces=no
EOF

systemctl daemon-reload
systemctl restart systemd-logind

Login latency drops back to instantaneous.


Step 4 — Install Ollama with ROCm Backend

curl -fsSL https://ollama.com/install.sh | sh

# Start Ollama (ROCm auto-detected via /dev/kfd)
ollama serve &

# Verify GPU is used (not CPU fallback)
rocm-smi  # should show activity when model loads

# Pull a model that fits in shared VRAM + RAM
ollama pull qwen2.5:7b

# Test inference
ollama run qwen2.5:7b "confirm GPU inference is active"

Step 5 — Install Claude Code

curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs
npm install -g @anthropic-ai/claude-code

# Set API key
export ANTHROPIC_API_KEY=your-key-here

claude --version

What’s Next for the “Employee”

Now that the foundation is built:

  1. Subscription Bridge: Setting up headless Chromium to use existing Claude Pro/Gemini seats.
  2. GitLab Integration: Autonomous repo scanning via SSH deploy keys for content pipelines.

The Beelink EQR6 is proving to be a powerhouse for this kind of “AI Employee” workload. More to come as we start pushing autonomous content updates.