On-Prem Agent
Install the NeuroStrike agent to assess internal, air-gapped, and industrial networks.
The NeuroStrike on-prem agent lets you assess hosts and equipment that are not reachable from the internet. Where the AI reasoning happens depends on how you deploy it:
- Relay-connected — the agent is a thin command runner. The AI reasoning happens in the NeuroStrike platform (self-hosted in Norway/EEA); the agent runs the commands it is given, within the scope you set, and sends the results back.
- Air-gapped — reasoning runs on a model you host inside your own network (for example via Ollama or a vLLM / OpenAI-compatible endpoint), so nothing needs to leave the site.
In both modes the agent keeps a local store on the host — the tamper-evident audit chain and the
findings of its assessments — which you control and can destroy with purge. It ships no model
weights.
Every command and flag is in the CLI reference, and every setting — on Linux and Windows alike — is in the Configuration reference.
Choose your path
| Path | Data leaves your network? | Setup |
|---|---|---|
| Sovereign / air-gapped | No. Nothing, ever. | Offline licence, activated once |
| Relay-connected | Findings go to your NeuroStrike tenant | Agent token from the dashboard |
Air-gapped activation is offline — the host never needs internet. The agent prints a machine fingerprint on first run; you send that to your NeuroStrike contact and receive a licence file to place on the host. The fingerprint goes out and the licence comes in by whatever channel your environment allows (for example a USB drive). After that, everything the agent produces stays on the host and no connection to NeuroStrike is ever required.
Air-gapped deployment
Air-gapped deployments run with no network egress. Instead of connecting to a relay, they use a licence bound to the host — so they need a one-time offline activation.
Install the agent
sudo install -m 0755 neurostrike-agent /usr/local/bin/
sudo mkdir -p /var/lib/neurostrikeThen print this host's machine fingerprint — you'll need it for the licence:
neurostrike-agent fingerprintActivate the licence (offline)
Send the fingerprint to your NeuroStrike contact and place the licence file they return on the host. No live or outbound connection is needed — carry the file in by any channel your environment allows.
sudo install -m 600 license.jwt /var/lib/neurostrike/license.jwtDefine the engagement (scope and rules)
Create a signed engagement file that fixes what the agent may touch — the scope, the tool ceiling,
the data-retention term, and optionally an EEA-only constraint. The agent refuses to assess a target
without one. Run neurostrike-agent doctor at any time to check readiness.
neurostrike-agent init \
--engagement "ACME Q1 assessment" \
--allow 10.20.1.0/24 \
--ceiling low_impact_active \
--retention-days 30 \
--eea-onlyAssess, then report
Assess a target in scope — or add --require-roe=false to assess only the local host
(assumed-breach). Then render the report.
neurostrike-agent assess --roe .neurostrike/engagement.yaml --target 10.20.1.10
neurostrike-agent report --out assessment.htmlAt the end of the engagement, destroy the data with neurostrike-agent purge --confirm —
after exporting any Strike you want in the NeuroStrike console (see below).
Local reasoning model (optional)
The AI-driven assessment runs against a local reasoning model — nothing leaves the site. Without one, the agent runs the fixed deterministic baseline checks and the report says so.
Windows installer. Tick Local AI model (Ollama) on the setup wizard's Select tools
page. After the install commits, the agent downloads and silently installs Ollama, pulls the
default model, and points itself at it — a multi-GB background download, so it keeps running
after the wizard closes. Track it with neurostrike-agent llm status. If the host is
air-gapped or the download fails, the agent stays in baseline-checks mode and prints how to
finish by hand; nothing about the install is left broken.
Any host (or to enable it later). Run the one-shot setup, which does the same thing:
# Installs Ollama (Windows), pulls the default model, and configures the agent:
neurostrike-agent llm install # add --model <tag> to choose another model
# Verify it is reachable:
neurostrike-agent llm statusTo wire an existing model yourself instead, point the agent at it in the console Settings
page, or in agent.conf (Windows: C:\ProgramData\NeuroStrike\secrets\agent.conf; Linux:
beside the state DB):
OLLAMA_URL=http://127.0.0.1:11434
LOCAL_LLM_MODEL=qwen2.5:7bRelay-connected agents use the cloud models over the relay and need none of this.
Air-gapped CVE updates
The agent matches installed software against a local vulnerability database. On an air-gapped host you keep it current by carrying a signed bundle in — no connection needed.
- On any internet-connected PC, sign in to the NeuroStrike console and open Agents → Offline CVE updates. Download the CVE database — the complete database, with the affected version ranges for each product — and for Linux hosts the distribution advisories for the release the agent host runs (these let the agent recognise back-ported fixes, so patched packages are not reported as vulnerable).
- Copy the files to the agent host and place them in the agent's drop folder,
intel-inboxinside the agent's state directory.neurostrike-agent intel statusprints the exact path (typicallyC:\ProgramData\NeuroStrike\intel-inboxon Windows and/var/lib/neurostrike/intel-inboxon Linux). - The agent loads them within a few minutes, and before every Strike. To load them immediately:
neurostrike-agent intel inbox
neurostrike-agent intel statusEvery file ends up in intel-inbox/processed/ or intel-inbox/rejected/; a rejected file has a
.reason.txt beside it saying why. The agent verifies NeuroStrike's signature with a key built into
the agent itself, and refuses a bundle that was altered, one that is older than the data already
loaded, or an unsigned file. A bundle tells the agent nothing about your estate, and nothing
travels back.
A bundle can be loaded for 30 days after it was downloaded; after that the agent refuses it and asks for a fresh one. That bounds how long an old file can be presented as current. Plan to carry a new bundle in at least monthly — weekly is better, since new CVEs are published every day. The console will not issue a bundle from vulnerability data that has stopped updating, so a file you download is never more than a week behind.
Importing an air-gapped Strike
To see an air-gapped Strike in the NeuroStrike console — next to your other Strikes, with the same finding workflow and reports — export it on the agent host and upload the file.
neurostrike-agent strike list
neurostrike-agent strike export latest --out strike.json
neurostrike-agent strike verify strike.jsonThe agent console has the same export as Export for NeuroStrike console on each host's page.
The file is plain JSON, so your security team can review exactly what leaves the estate before it does. Carry it out under your usual process, then in the console open Strikes → Import on-prem Strike and upload it. The Strike is matched to an existing target by host name, or you can pick the target.
- Integrity. The export carries a SHA-256 of the findings; a damaged or edited file is refused.
This proves the file arrived intact, not who wrote it. That proof is the agent's tamper-evident
audit chain: the imported Strike records its head hash, and
neurostrike-agent audit verify --expect-head <hash>on the agent host confirms the findings against the record made when they were produced. Each export is itself recorded in that chain. - Each Strike imports once. Uploading the same file again opens the existing Strike.
- No quota. Imported Strikes ran — and were metered by your licence — on your own host, so they do not count toward your monthly Strike quota.
Relay-connected deployment
Create the agent in the dashboard
In the dashboard, open Agents → New agent and create an agent with the CIDRs it may scan (enforced server-side). A token is shown once — copy it immediately and deliver it over a secure channel, never email or chat.
The agent image is in NeuroStrike's private registry. On the agent's page, choose Generate registry credential, then log in on the host with the credential it shows:
docker login registry.neurostrike.comDeploy with Docker Compose
services:
neurostrike-agent:
image: registry.neurostrike.com/agent:latest
environment:
- AGENT_TOKEN=${AGENT_TOKEN}
- RELAY_URL=wss://agents.neurostrike.com
cap_add: [NET_RAW]
cap_drop: [ALL]
read_only: true
network_mode: host
restart: unless-stoppednetwork_mode: host is required — bridge networking adds NAT that breaks raw-socket scans. Docker
host networking is a Linux feature; on Docker Desktop for Windows/Mac the Linux image needs a Linux
VM or WSL2. To deploy on a Windows host, use the native Windows Server path below.
Verify the connection
The agent should show ONLINE in the dashboard. A successful startup log ends with
Connected to relay.
Known-vulnerable software, before the AI starts
Every Strike that runs through an agent starts with a deterministic step. Before any AI model is involved, the agent:
- lists the software installed on its own host,
- sweeps the Strike's targets for the versions their services announce, and
- logs in to the hosts you have given it an account for and lists their installed software.
It matches all of it against its local CVE database, using affected-version ranges and, on Linux, your distribution's own security advisories, so already-patched packages are not reported. Confident matches are filed as findings straight away; uncertain ones are handed to the AI to verify. The Strike page shows what this step found and which hosts it could not reach.
Authenticated inventory
Step 3 needs a login. Accounts are added on the agent host and stored there, encrypted. NeuroStrike never receives the password or key — the dashboard only shows each login's label, method, account name and the hosts it covers.
Create a dedicated, read-only account for this:
- Linux: a normal user with no sudo rights. Package lists are readable without privileges.
- Windows: a member of the local Remote Management Users group (WinRM).
Then, on the agent host:
# Docker
docker compose exec -it neurostrike-agent agent creds add --label linux-servers --method ssh --account svc-neurostrike --scope 10.0.0.0/24
docker compose exec neurostrike-agent agent creds test --label linux-servers --target <host>
# Windows
neurostrike-agent.exe creds add --label windows-servers --method winrm --account svc-neurostrike --scope 10.0.1.0/24The agent prompts for the password; for an SSH key, pass --key-file. A login is only used for the hosts in its scope,
only for read-only software inventory, and never for commands chosen by the AI. Each use is recorded
in the agent's audit log. SSH host keys are pinned on first use; a changed key stops the login until
you confirm it. See the deployment guide for every option.
Windows Server
You can assess a Windows Server without placing a standalone binary on it — choose the model that fits your security policy.
Option 1 — Assess over the network (no install)
Run the agent on a Linux host (a small VM, a separate box, or a container) and point it at the Windows target. It performs network and service-level assessment — including SMB — over the wire, so nothing is installed on the Windows server and no change-control on that host is required. (This does not collect on-host state such as local services or scheduled tasks — for that, see Option 3.)
Option 2 — Run as a signed container
Run the agent as a container rather than a loose executable. The agent image is cryptographically
signed with Sigstore cosign and can be scanned by your registry before it runs — which many teams
are more comfortable with than a standalone .exe. The published image is Linux, so run it on a
Linux host (or a Linux VM beside the Windows server) and assess the server over the network, as in
Option 1.
Option 3 — Native executable (on-host assessment)
For a full assumed-breach assessment of the Windows host itself — services and scheduled tasks, local administrator groups, listening sockets, and Windows-specific weaknesses such as unquoted service paths — install the agent on the host. Each release has two signed installers:
| File | Use it for |
|---|---|
NeuroStrikeAgentSetup.exe | Installing by hand: a guided setup wizard |
NeuroStrikeAgent.msi | Deploying with Group Policy, Intune or SCCM, or a silent install |
Both install the same agent as a Windows service. Windows 10 / Server 2016 or later is recommended.
Download them from the NeuroStrike dashboard: open Agents and use the Windows agent installer card. Downloading needs an organisation owner or admin on a plan that includes on-prem agents; the card also shows each file's SHA-256 checksum. The installer is the same for every customer and holds no credentials — an installed agent joins your organisation only when an admin approves it (step 3).
Verify the download
Check the checksum published with the release, and the signature:
(Get-FileHash .\NeuroStrikeAgent.msi -Algorithm SHA256).Hash # compare with the checksum on the Agents page
Get-AuthenticodeSignature .\NeuroStrikeAgent.msi | Format-List Status, SignerCertificateStatus must be Valid and the signer must be NeuroStrike AS.
Install
Run NeuroStrikeAgentSetup.exe and follow the wizard, or install silently as Administrator:
msiexec /i NeuroStrikeAgent.msi /qn PROFILE=standard
msiexec /i NeuroStrikeAgent.msi /qn PROFILE=ot REQUIREAPPROVAL=true
msiexec /i NeuroStrikeAgent.msi /qn PROFILE=airgapped EXCLUDE="10.20.9.0/24;backup.corp.local"PROFILE is standard (relay-connected), airgapped or ot (industrial networks: the most
cautious settings). REQUIREAPPROVAL=true makes the agent wait for a person to approve each active
command. EXCLUDE lists hosts and networks the agent must never touch. The setup wizard accepts the
same settings on its command line, for example NeuroStrikeAgentSetup.exe /quiet PROFILE=ot. A silent
install accepts the licence agreement on your organisation's behalf, as the wizard's licence page
does.
Activate
The setup wizard does this as its last step. For a relay-connected agent it shows a short code and opens the dashboard's activation page in your browser: sign in as an owner or admin, check the host name, and approve. The wizard confirms when the agent is connected, and it shows as Online in the dashboard within a minute. For an air-gapped or OT agent the wizard instead shows the machine fingerprint to send to NeuroStrike, and a button to install the licence file you receive.
To activate later, or after a silent install, use Start → Activate NeuroStrike Agent, or run setup again and choose Activate. From a command prompt:
neurostrike-agent.exe activateOpen NeuroStrike Console from the Start menu to watch what the agent is doing.
To uninstall, use Settings → Apps, run setup again and choose Uninstall, or
msiexec /x NeuroStrikeAgent.msi /qn. Your Strike records and audit log stay in
C:\ProgramData\NeuroStrike unless you tick also delete Strike records in setup or add
REMOVEDATA=1. Use one installer per host: upgrade with the same file type you installed with.
For IT and security teams
What you need to approve, allowlist and monitor the agent on Windows.
Publisher and allowlisting
Every executable and installer is signed by NeuroStrike AS through Microsoft's Artifact Signing service, and every signature is timestamped. The signing certificate is renewed daily, so allowlist by publisher, not by certificate thumbprint — a thumbprint rule breaks with the next release.
- AppLocker: a publisher rule for publisher
O=NeuroStrike AS, any product and file name. - App Control for Business (WDAC): a publisher-level signer rule for NeuroStrike AS.
nuclei.exe(the optional template scanner) is open-source software from ProjectDiscovery, re-signed by NeuroStrike AS in the installer, so the same publisher rule covers it.- Hash-based allowlists: use the SHA-256 checksums published with each release.
Each release also includes a CycloneDX SBOM listing every component compiled into the agent.
What the installer changes
| Item | Value |
|---|---|
| Program files | C:\Program Files\NeuroStrike\bin\ (neurostrike-agent.exe, and nuclei.exe if selected) |
| Data | C:\ProgramData\NeuroStrike\ (Strike records, audit log, CVE database) |
| Service | NeuroStrikeAgent ("NeuroStrike Agent"), automatic start |
| Service account | NT SERVICE\NeuroStrikeAgent, a virtual account with no password, not LocalSystem |
| Settings | HKLM\SOFTWARE\NeuroStrike\Agent and machine environment variables |
| Firewall | One outbound rule, "NeuroStrike Agent (outbound)". No inbound ports are opened. |
| Start menu | "NeuroStrike Console" (a local, password-protected console on 127.0.0.1 only) and "Activate NeuroStrike Agent" |
| Agent token | C:\ProgramData\NeuroStrike\secrets\agent.token. Only SYSTEM and Administrators can write that folder, so activating needs administrator rights and no other local account can read or replace the token |
Network access
| Profile | Outbound connections |
|---|---|
standard | HTTPS (TCP 443), all started by the agent; nothing connects in: • neurostrike.com for activation• agents.neurostrike.com for the agent's connection (WebSocket over TLS)• api.github.com, github.com and codeload.github.com, once a day, to download the public nuclei vulnerability templates |
airgapped, ot | None. CVE updates, nuclei templates and licences are carried in as files. |
The bundled scanners never check for or install updates of themselves. A new version arrives only as a new signed installer.
nmap is not bundled. It depends on the Npcap driver, whose licence forbids silent
redistribution, so the installer ships only nuclei.exe (web checks). Host and port
discovery with nmap needs it installed separately: install Npcap
and Nmap (winget install Insecure.Nmap) and either leave
nmap.exe on PATH or drop it in C:\Program Files\NeuroStrike\bin\tools\. nuclei-based
web scanning works without it.
The agent also connects to the hosts you put in scope, and only those. Scope and exclusions are enforced both by the agent and, for relay-connected agents, by NeuroStrike's servers.
Before you deploy
- Tell your SOC/EDR team in advance: the agent does what an attacker would do against the hosts in scope (port scans, vulnerability checks), so expect alerts from those hosts while a Strike runs.
- Install on a dedicated host or VM where possible, not on a production server you are testing.
What data leaves your network
| Data | Leaves? | Detail |
|---|---|---|
| Findings & tool output | Yes | Open ports, service versions, vulnerabilities |
| Raw packet captures | No | Only structured results, never raw traffic |
| Credentials / secrets | No | Redacted from tool output before any egress (credential guard, on by default) |
| Inventory logins | No | Stored encrypted on the agent host; only label, account name and scope are reported |
| Customer files | No | The agent has no filesystem access to targets |