# FreeApply installer for Windows (Claude Code, Cursor, VS Code, Windsurf; Claude Desktop gets the .mcpb). # Run in PowerShell: irm https://www.mybotsai.com/appserver/install.ps1 | iex # It checks for Node.js, then downloads and runs install.mjs, which verifies the signed package before installing it. # Read install.mjs first if you like: https://www.mybotsai.com/appserver/install.mjs & { $ErrorActionPreference = 'Stop' $base = 'https://www.mybotsai.com/appserver' $node = Get-Command node -ErrorAction SilentlyContinue if (-not $node) { Write-Host "FreeApply needs Node.js 22.13 or newer for Claude Code, Cursor, VS Code and Windsurf." -ForegroundColor Yellow Write-Host "Install it with: winget install OpenJS.NodeJS.LTS (or from https://nodejs.org), open a new PowerShell, and run this again." Write-Host "Using Claude Desktop only? You don't need Node: download $base/freeapply.mcpb and double-click it." return } $v = [version](& node -p "process.versions.node") if ($v -lt [version]'22.13.0') { Write-Host "FreeApply needs Node.js 22.13 or newer (you have $v). Update with: winget upgrade OpenJS.NodeJS.LTS" -ForegroundColor Yellow return } $tmp = Join-Path $env:TEMP ("freeapply-install-" + [guid]::NewGuid().ToString('N') + ".mjs") try { Invoke-WebRequest -UseBasicParsing -Uri "$base/install.mjs" -OutFile $tmp & node $tmp @($env:FREEAPPLY_ARGS -split ' ' | Where-Object { $_ }) } catch { Write-Host "FreeApply install failed: $($_.Exception.Message)" -ForegroundColor Red } finally { Remove-Item -Force -ErrorAction SilentlyContinue $tmp } }