Introduzione
Eseguire un agente AI locale su un homelab senza GPU dedicata è una sfida comune: la maggior parte dei modelli LLM richiede VRAM per l’inferenza, ma non tutti hanno una scheda video compatibile (o vogliono dedicarla). La soluzione che abbiamo adottato per Hermes Agent su Proxmox VE usa due leve fondamentali:
- Offloading dell’inferenza su cloud tramite OpenRouter (API unificate per modelli gratuiti e a pagamento)
- Containerizzazione leggera in LXC invece di VM pesanti
Il risultato: un agente AI sempre attivo, accessibile via Telegram/CLI, che gira su un nodo Proxmox senza GPU e consuma pochissime risorse.
Architettura a blocchi
Ecco come si compone lo stack:
- Proxmox VE 8.x (host bare-metal)
- Container LXC unprivileged (Debian 12 “bookworm”, 2 vCPU, 4 GB RAM, 20 GB disco)
- Hermes Agent (runtime Python, configurato via
config.yaml) - OpenRouter come provider LLM (modello
openrouter/freeper test,openrouter/autoin produzione) - Telegram Bot API per interfaccia conversazionale
- Home Assistant (opzionale, per controllo domotica via tool
ha_*)
Perché OpenRouter: niente GPU, niente problemi
OpenRouter espone decine di modelli (Llama, Mixtral, Qwen, Gemma, ecc.) dietro un’unica endpoint compatibile OpenAI. Basta una OPENROUTER_API_KEY nel .env e Hermes la userà come provider LLM predefinito.
# ~/.hermes/.env (solo le voci rilevanti) MODEL_PROVIDER=openrouter MODEL_NAME=openrouter/auto OPENROUTER_API_KEY=sk-or-v1-... # oppure per i modelli gratuiti: # MODEL_NAME=openrouter/free
Vantaggi:
- Zero dipendenze CUDA/ROCm, zero driver GPU sull’host
- Switch istantaneo tra modelli (basta cambiare
MODEL_NAME) - Fatturazione a consumo / tier gratuito per sperimentazione
- Latenza accettabile (~1-2 s prima token) su connessione fibra
Container LXC vs VM: perché LXC vince qui
| Risorsa | VM (KVM) | LXC (unprivileged) |
|---|---|---|
| Overhead RAM | ~500 MB solo per kernel guest | ~0 (kernel condiviso) |
| Avvio | 30-60 s | < 3 s |
| Backup/Restore | Immagine disco intera | Directory bind-mount, snapshot ZFS istantaneo |
| Accesso host (GPU, /dev, rete) | Passthrough complesso | Bind mount nativi, lxc.cgroup2.devices.allow |
| Densità | 2-3 VM per nodo entry-level | 10+ container |
Per un agente AI che gira 24/7 e fa solo I/O di rete (chiamate API, Telegram, Home Assistant), LXC è la scelta ovvia: più densità, backup atomici con pct snapshot, migrazione live tra nodi Proxmox senza downtime.
Setup passo-passo
1. Crea il container LXC
# Su Proxmox host (root) pct create 110 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst --hostname hermes-agent --cores 2 --memory 4096 --swap 512 --rootfs local-lvm:20 --net0 name=eth0,bridge=vmbr0,ip=dhcp --unprivileged 1 --features nesting=1 --onboot 1 pct start 110 pct enter 110
2. Dentro il container: dipendenze di base
apt update && apt install -y python3 python3-venv python3-pip git curl ca-certificates gnupg lsb-release # Utente non-root per sicurezza useradd -m -s /bin/bash hermes su - hermes
3. Installa Hermes Agent
cd ~ git clone https://github.com/NousResearch/hermes-agent.git cd hermes-agent python3 -m venv .venv source .venv/bin/activate pip install -e .[all] # include dipendenze opzionali (browser, voice, ecc.)
4. Configurazione (config.yaml + .env)
# ~/.hermes/config.yaml (estratto chiave)
profile: default
model:
provider: openrouter
name: openrouter/auto
temperature: 0.3
max_tokens: 4096
telegram:
enabled: true
# token e chat_id nel .env
homeassistant:
enabled: true
# url e token nel .env
skills:
auto_load: true
directories:
- ~/.hermes/skills
- ./skills
# ~/.hermes/.env (chmod 600!) MODEL_PROVIDER=openrouter MODEL_NAME=openrouter/auto OPENROUTER_API_KEY=sk-or-v1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX TELEGRAM_BOT_TOKEN=123456789:AAHXXXXXXXXXXXXXXXXXXXXXXXXXXXX TELEGRAM_CHAT_ID=654210634 HA_URL=http://192.168.1.XX:8123 HA_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... # TTS opzionale TTS_PROVIDER=edge TTS_VOICE=it-IT-DiegoNeural
5. Systemd service per avvio automatico
# /etc/systemd/system/hermes-agent.service (come root nel container) [Unit] Description=Hermes Agent After=network-online.target Wants=network-online.target [Service] Type=simple User=hermes WorkingDirectory=/home/hermes/hermes-agent Environment=PATH=/home/hermes/hermes-agent/.venv/bin:/usr/bin:/bin EnvironmentFile=/home/hermes/.hermes/.env ExecStart=/home/hermes/hermes-agent/.venv/bin/python -m hermes_agent Restart=always RestartSec=10 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target
systemctl daemon-reload systemctl enable --now hermes-agent journalctl -u hermes-agent -f
6. Verifica su Telegram
Invia /start al bot. Hermes risponde e mostra i tool caricati (skills, Home Assistant, ecc.). Prova:
accendi luce soggiorno→ chiamaha_call_servicecerca su web "Proxmox LXC backup"→ usaweb_searchleggi file /etc/hostname→ usaread_file
Manutenzione e aggiornamenti
- Aggiornare Hermes:
cd ~/hermes-agent && git pull && pip install -e .[all]+systemctl restart hermes-agent - Backup configurazione: snapshot ZFS del dataset LXC (
pct snapshot 110 pre-update) + copy~/.hermes/su storage remoto - Cambiare modello: modifica
MODEL_NAMEin.enve riavvia il servizio (nessun rebuild) - Log centralizzati:
journalctl -u hermes-agent -fo forward su Loki/Grafana viasystemd-journal-remote
Costi indicativi (OpenRouter, novembre 2026)
| Modello | Costo / 1M token (in+out) | Note |
|---|---|---|
openrouter/free (es. meta-llama/llama-3.2-3b-instruct:free) | $0 | Rate limit, context 8k-32k, qualità base |
openrouter/auto (routing intelligente) | ~$0,10-0,50 | Sceglie il miglior rapporto qualità/prezzo per ogni richiesta |
anthropic/claude-3.5-sonnet | $3 / $15 | Top-tier coding/reasoning |
google/gemini-flash-1.5 | $0,075 / $0,30 | Ottimo rapporto qualità/prezzo, context 1M |
Un agente attivo 24/7 con ~50 richieste/giorno (misto chat + tool use) sta intorno a 0,50-1,50 €/mese su openrouter/auto, quasi zero su tier gratuito.
Conclusione
Far girare un agente AI completo su Proxmox senza GPU non solo è possibile, ma è la scelta più pragmatica per un homelab: LXC dà densità e gestione immutabile, OpenRouter rimuove il collo di bottiglia hardware. Hermes Agent aggiunge l'orchestrazione (skills, tool use, memoria persistente, voce, browser) trasformando il container in un vero "system administrator sintetico" che risponde su Telegram, governa Home Assistant, scrive codice e fa ricerca web.
Prossimi passi per il lab: aggiungere cronjob per report giornalieri, integrare karakeep-notes per knowledge base locale, testare browser-use per automazioni web complesse — tutto nello stesso container LXC da 4 GB.

