diff --git a/public_html/admin/downloads/INFRASTRUCTURE-REFERENCE.md b/public_html/admin/downloads/INFRASTRUCTURE-REFERENCE.md
index 25468a8..e6f4217 100644
--- a/public_html/admin/downloads/INFRASTRUCTURE-REFERENCE.md
+++ b/public_html/admin/downloads/INFRASTRUCTURE-REFERENCE.md
@@ -1,5 +1,5 @@
# INFRASTRUCTURE REFERENCE — COMPLETE SYSTEM MAP
-**Last Updated:** 2026-06-18
+**Last Updated:** 2026-07-01
**Owner:** Myron Blair — myronblair@outlook.com
---
@@ -42,7 +42,7 @@ HOME NETWORK (FortiGate router at 10.48.200.1)
│ ├── VM 113 10.48.200.35 MediaStack (Sonarr/Radarr/qBT/Prowlarr)
│ ├── VM 118 10.48.200.18 Homebridge
│ ├── VM 120 10.48.200.110 NovaCPX hosting panel
- │ ├── VM 210 10.48.200.210 Ollama (local LLM) (local LLM)
+ │ ├── VM 210 10.48.200.210 Ollama (local LLM + vision) — llama3.1:8b, llava:7b
│ └── CT110 10.48.200.19 WireGuard exit container
│
├─► PVE2 Proxmox 10.48.200.91 (secondary hypervisor)
@@ -305,17 +305,20 @@ sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@10.48.200.90 \
---
-### VM 210 — Ollama Local LLM (PVE1)
+### VM 210 — Ollama Local LLM + Vision (PVE1)
| Field | Value |
|-------|-------|
| **IP** | 10.48.200.210 |
| **OS** | Ubuntu (cloud image) |
-| **SSH** | `ssh myron@10.48.200.95` — password: `Joker1974!` (then `sudo`) |
-| **Purpose** | Local AI inference — runs llama3.2 model for JARVIS Tier 1 chat |
+| **SSH** | `ssh root@10.48.200.210` via PVE1 hop — password: `Joker1974!!!` |
+| **Purpose** | Local AI inference — chat (llama3.1:8b) + vision (llava:7b) |
| **API** | `http://10.48.200.210:11434` (Ollama REST API) |
| **JARVIS Agent** | ID: `ollama-ai_ubuntu` |
+| **Models** | `llama3.1:8b` (chat/Tier 1), `llava:7b` (vision cascade) |
**JARVIS uses this as Tier 1 AI** — if Ollama is down, falls back to Groq (cloud).
+**Vision cascade:** Arc Reactor calls Claude first; if Claude credits depleted, falls back to llava:7b via Ollama.
+Vision is enabled via: `/etc/systemd/system/jarvis-arc.service.d/vision.conf` → `OLLAMA_VISION_MODEL=llava:7b`
---
@@ -484,12 +487,30 @@ Voice (browser mic)
→ /api/chat.php (4-tier AI)
Tier 0.7: KB intents / planner (tasks, appointments)
Tier 1: Knowledge Base (MySQL)
- Tier 1.5: Ollama (10.48.200.210:11434, llama3.2) — local LLM
+ Tier 1.5: Ollama (10.48.200.210:11434, llama3.1:8b) — local LLM
+ Vision: Ollama llava:7b (via Arc Reactor _vision_call cascade)
Tier 2: Groq (cloud, model: compound-beta-mini)
Tier 3: Claude API (Anthropic, fallback)
→ ElevenLabs TTS → browser speaker
```
+### Arc Reactor (AI Job Processor)
+**Service:** `jarvis-arc` (systemd) — port 7474
+**Runtime:** `/opt/jarvis-arc/` (Python venv, `reactor.py`)
+**Log:** `/var/log/jarvis/arc.log`
+**Admin button:** Workers → Daemons → `SETUP` (live popup) / `RESTART`
+**Vision:** Claude → Ollama llava:7b → graceful fallback
+**Vision config:** `/etc/systemd/system/jarvis-arc.service.d/vision.conf`
+
+```bash
+systemctl status jarvis-arc
+systemctl restart jarvis-arc
+journalctl -u jarvis-arc -f
+```
+
+To re-deploy Arc Reactor from source:
+Use **Workers → Daemons → SETUP** in JARVIS admin (live log popup shows progress).
+
### Deploy Pipeline
```
Code edit → git push → GitHub webhook → /webhook.php (HMAC verified)
@@ -594,6 +615,14 @@ fs_cli -x "reloadacl" # reload ACL (safe)
## 10. BACKUP SYSTEMS
+### JARVIS Database Backup
+- **Script:** `/usr/local/bin/jarvis-backup.sh` (also at `/var/www/jarvis/deploy/`)
+- **Output:** `/var/backups/jarvis/jarvis_backup_TIMESTAMP.tar.gz`
+- **Log:** `/var/backups/jarvis/backup.log`
+- **Retention:** 7 days (auto-purge)
+- **Trigger:** JARVIS admin → Backups → RUN BACKUP NOW, or run script directly
+- **DB:** `jarvis_db` — `jarvis_user / J4rv1s_Pr0t0c0l_2026!`
+
### DO Server Backup
- **Repo:** `myronblair/do-server-config`
- **Schedule:** Weekly, Sunday 4am