Configuration
foxd is configured via a config.toml file. If no config file is found, foxd uses sensible defaults.
Notification channels are managed from the web console (Configuration -> Notification Channels) or the REST API, not from config.toml.
The config file path defaults to config.toml in the current directory. Override it with the FOXD_CONFIG environment variable.
Full Example
[daemon]
# Network interface to monitor (e.g., eth0, wlan0, enp0s3)
interface = "eth0"
# Optional pcap capture filter (BPF syntax)
# capture_filter = "arp or (udp port 67 or udp port 68)"
# How often to check the neighbor table (seconds)
neighbor_check_interval_secs = 60
# How long before marking a device as offline (seconds)
device_timeout_secs = 300
# Automatic log cleanup
log_cleanup_enabled = true
log_retention_days = 30
[database]
# SQLite database file path
path = "./foxd.db"
[api]
# API server listen address
host = "0.0.0.0"
# API server port
port = 8080Daemon Section
interface
The network interface to capture packets on. This should be the interface connected to the LAN you want to monitor.
interface = "eth0"Find your interfaces with ip link show.
capture_filter
Optional BPF filter for pcap. If omitted, foxd captures all traffic. Useful for reducing noise.
capture_filter = "arp or (udp port 67 or udp port 68)"neighbor_check_interval_secs
How often (in seconds) foxd polls the Linux neighbor table via netlink. Default: 30.
neighbor_check_interval_secs = 60device_timeout_secs
How many seconds of inactivity before a device is marked offline. Default: 60.
device_timeout_secs = 300log_cleanup_enabled
Enable or disable automatic deletion of old log entries. Default: true.
log_cleanup_enabled = truelog_retention_days
How many days to keep log entries before they are automatically deleted. The cleanup runs once every 24 hours. Default: 30.
log_retention_days = 30Database Section
path
Path to the SQLite database file. Created automatically if it does not exist.
path = "./foxd.db"API Section
host
IP address for the HTTP server to bind to. Use 0.0.0.0 to listen on all interfaces, or 127.0.0.1 for localhost only.
host = "0.0.0.0"port
Port for the HTTP server. Default: 8080.
port = 8080