Quick Start
Prerequisites
Section titled “Prerequisites”- Python 3.11, 3.12, 3.13, or 3.14
- uv package manager (recommended) or pip
- Optional: Docker + Docker Compose for the bundled stack
- Optional: PostgreSQL 14+ for production storage
Installation
Section titled “Installation”From PyPI
Section titled “From PyPI”pip install seerflow# oruv add seerflowFrom source
Section titled “From source”git clone https://github.com/seerflow/seerflow.gitcd seerflowuv syncDocker
Section titled “Docker”# Run with SQLite defaults (zero config)docker compose up -d
# Run with PostgreSQLexport POSTGRES_PASSWORD=your-secure-passworddocker compose --profile postgres up -d
# Standalonedocker run -p 4317:4317 -p 514:514/udp seerflow/seerflowFirst Run
Section titled “First Run”Seerflow works out of the box with zero configuration:
seerflow startThis starts Seerflow with:
- SQLite storage (WAL mode, auto-created at
~/.local/share/seerflow/seerflow.db) - Syslog receiver on UDP 514 and TCP 601
- OTLP gRPC receiver on port 4317
- OTLP HTTP receiver on port 4318
- Dashboard + REST API + WebSocket on
http://127.0.0.1:8080- UI:
http://127.0.0.1:8080/ - REST:
http://127.0.0.1:8080/api/v1/ - WebSocket stream:
ws://127.0.0.1:8080/api/v1/ws
- UI:
- 63 bundled Sigma rules with MITRE ATT&CK tagging
Configuration
Section titled “Configuration”Create seerflow.yaml in your working directory:
storage: backend: sqlite # or postgresql
receivers: bind_addr: "0.0.0.0" syslog_enabled: true syslog_udp_port: 5514 syslog_tcp_port: 5601 otlp_grpc_enabled: true otlp_grpc_port: 4317 otlp_http_enabled: true otlp_http_port: 4318 webhook_enabled: false
detection: hst_window_size: 1000 hst_n_trees: 25
log_level: INFORun with a config file:
seerflow --config seerflow.yaml startEnvironment variables are supported with ${VAR:-default} syntax:
storage: postgresql_url: ${DATABASE_URL:-postgresql://localhost/seerflow}Tailing Log Files
Section titled “Tailing Log Files”To tail specific log files, add file_paths to your config:
receivers: file_paths: - /var/log/syslog - /var/log/auth.logSending Test Logs
Section titled “Sending Test Logs”Send syslog messages to test your setup:
# UDP syslogecho "<14>Mar 25 10:00:00 myhost myapp[1234]: User login from 10.0.1.5" | nc -u localhost 5514
# TCP syslogecho "<14>Mar 25 10:00:00 myhost myapp[1234]: Connection timeout" | nc localhost 5601Graceful Shutdown
Section titled “Graceful Shutdown”Press Ctrl+C to stop. Seerflow will:
- Stop all receivers
- Flush remaining events to storage
- Persist ML model state (Half-Space Trees, Holt-Winters, CUSUM, Markov, biDSPOT)
- Print a session summary (events processed, anomalies detected, templates, throughput)
CLI Options
Section titled “CLI Options”# Coreseerflow --help # Show helpseerflow --version # Show versionseerflow --config FILE start # Start with custom config
# Query historical dataseerflow query events --limit 10 # Last N eventsseerflow query alerts --since 1h # Alerts in time windowseerflow query templates --top 20 # Most-seen Drain3 templates
# Sigma rulesseerflow rules list # All loaded rulesseerflow rules list --technique T1110 # MITRE technique filterseerflow rules list --tactic credential-accessseerflow rules list --format json # Scriptable output
# Natural-language threat hunting (requires llm.backend configured)seerflow hunt "ssh brute force from 10.0.1.42 in the last 24h"seerflow hunt "outbound DNS to flagged domains" --limit 100 --json
# Export / importseerflow export events --since 7d --output events.ndjsonseerflow export events --format csv --output events.csvseerflow import events.ndjson
# Operational statusseerflow status # Live pipeline metricsseerflow status --json # Machine-readable
# Templates inspectionseerflow templates list --top 20seerflow templates show <template-id>
# Alert feedback (label noise / true positives for offline learning)seerflow feedback <alert-id> tpseerflow feedback <alert-id> fp --note "ssh from ops jumphost"
# Entity-graph backend migration (igraph ↔ falkordb ↔ postgres_age)seerflow graph migrate --from igraph --to falkordb --dry-runNext Steps
Section titled “Next Steps”- See the Configuration Reference for all settings
- See the CLI Reference for every subcommand
- Read the Architecture Overview to understand the processing pipeline