High-performance NetFlow/IPFIX flow collector with columnar storage and built-in query engine. Single binary, zero external dependencies.

Collects NetFlow (RFC 3954) v5/v9 and IPFIX (RFC 7011) over UDP/TCP, stores flows in a compressed columnar format with automatic compaction, and serves a web UI for real-time analysis.
# Run with defaults (HTTP :2137, IPFIX :4739/udp)
./flowcus
# Or with Docker
docker run -p 2137:2137 -p 4739:4739/udp ghcr.io/consi/flowcus:latest
Open http://localhost:2137 for the web UI.
/ip traffic-flow
set cache-entries=1k enabled=yes interfaces=ether1-wan
/ip traffic-flow ipfix
set nat-events=yes
/ip traffic-flow target
add dst-address=192.168.1.100 port=4739 src-address=192.168.1.1 version=ipfix
Replace 192.168.1.100 with your Flowcus server IP, 192.168.1.1 with the router's address, and ether1-wan with your WAN interface name.
Binary — download from Releases
Debian/Ubuntu:
sudo dpkg -i flowcus_*.deb
sudo systemctl enable --now flowcus
Docker:
docker run -d \
-p 2137:2137 \
-p 4739:4739/udp \
-v flowcus-data:/data/storage \
ghcr.io/consi/flowcus:latest
Settings file at {storage_dir}/flowcus.settings (auto-created on first run):
[logging]
format = "human" # or "json"
[server]
host = "0.0.0.0"
port = 2137
[ipfix]
port = 4739
udp = true
tcp = false
[storage]
dir = "storage"
retention_hours = 744 # 31 days, 0 = unlimited
merge_workers = 4
flush_interval_secs = 5
All settings are overridable via CLI flags or environment variables:
flowcus --port 8080 --storage /var/lib/flowcus
flowcus --settings /etc/flowcus.settings
flowcus --log-format json
# Environment variables
FLOWCUS_PORT=8080 FLOWCUS_STORAGE=/var/lib/flowcus flowcus
Requires: Rust 1.85+, Node 22+, just
just dev # Full stack (Vite HMR + Rust backend)
just test # Unit + integration + E2E tests
just build # Production release build
just check # Format + lint + test
$ claude mcp add flowcus \
-- python -m otcore.mcp_server <graph>