[Day 1] DGX Spark Came Home — I Made It Draw a Cat
So... what is "local LLM" again?
Honestly, I'm still figuring out what "local LLM" even means. But somehow, through a series of decisions I won't fully justify here, I ended up buying an NVIDIA DGX Spark — and now it's sitting in my house.
DGX Spark: NVIDIA's "supercomputer for the home" — a small but seriously expensive box with the latest-gen AI chip inside. Apparently.
What I really want to figure out is: when should I use local AI vs. cloud AI? Reading articles about it doesn't seem to help, so I'm going full hands-on. Goal: 100 experiments, one per day-ish, until I have an evidence-based answer.
This is experiment#1.
First, the hardware
So this is what showed up at my door — solidly packed in a sturdy cardboard box.
When I opened it, I was surprised at how small it actually is. "This is the AI machine?" kind of small.
Boot up → Initial OS setup
Power on, and an Ubuntu-based DGX OS 7.5.0 boots up.
Welcome screen
"Get started" — yes, please.
Language and timezone
Standard Linux installer territory — same as Ubuntu?
Privacy settings
Diagnostic data sharing prompts.
System update
The moment I plugged it in, it started updating itself. Modern Linux being Linux.
Setup complete
I picked a username and let the hostname auto-assign. DGX-side prep done.
Connecting from my Windows PC
Plugging a monitor into the DGX every time would be tedious, so I want to SSH in from my regular Windows machine (which I've nicknamed "myPC1").
NVIDIA provides a desktop app called NVIDIA Sync that's supposed to make SSH setup painless. So I install it.
…and that's where I fell into a trap big-time. Windows OpenSSH refused to connect with a "your SSH config has weird permissions, can't trust it" error.
Full troubleshooting steps are in the collapsible "Tech details" section below.
Inside the DGX, finally
After much wrestling, I made it inside. Here's the rough lay of the land:
| Item | Spec |
|---|---|
| GPU | NVIDIA GB10 Grace Blackwell |
| Memory | 128GB (unified between CPU and GPU) |
| Storage | 4TB SSD (basically empty) |
| CPU | 20 cores (perf + efficiency combo) |
| Idle power | 4W (yes, four) |
128GB of memory is apparently 8–16x what's in a typical laptop.
Setting up image generation → 🐱
This is the main event. I'm setting up ComfyUI to generate the first cat from this DGX.
The ComfyUI interface looks like this:
The "boxes connected by cables" view is intimidating at first, but the default workflow is pre-wired. You just type a prompt and hit Queue Prompt.
So:
a cute fluffy cat sitting on a sunny windowsill, photorealistic, high detail, beautiful lighting, soft fur, cinematic, masterpiece, best quality
A few seconds later...
🐱 There it is — the very first cat my DGX has ever drawn!
Tweaked the prompt and made some more.
Eyes a bit unsettling but yeah, fluffy cat.
Going a touch dark there.
…is this a cat? It feels artistic though.
Distinctive composition.
Each masterpiece takes a few to a dozen seconds. That speed means I can iterate on prompts without thinking about cost — which turned out to be quite addictive.
Tech details (let the AI explain it)
The rest is the technical stuff. Read on if you're curious.
I'm a non-engineer poking at this stuff for the first time, so I had Claude (my AI pair programmer for this challenge) write up the technical details. Hopefully useful for anyone walking the same path.
- How to actually get SSH working on Windows
NVIDIA Sync should generate an SSH keypair, register the public key on the DGX side at ~/.ssh/authorized_keys, and let you connect without a password.
If it doesn't work, the cause is usually permissions on Windows SSH config files.
Symptom
$ ssh spark-XXXX.local
Bad permissions. Try removing permissions for user: [PC]\CodexSandboxUsers
on file C:/Users/[user]/.ssh/config.
If you've installed Codex CLI or similar sandboxing tools in the past, the [PC]\CodexSandboxUsers group may have inherited permissions on ~/.ssh/.
Fix (run from an elevated PowerShell)
Use environment variables to avoid hard-coding your username/PC name.
# Take ownership
takeown /f "$env:USERPROFILE\.ssh\config"
icacls "$env:USERPROFILE\.ssh\config" /grant:r "$($env:USERNAME):F"
# Disable inheritance and remove the bad user
icacls "$env:USERPROFILE\.ssh\config" /inheritance:d
icacls "$env:USERPROFILE\.ssh\config" /remove "$env:COMPUTERNAME\CodexSandboxUsers"
Use /inheritance:d rather than /inheritance:r — :r strips all permissions, locking yourself out.
NVIDIA Sync's internal config files need the same treatment
~/.ssh/config Includes an NVIDIA Sync config file, and that one inherits the same problem.
$cfg = "$env:LOCALAPPDATA\NVIDIA Corporation\Sync\config\ssh_config"
icacls $cfg /inheritance:d
icacls $cfg /remove "$env:COMPUTERNAME\CodexSandboxUsers"
$key = "$env:LOCALAPPDATA\NVIDIA Corporation\Sync\config\nvsync.key"
icacls $key /inheritance:d
icacls $key /remove "$env:COMPUTERNAME\CodexSandboxUsers"
Ghost SIDs that icacls can't remove
If you have SIDs from deleted user accounts lingering, icacls /remove won't touch them. You need PowerShell ACL manipulation:
$cfg = "$env:LOCALAPPDATA\NVIDIA Corporation\Sync\config\ssh_config"
$acl = Get-Acl $cfg
$badRules = $acl.Access | Where-Object {
$_.IdentityReference.Value -like "S-1-5-*" -and
$_.IdentityReference.Translate([System.Security.Principal.NTAccount]) -isnot [System.Security.Principal.NTAccount]
}
$badRules | ForEach-Object { $acl.RemoveAccessRule($_) | Out-Null }
Set-Acl -Path $cfg -AclObject $acl
After this, ssh spark-XXXX.local connects on the first try (replace XXXX with your hostname).
- Commands to check DGX specs
# GPU
$ nvidia-smi
NVIDIA-SMI 580.142 Driver Version: 580.142 CUDA Version: 13.0
GPU 0: NVIDIA GB10 36C P8 4W / N/A
# OS
$ uname -a
Linux spark-XXXX 6.17.0-1014-nvidia ... aarch64 GNU/Linux
# Memory
$ free -h
Mem: 121Gi 2.6Gi 118Gi
# Storage
$ df -h
/dev/nvme0n1p2 3.7T 47G 3.5T 2% /
# CPU
$ lscpu
Architecture: aarch64
CPU(s): 20
Model name: Cortex-X925 + Cortex-A725
Notable bits:
- CUDA 13.0 (latest)
- aarch64 (ARM64) architecture — yes, the DGX is ARM
- 121Gi (≈128GB) unified memory
- 20 cores in big.LITTLE layout (10 perf + 10 efficient)
- ComfyUI installation steps
Following the official NVIDIA Comfy UI playbook.
# Virtual environment
cd ~
python3 -m venv comfyui-env
source comfyui-env/bin/activate
# PyTorch with CUDA 13.0
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu130
# ComfyUI itself
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install -r requirements.txt
# Model (SD 1.5, ~2GB)
cd models/checkpoints/
wget https://huggingface.co/Comfy-Org/stable-diffusion-v1-5-archive/resolve/main/v1-5-pruned-emaonly-fp16.safetensors
# Launch server
cd ~/ComfyUI
python main.py --listen 0.0.0.0
Key packages installed:
torch 2.11.0+cu130cuDNN 9.19NCCL 2.28transformers 5.7.0comfyui-frontend-package 1.42.15
Open http://spark-XXXX.local:8188 from your Windows PC's browser to access ComfyUI (XXXX is your hostname).
Download speed
The 2GB model came down at 40.6 MB/s in 50 seconds from HuggingFace's CDN. About half of my home 1Gbps LAN.
Tomorrow: Day 2
Day 2 plan: Train a LoRA on photos of my actual cat.
Today's SD 1.5 only knows "some cat from somewhere". With LoRA fine-tuning, I should be able to teach it about my specific cat. That kind of personalization feels like the killer feature of running locally.














Top comments (0)