Skip to main content

Windows Installation

Lattice works on Windows 10 and later (both x86-64 and ARM64).

Quick Install

powershell
irm https://uselovelace.com/lattice/install.ps1 | iex

This PowerShell script:

  • Downloads the appropriate binary (x86-64 or ARM64)
  • Installs to %ProgramFiles%\Lattice\
  • Sets up Windows Service for auto-start
  • Creates %AppData%\.lovelace\lattice\ configuration directory
  • Adds Lattice to your system PATH

Step-by-Step Installation

Step 1: Download and Install

Open PowerShell as Administrator and run:

powershell
# Run the installation script
irm https://uselovelace.com/lattice/install.ps1 | iex

# Verify installation
lattice-ctl --version

Step 2: Start the Daemon

powershell
# Start the daemon
lattice-ctl daemon start

# Verify it's running
lattice-ctl ping

Expected output:

✓ Lattice daemon is running (PID: 12345)
  Uptime: 2 seconds
  Socket: \\.\pipe\lattice\daemon

Step 3: Enable Auto-Start

The installation script automatically sets up Windows Service for auto-start. To verify:

powershell
# Check service is enabled
Get-Service -Name "lattice" | Select-Object Status, StartType

# Should show:
# Status    : Running
# StartType : Automatic

Manual Installation

Download Binary

If the installation script fails, download the binary manually:

powershell
# Create installation directory
$InstallPath = "$env:ProgramFiles\Lattice"
New-Item -ItemType Directory -Path $InstallPath -Force

# Download the appropriate binary for your architecture
# For x86-64 (most common):
$DownloadUrl = "https://github.com/lovelace-ai/lattice/releases/latest/download/lattice-windows-x86_64.exe"

# For ARM64 (Surface Pro X, etc):
$DownloadUrl = "https://github.com/lovelace-ai/lattice/releases/latest/download/lattice-windows-arm64.exe"

# Download
Invoke-WebRequest -Uri $DownloadUrl -OutFile "$InstallPath\lattice-ctl.exe"

# Create configuration directory
New-Item -ItemType Directory -Path "$env:APPDATA\.lovelace\lattice" -Force

Register Windows Service

Create a Windows Service to run Lattice as a background service:

powershell
# Create service
sc.exe create lattice `
  binPath= "$InstallPath\lattice-ctl.exe daemon" `
  start= auto `
  DisplayName= "Lattice Daemon" `
  obj= "LocalSystem"

# Start the service
Start-Service -Name "lattice"

# Verify
Get-Service -Name "lattice"

Add to PATH (Optional)

To use lattice-ctl from any directory:

powershell
# Add to user PATH
[Environment]::SetEnvironmentVariable(
  "Path",
  "$env:Path;$env:ProgramFiles\Lattice",
  [System.EnvironmentVariableTarget]::User
)

# Refresh PATH in current session
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")

Windows-Specific Issues

Windows Defender SmartScreen Warning

You might see "Windows Defender SmartScreen prevented an unrecognized app from starting":

powershell
# Method 1: Click "More info" → "Run anyway"
# Method 2: Unblock the downloaded file
Unblock-File -Path "$env:ProgramFiles\Lattice\lattice-ctl.exe"

"Permission Denied" Errors

If you get permission errors, ensure you're running PowerShell as Administrator:

powershell
# Run PowerShell as Administrator
Start-Process powershell -Verb RunAs

# Then retry installation
irm https://uselovelace.com/lattice/install.ps1 | iex

AppLocker Blocking Lattice

If your organization uses AppLocker policies, you may need to whitelist the lattice executable:

powershell
# Check AppLocker status
Get-AppLockerPolicy -Effective | Select-Object -ExpandProperty RuleCollections

# Contact your IT department to whitelist:
# Path: %ProgramFiles%\Lattice\lattice-ctl.exe

Windows Firewall Issues

If the daemon can't start, Windows Firewall might be blocking the named pipe:

