Skip to main content

Remote Access from Mac

DGX Lab runs on the DGX Spark and is accessed from your Mac via a browser. This guide covers three access methods: local network, Tailscale, and SSH tunnel.

1. Local Network

If your Mac and DGX Spark are on the same network, find the Spark's IP:

# On the DGX Spark
hostname -I

Then open http://<spark-ip>:3000 (dev) or http://<spark-ip> (production/docker) on your Mac.

2. Tailscale

Tailscale creates a private network between your devices, making the app accessible from anywhere.

Install on DGX Spark

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

Install on Mac

Download from tailscale.com/download or:

brew install tailscale

Access

Once both devices are on Tailscale, use the Tailscale hostname or IP:

http://<spark-tailscale-hostname>:3000 # dev
http://<spark-tailscale-hostname> # production/docker

Find the hostname with tailscale status on either device.

3. SSH Tunnel

If you cannot use Tailscale and the Spark is behind a firewall:

# On your Mac
ssh -L 3000:localhost:3000 -L 8000:localhost:8000 <user>@<spark-ip>

Then open http://localhost:3000 on your Mac. The tunnel must stay open.

Auto-Start on Boot

To have DGX Lab start automatically when the DGX Spark boots:

systemd service

sudo tee /etc/systemd/system/dgx-lab.service << 'EOF'
[Unit]
Description=DGX Lab
After=network.target

[Service]
Type=simple
User=<your-user>
WorkingDirectory=/path/to/dgx-lab
ExecStart=/usr/bin/make dev
Restart=on-failure
RestartSec=5
Environment=PATH=%h/.local/bin:%h/.bun/bin:/usr/local/bin:/usr/bin:/bin

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now dgx-lab

Manage the service

sudo systemctl status dgx-lab # check status
sudo systemctl restart dgx-lab # restart
sudo systemctl stop dgx-lab # stop
sudo systemctl disable dgx-lab # disable auto-start
journalctl -u dgx-lab -f # view logs

Mac Shortcuts

Add to your ~/.zshrc on your Mac for quick access:

# Replace <spark> with your Tailscale hostname or local IP
DGX_HOST="<spark>"

alias dgx-lab="open http://$DGX_HOST:3000"
alias dgx-lab-start="ssh <user>@$DGX_HOST 'sudo systemctl start dgx-lab'"
alias dgx-lab-stop="ssh <user>@$DGX_HOST 'sudo systemctl stop dgx-lab'"
alias dgx-lab-ssh="ssh <user>@$DGX_HOST"

Then:

dgx-lab-start # start the app
dgx-lab # open in browser
dgx-lab-stop # stop the app
dgx-lab-ssh # ssh into the Spark