NeuroStrike

Configuration

Every on-prem setting — scope, oversight, tools, OT safety, AI models, data, and reporting.

The agent is configured three ways, and most settings are optional with safe defaults:

  1. In the installer — the common choices (profile, tools, service, oversight, custom instructions, retention, residency, report language).
  2. In the engagement file — .neurostrike/engagement.yaml, the scope and rules of a run. Create it with neurostrike-agent init or edit by hand.
  3. As environment variables — operational toggles, set on the service or host.

You rarely need most of these. Set scope and oversight for every engagement; leave the rest at their defaults unless you have a reason to change them.

Rules of engagement

Defined in .neurostrike/engagement.yaml. These are enforced — the agent gates on them.

SettingWhat it does
engagementName of the engagement, as it appears in the agreement
scope.allowHosts / CIDRs in scope — nothing outside is touched
scope.denyHosts / CIDRs never touched, probed, or reported
limits.max_classHighest tool class allowed: read_only → low_impact_active → intrusive_active → exploit
limits.max_breadthCap on how wide a single run may spread
limits.max_egressCap on how much data may leave a target
limits.max_persistenceCap on persistence actions
limits.hoursAllowed testing windows — timezone plus windows of days / from / to
tools.denySpecific tools to block by name
supervisionattended (a human oversees) or unattended
require_targetRefuse to run without an explicit target
guidanceFree-form instructions for the AI (advisory — see below)

Oversight & human-in-the-loop

SettingWhereWhat it does
REQUIRE_APPROVALenv (AI relay)Hold every proposed command for operator approval on the console
APPROVAL_MIN_CLASSenv (AI relay)Lowest class that triggers approval — read_only … exploit, or all. Default intrusive_active; exploit / AI-generated payloads always require it
supervisionengagementRecord that a human oversees the run (attended)

Custom instructions — what the AI should, and shouldn't, do

Free-text direction for the AI: focus areas, tone, and things to avoid.

SettingWhereWhat it does
guidance:engagement fileAdvisory instructions, inline
.neurostrike/instructions.mdfile beside the engagementFree-form house rules in plain text — no YAML to learn
Custom instructionsdashboard → New Strike (Adaptive)A prompt sent with the run, injected as Operator Instructions — e.g. "don't brute-force logins; focus on the API."

guidance, instructions.md, and the dashboard custom-instructions prompt are advisory — the AI reads them as context, but they are not gated. A hard "never touch this" must also go in the exclusions below, which are enforced. Say it in instructions and enforce it in scope.

Exclusions — areas to avoid

SettingWhereWhat it does
scope.denyengagement fileHosts / CIDRs the on-prem agent never touches, probes, or reports (enforced)
ot.zones … posture: excludedengagement fileOT ranges with no traffic originated toward them at all
Out of scopedashboard → assessment / templateDomains excluded from a relay or cloud assessment

Internal, loopback, and cloud-metadata addresses are refused by a built-in SSRF guard and are never reachable — that protection is always on and isn't something you configure.

Enrollment & connection

SettingWhat it does
AGENT_TOKENAgent token for relay mode (exchanged for a short-lived JWT)
RELAY_URLRelay WebSocket URL (wss://…)
NEUROSTRIKE_TOKEN_PATHWhere a provisioned token is stored
NEUROSTRIKE_ACTIVATION_URLPlatform URL used by activate (device flow)
RELAY_PUBLIC_KEY_B64Pin the relay's public key
ALLOW_INSECURE_RELAYAllow ws:// — testing only
NEUROSTRIKE_LICENSE / NEUROSTRIKE_LICENSE_FILEAir-gapped licence, inline or as a file path

AI models

SettingWhat it does
LOCAL_LLM_URL / LOCAL_LLM_BASE_URLLocal reasoning model endpoint (vLLM / OpenAI-compatible)
LOCAL_LLM_MODELLocal model name
LOCAL_LLM_API_KEYKey for the local model, if it needs one
OLLAMA_URLOllama endpoint for a local model
ANTHROPIC_API_KEY / GOOGLE_API_KEYCloud model keys — only if an organization has opted in to cross-border models

OT / ICS safety

SettingWhereWhat it does
NEUROSTRIKE_OT_MODEenvTurn OT safety on
NEUROSTRIKE_OT_ZONEenvDefault zone posture: passive / active / excluded
NEUROSTRIKE_OT_ASSETenvDefault asset class: plc, rtu, historian, hmi, …
NEUROSTRIKE_ASSET_MAPenvPath to an IP → asset-class map
ot.default_posture, ot.zonesengagementPer-CIDR posture, asset class, and vendor validation

Data, storage & residency

SettingWhereWhat it does
NEUROSTRIKE_DB_PATHenvSQLite state path (audit chain, findings)
NEUROSTRIKE_HOST_ROOTenvMounted host filesystem to assess (for container deployments)
NEUROSTRIKE_NUCLEI_TEMPLATESenvDirectory of nuclei templates
NEUROSTRIKE_CREDENTIAL_MODEenvCredential-guard (redaction) mode; on by default, off to disable
data.residencyengagementData-residency constraint for the engagement
data.approved_endpointsengagementOutbound endpoints the run may use
data.retention_daysengagementHow long customer data is kept before certified purge

Reporting & output

SettingWhat it does
NEUROSTRIKE_REPORT_LANGReport language (e.g. en, nb)
NEUROSTRIKE_MIN_SEVERITYMinimum severity to include in results
NEUROSTRIKE_BRAND_ACCENTReport accent colour (white-label)
NEUROSTRIKE_OAST_SERVEROut-of-band interaction (OAST) collector for blind-vuln checks

A worked example

.neurostrike/engagement.yaml
engagement: "ACME Q1 assessment"
supervision: attended
scope:
  allow: [10.20.0.0/16]
  deny:  [10.20.9.0/24]
limits:
  max_class: low_impact_active
  hours:
    timezone: Europe/Oslo
    windows:
      - { days: [Sat, Sun], from: "02:00", to: "06:00" }
tools:
  deny: [sqlmap]
data:
  residency: EEA
  retention_days: 30
guidance: >
  Focus on the public web tier and the VPN gateway. Prefer verification over breadth.
Environment (set on the service or host)
setx NEUROSTRIKE_REPORT_LANG nb /M
setx REQUIRE_APPROVAL true /M
setx APPROVAL_MIN_CLASS intrusive_active /M

On this page