Deterministic genetic programming for evolving interpretable alert rules.
Instead of training a black-box anomaly detector, Alert-Axolotl-Evo evolves explicit logic trees you can read, audit, and ship to production:
("if_alert", (">", ("avg", "latency"), 100), "High ping!")Fitness is tied to operational constraints (precision, false-positive rate, alert rate), so "high fitness" means "useful on-call alert" — not a vanity metric.
pip install -e . # core
pip install -e ".[yaml]" # with YAML config supportRequires Python 3.8+.
# Run with defaults (synthetic data, 40 generations)
alert-axolotl-evo
# From CSV
alert-axolotl-evo --data-source csv --data-path data.csv \
--value-column latency --anomaly-column is_anomalyProgrammatic:
from alert_axolotl_evo import Config, evolve
config = Config()
config.evolution.seed = 42
evolve(config=config)See examples/ for more. For checkpoints, meta-evolution, self-improving runs, and the Promotion Manager CLI flags, see the usage guide.
- Load a time-series dataset (CSV, JSON, or synthetic).
- Initialize a population of random logic trees.
- Evaluate fitness against operational constraints.
- Select → crossover → mutate; track champions; checkpoint.
- Optionally promote useful sub-patterns into a macro library (see docs/design-contract.md).
- Interpretable — every rule is a tree of explicit operators.
- Deterministic — seeded runs reproduce bit-for-bit (single-threaded).
- Disciplined — patterns must earn their place via causal lift, not correlation.
CSV or JSON with a single numeric value column and an optional anomaly label. If the label column is missing in CSV, rows above the 98th percentile are auto-labeled as anomalies.
timestamp,value,is_anomaly
2024-01-01T00:00:00Z,120.5,0
2024-01-01T00:01:00Z,300.0,1- Architecture
- Usage guide
- Fitness alignment
- Design contract
- Meta-evolution
- Experimental results
- Changelog
pytest # run tests
ruff check . # lintMIT — see LICENSE.