ScanopyScanopy

Daemon Configuration

Configuration options for Scanopy daemons.

Configuration Priority

Scanopy daemons use the following priority order (highest to lowest):

  1. Command-line arguments (highest priority)
  2. Environment variables
  3. Configuration file
  4. Default values (lowest priority)

Later sources override earlier ones. For example, an environment variable overrides the config file but is overridden by a command-line argument.

Configuration Methods

Command-line arguments:

scanopy-daemon --server-url http://192.168.1.100:60072 --api-key YOUR_KEY

Environment variables:

export SCANOPY_SERVER_URL=http://192.168.1.100:60072
export SCANOPY_DAEMON_API_KEY=YOUR_KEY
scanopy-daemon

Docker environment:

environment:
  - SCANOPY_SERVER_URL=http://192.168.1.100:60072
  - SCANOPY_DAEMON_API_KEY=YOUR_KEY

Configuration file:

The daemon automatically creates a config file at:

  • Linux: ~/.config/scanopy/daemon/config.json
  • macOS: ~/Library/Application Support/com.scanopy.daemon/config.json
  • Windows: %APPDATA%\scanopy\daemon\config.json

The config file stores runtime state (daemon ID, host ID) alongside your settings. Command-line and environment variables take priority over the file.

Parameter Reference

ParameterCLI FlagEnvironment VariableConfig File KeyDefaultDescription
Server URL--server-urlSCANOPY_SERVER_URLserver_urlhttp://127.0.0.1:60072URL where the daemon can reach the server
API Key--daemon-api-keySCANOPY_DAEMON_API_KEYdaemon_api_keyRequiredAuthentication key for daemon (generated via UI)
Network ID--network-idSCANOPY_NETWORK_IDnetwork_idNoneUUID of the network to scan
Name--nameSCANOPY_NAMEnameRequiredName for this daemon
Daemon Mode--modeSCANOPY_MODEmodePushSelect whether the daemon will Pull work from the server or have work Pushed to it. If set to Push, you will need to ensure that network you are deploying the daemon on can be reached by the server by opening/forwarding the port to the daemon, and provide the Daemon URL where the server should try to reach the daemon. If set to Pull, no port opening/forwarding is needed
Daemon URL--daemon-urlSCANOPY_DAEMON_URLdaemon_urlNonePublic URL where server can reach daemon in Push mode. Defaults to auto-detected IP + Daemon Port if not set
Port--daemon-portSCANOPY_DAEMON_PORTdaemon_port60073Port for daemon to listen on
Bind Address--bind-addressSCANOPY_BIND_ADDRESSbind_addressNoneIP address to bind daemon to
Allow Self-Signed Certificates--allow-self-signed-certsSCANOPY_ALLOW_SELF_SIGNED_CERTSallow_self_signed_certsfalseAllow self-signed certs for daemon -> server connections
Log Level--log-levelSCANOPY_LOG_LEVELlog_levelinfoLogging verbosity
Heartbeat Interval--heartbeat-intervalSCANOPY_HEARTBEAT_INTERVALheartbeat_interval30Seconds between heartbeat updates / work requests (for daemons in pull mode) to server
Docker Proxy--docker-proxySCANOPY_DOCKER_PROXYdocker_proxyNoneOptional proxy for Docker API. Can use both non-SSL and SSL proxy; SSL proxy requires additional SSL config vars
Docker Proxy SSL Cert--docker-proxy-ssl-certSCANOPY_DOCKER_PROXY_SSL_CERTdocker_proxy_ssl_certNonePath to SSL certificate if using a docker proxy with SSL
Docker Proxy SSL Key--docker-proxy-ssl-keySCANOPY_DOCKER_PROXY_SSL_KEYdocker_proxy_ssl_keyNonePath to SSL private key if using a docker proxy with SSL
Docker Proxy SSL Chain--docker-proxy-ssl-chainSCANOPY_DOCKER_PROXY_SSL_CHAINdocker_proxy_ssl_chainNonePath to SSL chain if using a docker proxy with SSL
Interfaces--interfacesSCANOPY_INTERFACESinterfacesNoneRestrict daemon to specific network interface(s). Comma-separated for multiple (e.g., eth0,eth1). Leave empty for all interfaces. Only applies to network discovery
Arp Retries--arp-retriesSCANOPY_ARP_RETRIESarp_retriesNoneNumber of ARP retry rounds for non-responding hosts (default: 2, meaning 3 total attempts)
Arp Packets per Second--arp-rate-ppsSCANOPY_ARP_RATE_PPSarp_rate_ppsNoneMaximum ARP packets per second (default: 50, go more conservative for networks with enterprise switches)
Use Npcap for ARP on Windows--use-npcap-arpSCANOPY_USE_NPCAP_ARPuse_npcap_arpfalseEnable faster ARP scanning on Windows by using broadcast ARP via Npcap instead of native SendARP, which doesn't support broadcast. **Requires Npcap installation**. Ignored on Linux/macOS
Concurrent Scans--concurrent-scansSCANOPY_CONCURRENT_SCANSconcurrent_scansAutoMaximum parallel host scans

Concurrent Scans

Controls how many hosts the daemon scans simultaneously during network discovery.

Default behavior: Auto-detected based on system resources

  • Calculates based on available memory
  • Typical range: 10-20 for most systems
  • Adjusts to prevent memory exhaustion

When to set manually:

  • System crashes during scans
  • Memory errors in logs
  • Very large networks (100+ hosts)
  • Resource-constrained devices (Raspberry Pi)

Recommended values:

  • Raspberry Pi 4 (4GB): 5-10
  • Standard desktop: 15-20
  • Server: 20-30+
  • Low memory: Start with 5, increase gradually

Setting:

# CLI
scanopy-daemon --concurrent-scans 10

# Environment
export SCANOPY_CONCURRENT_SCANS=10

# Docker
environment:
  - SCANOPY_CONCURRENT_SCANS=10

Symptoms of too high:

  • Daemon crashes during scans
  • "CONCURRENT_SCANS too high for this system" error
  • Out of memory errors
  • System becomes unresponsive

Impact:

  • Lower value = slower scans, more stable
  • Higher value = faster scans, more memory usage

On this page