Skip to content
CortexDocs
Defender · Local networking

Fix Cortex Defender port conflicts

For developers running local services on the same device as Cortex: the local ports Cortex requires and how to resolve a conflict.

  • 9000Local relay and Defender status
  • 9001Browser proxy
  • 19090Browser routing configuration
Resolve a port conflict deliberately
Identify the conflictRequired port is occupied
Another processUsing the port

Find the owner before changing anything.

Follow the documented fixResolve, then verify
Cortex connectionVerify the result

Confirm the app can use its configured port.

Identify the process using the required port, choose the documented resolution, then verify the connection. Cortex does not automatically terminate unrelated processes.

For developers running local services on the same device as Cortex Defender.

Cortex's local ports

Cortex uses these local ports:

PortCortex use
9000Local relay and status API
9001Browser proxy
19090Browser routing configuration file

A development server or another Cortex process on one of these ports can prevent Cortex from starting.

Fix a port conflict

Open Home → View health and read the reported issue. If a local port is already in use, identify its owner with your operating system's tools.

On macOS:

bash
lsof -nP -iTCP:9000 -iTCP:9001 -iTCP:19090 -sTCP:LISTEN

On Windows, use PowerShell:

plaintext
Get-NetTCPConnection -State Listen |
  Where-Object { $_.LocalPort -in 9000, 9001, 19090 } |
  Select-Object LocalAddress, LocalPort, OwningProcess
  1. If the process is a development service you own, stop it or configure it to use another port.
  2. If it is another Cortex instance, quit that instance through its normal app controls.
  3. Return to Defender, follow the displayed recovery action, and select Run health check.

Do not stop a process you do not recognize. Copy diagnostics from Health and include the port and process details when contacting the Chaos Labs team.

After Cortex Defender recovers, use Verify capture and sync to confirm that a new prompt is captured and synced.

Was this helpful?