Steps to turn a laptop into a control client for the Desktop.home GPU host. Run these on
the client. Replace <user> with the host's login account and <HOST_IP> with the
host's current LAN IP.
Desktop.home may not resolve via router DNS. Pin it in the hosts file
(C:\Windows\System32\drivers\etc\hosts, admin required):
<HOST_IP> Desktop.home Desktop
Desktop.local (mDNS) is a fallback. Because the IP is DHCP-assigned, prefer a DHCP
reservation on the router so the hosts entry stays valid.
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "client-to-desktop"Install the public key on the host. On Windows OpenSSH, members of the Administrators
group authenticate against C:\ProgramData\ssh\administrators_authorized_keys (not the
per-user file), and that file must be owned by Administrators/SYSTEM with inheritance
disabled. Then add a ~/.ssh/config entry (see scripts/client/ssh-config.template):
Host Desktop.home desktop
HostName Desktop.home
User <user>
IdentityFile ~/.ssh/id_ed25519
Verify: ssh desktop "nvidia-smi --query-gpu=name --format=csv,noheader"
Note: the host's SSH login account is not necessarily the same as the profile folder name under
C:\Users. Confirm withnet localgroup administratorson the host.
Point the client at the remote daemon (persists for new shells):
setx OLLAMA_HOST "http://Desktop.home:11434"Then use the ollama CLI normally — ollama list, ollama run <model>, etc.
New-SmbMapping -LocalPath 'Z:' -RemotePath '\\Desktop.home\Portable RTX Compute' -Persistent $trueInteractive: open Moonlight, select the host, note the PIN, enter it at
https://Desktop.home:47990 (Sunshine web UI, requires the web login).
Headless (if you have SSH admin on the host) — no web password needed:
# client: start the pairing request with a chosen PIN
moonlight pair Desktop.home --pin 4739
# host: hand the same PIN to the running Sunshine service (its -0 flag reads PIN from stdin)
echo 4739 | ssh desktop '"C:\Program Files\Sunshine\sunshine.exe" -0'
# verify (lists host apps only if paired):
moonlight list Desktop.homeJupyterLab is secured with a token. Auth is configured on the host's local disk (not on the SMB share, not in this repo) so the secret never ships anywhere public.
Set or rotate the token on the host:
# generate a strong token
$t = python -c "import secrets; print(secrets.token_hex(24))"
# write it to the host's Jupyter config
"c.IdentityProvider.token = `"$t`"" | Set-Content "$env:USERPROFILE\.jupyter\jupyter_server_config.py" -Encoding ascii
# restart JupyterLab, then note the token — you will need it to connectThe launcher (scripts/host/Start-JupyterLab.bat) intentionally does not pass
--NotebookApp.token=""; doing so would disable authentication and re-open the service.
Connect from the client with:
http://Desktop.home:8888/?token=<your-token>
Prefer a password login instead? Run jupyter server password on the host (stores an
argon2 hash in jupyter_server_config.json) and drop the token line.