> For the complete documentation index, see [llms.txt](https://help.aikido.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.aikido.dev/virtual-machine-scanning/local-vm-scanning/setting-up-the-local-vm-scanner-windows.md).

# Setting Up the Local VM Scanner on Windows

Aikido VM Scanner is a single-package that installs on your system, automatically scanning and identifying dependencies to provide a detailed view into your environment.

### Prerequisites

* Minimum system requirements: at least 1GB RAM.
* Preferred system requirements: at least 2GB RAM and 4 CPUs.
* Ensure you have admin privileges on your system
* Make sure to use the appropriate commands for your system or cloud provider
* [On Windows, ensure that PowerShell is installed and enabled](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.5)

### Installation and Upgrade

Start PowerShell in admin mode, replace `AIKIDO_TOKEN` with [valid token from Local VM scanning page in Aikido](https://app.aikido.dev/settings/integrations/vm-scan-agent). You can also specify the following optional parameters:

* `VM_TYPE` as one of: `production`, `staging` or `development`.
* `OUTPUT` as one of: `stdout`, `stderr` or `none`.
* `INITIAL_SCAN` as one of: `1` or `0`.

```
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -Uri "https://aikido-vm-agent.s3.eu-west-1.amazonaws.com/v1.4.10/AikidoVmScanner.msi" -OutFile "AikidoVmScanner.msi"
msiexec /i AikidoVmScanner.msi /qn /norestart AIKIDO_TOKEN=REPLACE_ME VM_TYPE=production OUTPUT=stdout INITIAL_SCAN=1
```

<table><thead><tr><th width="99.64453125">Hash</th><th>AikidoVmScanner.msi</th></tr></thead><tbody><tr><td>MD5</td><td>4e570182487aefd8b60a3fe5afd1838a</td></tr><tr><td>SHA256</td><td>e69e84da083fd5f69f14aa64ca7d083b50cfe3fa46c3235fc9d0d4e3320ced14</td></tr></tbody></table>

If you have an automated process for installation and you always want to be on the latest version, you can use the following link:

* <https://aikido-vm-agent.s3.eu-west-1.amazonaws.com/latest/AikidoVmScanner.msi>

The VM Scanner Agent runs once a day, at a random time between **4:00 AM - 8:00 AM** (machine time).

After install, **a first scan will start automatically**. If you want to run it on demand, you can manually execute it with the following command in a PowerShell with admin privileges.

```powershell
& 'C:\Program Files\AikidoVmScanner\AikidoVmScanner.exe'
```

### Connecting through a proxy

If your machine reaches the internet through a corporate proxy, the VM Scanner picks it up from the standard `HTTPS_PROXY`, `HTTP_PROXY`, and `NO_PROXY` environment variables. When none of these are set, it falls back to the Windows system proxy settings, including WinHTTP defaults and PAC scripts. There's no proxy option in `config.json` and nothing to enable.

The scan itself runs entirely locally. The only outbound traffic is HTTPS (port 443) to `bg.aikido.dev`, or the regional equivalent such as `bg.us.aikido.dev`.

{% hint style="info" %}
Proxy support is available from version 1.4.5 onwards.
{% endhint %}

#### Setting the proxy for the daily scan

The daily scan runs as a scheduled task under the SYSTEM account, so the variables have to be set at machine level. Proxy settings configured for your own user account aren't visible to SYSTEM. In an admin PowerShell:

```powershell
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://proxy.example.com:8080", "Machine")
[Environment]::SetEnvironmentVariable("NO_PROXY", "localhost,127.0.0.1", "Machine")
```

If your proxy requires authentication, include the credentials in the URL: `http://user:password@proxy.example.com:8080`.

Instead of environment variables, you can configure the machine-wide WinHTTP proxy, which the scanner also honors:

```powershell
netsh winhttp set proxy proxy-server="http=proxy.example.com:8080;https=proxy.example.com:8080" bypass-list="localhost;127.0.0.1"
```

#### Proxies that perform SSL inspection

When your proxy replaces certificates with ones signed by an internal CA, import that CA into the machine's trusted root store. In an admin PowerShell:

```powershell
Import-Certificate -FilePath "C:\path\to\corporate-ca.crt" -CertStoreLocation Cert:\LocalMachine\Root
```

#### Verifying the proxy is used

Every run records which proxy it detected in the logs at `C:\ProgramData\AikidoVmScanner\Logs`:

```
Using proxy http://proxy.example.com:8080 for https://bg.aikido.dev/api/integrations/vm_scan/uploadScanResult
```

If the proxy isn't picked up, you'll see `No proxy detected for ..., connecting directly` instead.

### Uninstall

Start PowerShell in admin mode and run:

```powershell
msiexec.exe /x (Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -like "AikidoVmScanner*" }).IdentifyingNumber /qn /norestart
```

### Logs

Logs are available here, along with the last generated SBOM: `C:\ProgramData\AikidoVmScanner\Logs`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.aikido.dev/virtual-machine-scanning/local-vm-scanning/setting-up-the-local-vm-scanner-windows.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
