wsl --install
wsl --install
wsl --install
wsl --install
wsl --install
wsl --install
wsl --list --online
wsl --install -d Ubuntu-24.04
wsl --list --online
wsl --install -d Ubuntu-24.04
wsl --list --online
wsl --install -d Ubuntu-24.04
sudo tee /etc/wsl.conf >/dev/null <<'EOF'
[boot]
systemd=true
EOF
sudo tee /etc/wsl.conf >/dev/null <<'EOF'
[boot]
systemd=true
EOF
sudo tee /etc/wsl.conf >/dev/null <<'EOF'
[boot]
systemd=true
EOF
wsl --shutdown
wsl --shutdown
wsl --shutdown
systemctl --user status
systemctl --user status
systemctl --user status
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs
npm i -g openclaw@latest
npm i -g openclaw@latest
npm i -g openclaw@latest
openclaw onboard --install-daemon
openclaw onboard --install-daemon
openclaw onboard --install-daemon
wsl hostname -I
wsl hostname -I
wsl hostname -I
sudo loginctl enable-linger "$(whoami)"
sudo loginctl enable-linger "$(whoami)"
sudo loginctl enable-linger "$(whoami)"
systemctl --user enable openclaw-gateway
systemctl --user enable openclaw-gateway
systemctl --user enable openclaw-gateway
schtasks /create /tn "WSL Boot" /tr "wsl.exe -d Ubuntu --exec /bin/true" /sc onstart /ru SYSTEM
schtasks /create /tn "WSL Boot" /tr "wsl.exe -d Ubuntu --exec /bin/true" /sc onstart /ru SYSTEM
schtasks /create /tn "WSL Boot" /tr "wsl.exe -d Ubuntu --exec /bin/true" /sc onstart /ru SYSTEM
$Distro = "Ubuntu-24.04"
$ListenPort = 18789
$TargetPort = 18789 $WslIp = (wsl -d $Distro -- hostname -I).Trim().Split(" ")[0]
if (-not $WslIp) { throw "WSL IP not found." } netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=$ListenPort ` connectaddress=$WslIp connectport=$TargetPort New-NetFirewallRule -DisplayName "OpenClaw Gateway LAN" -Direction Inbound ` -Protocol TCP -LocalPort $ListenPort -Action Allow
$Distro = "Ubuntu-24.04"
$ListenPort = 18789
$TargetPort = 18789 $WslIp = (wsl -d $Distro -- hostname -I).Trim().Split(" ")[0]
if (-not $WslIp) { throw "WSL IP not found." } netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=$ListenPort ` connectaddress=$WslIp connectport=$TargetPort New-NetFirewallRule -DisplayName "OpenClaw Gateway LAN" -Direction Inbound ` -Protocol TCP -LocalPort $ListenPort -Action Allow
$Distro = "Ubuntu-24.04"
$ListenPort = 18789
$TargetPort = 18789 $WslIp = (wsl -d $Distro -- hostname -I).Trim().Split(" ")[0]
if (-not $WslIp) { throw "WSL IP not found." } netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=$ListenPort ` connectaddress=$WslIp connectport=$TargetPort New-NetFirewallRule -DisplayName "OpenClaw Gateway LAN" -Direction Inbound ` -Protocol TCP -LocalPort $ListenPort -Action Allow
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs
curl -fsSL https://rpm.nodesource.com/setup_24.x | sudo bash -
sudo dnf install nodejs
curl -fsSL https://rpm.nodesource.com/setup_24.x | sudo bash -
sudo dnf install nodejs
curl -fsSL https://rpm.nodesource.com/setup_24.x | sudo bash -
sudo dnf install nodejs
npm i -g openclaw@latest
npm i -g openclaw@latest
npm i -g openclaw@latest
openclaw onboard --install-daemon
openclaw onboard --install-daemon
openclaw onboard --install-daemon
systemctl --user status openclaw-gateway
systemctl --user status openclaw-gateway
systemctl --user status openclaw-gateway
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/openclaw-gateway.service <<'EOF'
[Unit]
Description=OpenClaw Gateway
After=network-online.target
Wants=network-online.target [Service]
ExecStart=/usr/local/bin/openclaw gateway --port 18789
Restart=always
RestartSec=5 [Install]
WantedBy=default.target
EOF systemctl --user daemon-reload
systemctl --user enable --now openclaw-gateway
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/openclaw-gateway.service <<'EOF'
[Unit]
Description=OpenClaw Gateway
After=network-online.target
Wants=network-online.target [Service]
ExecStart=/usr/local/bin/openclaw gateway --port 18789
Restart=always
RestartSec=5 [Install]
WantedBy=default.target
EOF systemctl --user daemon-reload
systemctl --user enable --now openclaw-gateway
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/openclaw-gateway.service <<'EOF'
[Unit]
Description=OpenClaw Gateway
After=network-online.target
Wants=network-online.target [Service]
ExecStart=/usr/local/bin/openclaw gateway --port 18789
Restart=always
RestartSec=5 [Install]
WantedBy=default.target
EOF systemctl --user daemon-reload
systemctl --user enable --now openclaw-gateway
sudo loginctl enable-linger "$(whoami)"
sudo loginctl enable-linger "$(whoami)"
sudo loginctl enable-linger "$(whoami)"
openclaw doctor
openclaw doctor
openclaw doctor
# Linux / WSL
journalctl --user -u openclaw-gateway -n 50 --no-pager
# Linux / WSL
journalctl --user -u openclaw-gateway -n 50 --no-pager
# Linux / WSL
journalctl --user -u openclaw-gateway -n 50 --no-pager
ss -tlnp | grep 18789
ss -tlnp | grep 18789
ss -tlnp | grep 18789
npm i -g openclaw@latest # forces Node runtime
openclaw doctor
npm i -g openclaw@latest # forces Node runtime
openclaw doctor
npm i -g openclaw@latest # forces Node runtime
openclaw doctor - Provision a $4–6/month Ubuntu droplet or instance
- SSH in and install Node 24
- Run npm i -g openclaw@latest
- Run openclaw onboard --install-daemon
- From your local machine: ssh -N -L 18789:127.0.0.1:18789 user@your-vps-ip
- Open http://127.0.0.1:18789/ in your browser and paste your token - macOS: Full support — companion app, menu bar, voice control, Canvas, all channel plugins
- Linux (native): Full gateway support — all channel plugins, systemd service, headless operation. No companion app yet.
- Windows via WSL2: Same as Linux — full gateway, all plugins, systemd service. No native companion app.
- Windows native (no WSL): CLI basics only. Gateway and channel plugins have limitations. WSL2 is the recommended path. - Set up your workspace architecture — the file structure that makes your agent persistent and intelligent
- Connect to Slack or another channel so you can actually talk to your agent
- Add cron jobs to automate your first daily tasks
- Pair physical nodes if you want your agent to reach other machines on your network