Updating the Relay

When Calibrant publishes a new relay version, you need to download the latest package and restart the Windows Service. The update takes about 2 minutes.

When to update: Calibrant will notify you in the app when a relay update is available. You can also check GitHub Releases for the latest version and what changed.

Option 1 — Azure Run Command (recommended, no RDP needed)

Run this from your local terminal. It executes PowerShell on the VM remotely and streams the output back to you — no RDP or SSH required:

az vm run-command invoke \
  --name calibrant-relay-vm \
  --resource-group calibrant-relay-rg \
  --command-id RunPowerShellScript \
  --scripts "
    Stop-Service CalirantRelay
    Invoke-WebRequest -Uri 'https://github.com/fusedad/calibrant/releases/download/relay-latest/calibrant-relay.zip' \
      -OutFile C:\calibrant-relay-update.zip -UseBasicParsing
    Remove-Item C:\calibrant-relay\dist -Recurse -Force -ErrorAction SilentlyContinue
    Remove-Item C:\calibrant-relay\node_modules -Recurse -Force -ErrorAction SilentlyContinue
    Expand-Archive -Path C:\calibrant-relay-update.zip -DestinationPath C:\calibrant-relay -Force
    Remove-Item C:\calibrant-relay-update.zip
    Start-Service CalirantRelay
    (Get-Service CalirantRelay).Status
  "

When it completes you'll see Running in the output. The relay will reconnect to Calibrant within 30 seconds and show green in Connections → Calibrant Relay.

Option 2 — RDP / PowerShell remoting

If you prefer to connect directly, open a PowerShell session on the VM and run:

Stop-Service CalirantRelay
Invoke-WebRequest -Uri 'https://github.com/fusedad/calibrant/releases/download/relay-latest/calibrant-relay.zip' `
  -OutFile C:calibrant-relay-update.zip -UseBasicParsing
Remove-Item C:calibrant-relaydist -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item C:calibrant-relay
ode_modules -Recurse -Force -ErrorAction SilentlyContinue
Expand-Archive -Path C:calibrant-relay-update.zip -DestinationPath C:calibrant-relay -Force
Remove-Item C:calibrant-relay-update.zip
Start-Service CalirantRelay
Get-Service CalirantRelay

Viewing relay logs

# Stream relay logs in real time (Ctrl+C to stop)
az vm run-command invoke \
  --name calibrant-relay-vm \
  --resource-group calibrant-relay-rg \
  --command-id RunPowerShellScript \
  --scripts "Get-Content C:\calibrant-relay\relay.log -Tail 50"

# View error log if the service won't start
az vm run-command invoke \
  --name calibrant-relay-vm \
  --resource-group calibrant-relay-rg \
  --command-id RunPowerShellScript \
  --scripts "Get-Content C:\calibrant-relay\relay-error.log -Tail 50"

Rotating the API key

Go to Connections → Calibrant Relay, click the key icon on your deployment, and generate a new key. Then update it on the VM:

az vm run-command invoke \
  --name calibrant-relay-vm \
  --resource-group calibrant-relay-rg \
  --command-id RunPowerShellScript \
  --scripts "
    [System.Environment]::SetEnvironmentVariable('CALIBRANT_API_KEY', 'cal_YourNewKeyHere', 'Machine')
    nssm set CalirantRelay AppEnvironmentExtra `
      'CALIBRANT_API_URL=https://www.calibrant.ai' `
      'CALIBRANT_API_KEY=cal_YourNewKeyHere' `
      'POLL_INTERVAL_MS=5000' `
      ('AZURE_CLIENT_ID=' + [System.Environment]::GetEnvironmentVariable('AZURE_CLIENT_ID', 'Machine'))
    Restart-Service CalirantRelay
    (Get-Service CalirantRelay).Status
  "

Troubleshooting

  • Service won't start — check the error log:
    az vm run-command invoke --name calibrant-relay-vm --resource-group calibrant-relay-rg --command-id RunPowerShellScript --scripts "Get-Content C:\calibrant-relay\relay-error.log -Tail 30"
  • Relay shows Offline after update — wait 30 seconds and refresh. If still offline, check that the service is running: Get-Service CalirantRelay. If stopped, check the error log.
  • Node.js error on startup — the update may have extracted files over a running process. Stop the service first, then update, then start again (the command above already does this in order).