powershell
# Allow Lattice through Windows Firewall
New-NetFirewallRule -DisplayName "Lattice Daemon" `
  -Direction Inbound `
  -Program "$env:ProgramFiles\Lattice\lattice-ctl.exe" `
  -Action Allow

# Restart the service
Restart-Service -Name "lattice"

Service Management

Check Service Status

powershell
# Using lattice-ctl
lattice-ctl status

# Using Windows Services
Get-Service -Name "lattice" | Format-List

# Using sc.exe
sc.exe query lattice

Start/Stop Service

powershell
# Start service
Start-Service -Name "lattice"
# or: lattice-ctl start

# Stop service
Stop-Service -Name "lattice"
# or: lattice-ctl stop

# Restart service
Restart-Service -Name "lattice"
# or: lattice-ctl restart

# View logs
Get-EventLog -LogName System -Source "lattice" | Select-Object -Last 10

View Service Logs

powershell
# View recent Lattice daemon logs
Get-EventLog -LogName System -Source "lattice" -Newest 20

# Or check application event viewer
eventvwr.msc  # Opens Windows Event Viewer
# Navigate to: Windows Logs → System → Filter by "lattice"

Disable Auto-Start

powershell
# Disable auto-start but keep installed
Set-Service -Name "lattice" -StartupType Disabled

# To re-enable auto-start later
Set-Service -Name "lattice" -StartupType Automatic
Start-Service -Name "lattice"

Uninstalling

To completely remove Lattice from Windows:

powershell
# Stop the service
Stop-Service -Name "lattice" -Force

# Remove Windows Service
sc.exe delete lattice

# Remove installation directory
Remove-Item -Path "$env:ProgramFiles\Lattice" -Recurse -Force

# Remove configuration directory
Remove-Item -Path "$env:APPDATA\.lovelace" -Recurse -Force

# Remove from PATH (if you added it manually)
[Environment]::SetEnvironmentVariable(
  "Path",
  $env:Path.Replace("$env:ProgramFiles\Lattice;", ""),
  [System.EnvironmentVariableTarget]::User
)

Updating

To update to the latest version:

powershell
# Re-run the installation script
irm https://uselovelace.com/lattice/install.ps1 | iex

# Or manually:
# Stop service
Stop-Service -Name "lattice"

# Download new binary (same as manual installation)
$DownloadUrl = "https://github.com/lovelace-ai/lattice/releases/latest/download/lattice-windows-x86_64.exe"
Invoke-WebRequest -Uri $DownloadUrl -OutFile "$env:ProgramFiles\Lattice\lattice-ctl.exe"

# Restart service
Start-Service -Name "lattice"

Troubleshooting

"Connection refused"

powershell
# Check if daemon is running
lattice-ctl status
Get-Service -Name "lattice"

# If not running, start it
lattice-ctl start
# or: Start-Service -Name "lattice"

# Check logs for errors
Get-EventLog -LogName System -Source "lattice" -Newest 5

"Command not found: lattice-ctl"

powershell
# Verify installation path
Test-Path "$env:ProgramFiles\Lattice\lattice-ctl.exe"

# Verify PATH includes Lattice directory
$env:Path -split ";" | Select-String "Lattice"

# If not in PATH, add it
[Environment]::SetEnvironmentVariable(
  "Path",
  "$env:Path;$env:ProgramFiles\Lattice",
  [System.EnvironmentVariableTarget]::User
)

# Restart PowerShell for changes to take effect

Named Pipe Permission Errors

powershell
# Lattice uses Windows named pipes for IPC
# If you see "Access Denied" errors:

# Ensure service is running as correct user
Get-WmiObject Win32_Service -Filter "Name='lattice'" | Select-Object Name, StartName

# Reset permissions on named pipe location
icacls "\\.\pipe\lattice" /grant Everyone:F

Service Won't Start

powershell
# Check service error logs
Get-EventLog -LogName System | Where-Object {$_.Source -like "*lattice*"} | Select-Object -First 5

# Try manual daemon execution to see detailed errors
& "$env:ProgramFiles\Lattice\lattice-ctl.exe" daemon --verbose

# If permission issues, run as Administrator
Start-Process powershell -Verb RunAs -ArgumentList "Start-Service -Name lattice"

Architecture Mismatch Error

powershell
# Check your system architecture
[System.Environment]::Is64BitOperatingSystem  # Should be True for x86-64

# Check if running ARM64 Windows (Surface Pro X, etc)
(Get-WmiObject -Class Win32_Processor).Architecture
# 9 = x86-64, 5 = ARM64

# If ARM64, ensure you downloaded the ARM64 binary:
# lattice-windows-arm64.exe (not lattice-windows-x86_64.exe)

PowerShell Execution Policy Error

If you see "cannot be loaded because running scripts is disabled":

powershell
# Temporarily allow script execution for this session
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

# Then re-run installation
irm https://uselovelace.com/lattice/install.ps1 | iex

# Permanently allow (not recommended for security)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Next Steps