Huly is self-hosted on a Windows machine running WSL2. The Mac connects to it over the local network via SSH for full development access and via browser for the Huly UI.
- Windows LAN IP: 192.168.1.222
- WSL2 IP: 172.23.233.199 (changes on reboot)
- WSL2 user: forest
- Huly port: 8087
- SSH port: 2222 (Windows) -> 22 (WSL2)
- Selfhost repo: ~/huly-selfhost
- Main repo: ~/huly
Status: DONE
# Huly web UI
netsh interface portproxy add v4tov4 listenport=8087 listenaddress=0.0.0.0 connectport=8087 connectaddress=172.23.233.199
# SSH access
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=22 connectaddress=172.23.233.199netsh advfirewall firewall add rule name="Huly 8087" dir=in action=allow protocol=TCP localport=8087
netsh advfirewall firewall add rule name="SSH 2222" dir=in action=allow protocol=TCP localport=2222- sshd is running on port 22
- PubkeyAuthentication enabled
- AuthorizedKeysFile at ~/.ssh/authorized_keys
HOST_ADDRESS=192.168.1.222:8087set in ~/huly-selfhost/huly_v7.conf- Containers restarted with new config
Status: TODO - Claude Code on Mac should execute these steps.
# Check for existing key
ls ~/.ssh/id_ed25519.pub 2>/dev/null || ssh-keygen -t ed25519 -C "mac-to-wsl2" -f ~/.ssh/id_ed25519 -N ""# This is the one step that requires the WSL2 user's password
ssh-copy-id -p 2222 forest@192.168.1.222ssh -p 2222 forest@192.168.1.222 "echo 'SSH connection successful'; hostname; uname -a"# Add to ~/.ssh/config
cat >> ~/.ssh/config << 'EOF'
Host huly
HostName 192.168.1.222
Port 2222
User forest
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking accept-new
EOFssh huly "echo 'SSH alias working'; docker ps --format '{{.Names}}' | head -5"Cmd+Shift+P->Remote-SSH: Connect to Host...->huly- VS Code opens a remote window connected to WSL2
File > Open Folder->/home/forest/hulyfor the platform code- Or
/home/forest/huly-selfhostfor selfhost/docker config
Install the Docker extension on the remote side (ms-azuretools.vscode-docker):
- Docker sidebar (whale icon) shows all Huly containers
- Right-click containers to start/stop/restart/view logs
- Edit
~/huly-selfhost/compose.ymldirectly and rundocker compose up -dfrom the terminal
# Launch Claude Code targeting the remote WSL2 environment
claude --ssh hulyRun these from the Mac to confirm everything works:
# 1. SSH connects without password prompt
ssh huly "whoami"
# 2. Can access the Huly repo
ssh huly "ls ~/huly/package.json"
# 3. Docker is accessible
ssh huly "docker ps --format '{{.Names}} {{.Status}}' | grep huly"
# 4. Huly UI is reachable from Mac browser
# Open: http://192.168.1.222:8087
# 5. VS Code Remote-SSH connects
# Cmd+Shift+P -> "Remote-SSH: Connect to Host..." -> huly
# 6. Claude Code works over SSH
claude --ssh hulyThe WSL2 IP changes on reboot. Run these steps on the Windows machine to restore access:
wsl hostname -I# Remove old rules
netsh interface portproxy delete v4tov4 listenport=8087 listenaddress=0.0.0.0
netsh interface portproxy delete v4tov4 listenport=2222 listenaddress=0.0.0.0
# Add new rules with updated WSL2 IP
netsh interface portproxy add v4tov4 listenport=8087 listenaddress=0.0.0.0 connectport=8087 connectaddress=<NEW_WSL2_IP>
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=22 connectaddress=<NEW_WSL2_IP>sudo service ssh startcd ~/huly-selfhost
./setup.sh
# Enter the Windows LAN IP as the host address
# Enter 8087 as the port
# Say No to SSL