Skip to main content

Windows (WSL2)

Fased on Windows is recommended via WSL2 (Ubuntu recommended). The CLI + Gateway run inside Linux, which keeps the runtime consistent and makes tooling far more compatible (Node/Bun/pnpm, Linux binaries, skills). Native Windows runtime support is not the public default yet because daemon/process management, shell assumptions, and path handling differ. WSL2 gives you the full Linux experience — one command to install: wsl --install. Native Windows companion apps are planned.

Install (WSL2)

Gateway

Gateway service install (CLI)

Inside WSL2:
fased onboard --install-daemon
Or:
fased gateway install
Or:
fased configure
Select Gateway service when prompted. Repair/migrate:
fased doctor

Advanced: expose WSL services over LAN (portproxy)

WSL has its own virtual network. If another machine needs to reach a service running inside WSL (SSH, a local TTS server, or the Gateway), expose it deliberately through Windows port forwarding. The WSL IP changes after restarts, so you may need to refresh the forwarding rule. Example (PowerShell as Administrator):
$Distro = "Ubuntu-24.04"
$ListenPort = 2222
$TargetPort = 22

$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
Allow the port through Windows Firewall (one-time):
New-NetFirewallRule -DisplayName "WSL SSH $ListenPort" -Direction Inbound `
  -Protocol TCP -LocalPort $ListenPort -Action Allow
Refresh the portproxy after WSL restarts:
netsh interface portproxy delete v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 | Out-Null
netsh interface portproxy add v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 `
  connectaddress=$WslIp connectport=$TargetPort | Out-Null
Notes:
  • SSH from another machine targets the Windows host IP (example: ssh user@windows-host -p 2222).
  • Remote nodes must point at a reachable Gateway URL (not 127.0.0.1); use fased status --all to confirm.
  • Use listenaddress=0.0.0.0 only for intended LAN access; 127.0.0.1 keeps it local only. If the Gateway is reachable from other devices, require token/password auth.
  • If you want this automatic, register a Scheduled Task to run the refresh step at login.

Step-by-step WSL2 install

1) Install WSL2 + Ubuntu

Open PowerShell (Admin):
wsl --install
# Or pick a distro explicitly:
wsl --list --online
wsl --install -d Ubuntu-24.04
Reboot if Windows asks.

2) Enable systemd (required for gateway install)

In your WSL terminal:
sudo tee /etc/wsl.conf >/dev/null <<'EOF'
[boot]
systemd=true
EOF
Then from PowerShell:
wsl --shutdown
Re-open Ubuntu, then verify:
systemctl --user status

3) Install Fased (inside WSL)

Use the same repo-backed install flow you would use on Linux:
git clone https://github.com/fased-ai/fased.git fased
cd fased
./install.sh
./install.sh runs onboarding by default. Use ./install.sh --no-onboard only when you want to install the CLI/runtime first and run fased onboard --install-daemon later. Full guide: Getting Started

Windows companion app

We do not have a Windows companion app yet. Contributions are welcome if you want to help build one.