Detection as Code

Hunters vs Sigma and pySigma

Hunters totals 3.44 and Sigma and pySigma totals 5.50 on the 10 point detection-as-code rubric (sources read 2026-11-03 and 2026-11-04). Sigma and pySigma lead by 2.06 points. The pair turns on rule languages: Sigma and pySigma document it in full, and Hunters publishes nothing on it. Neither documents field drift alerts tied to rules.

The difference that decides this pair

The largest weighted gap on the rubric is rule languages and conversion paths: Sigma and pySigma scores 8.5 against 3.0 for Hunters, which is 0.82 of the 10 point total.

For rule languages, Sigma and pySigma convert one rule to Splunk, Kusto and Elasticsearch (Lucene, ES|QL, EQL) backends through installable plugins, whereas Hunters names no rule language and normalises data to OCSF. sigmahq.io read 2026-11-03 hunters.security read 2026-11-04

Rubric side by side

Hunters totals 3.44 and Sigma and pySigma totals 5.50 out of 10.

Rubric criteria for Hunters and Sigma and pySigma, scores out of 10. A plus marks a criterion where Sigma and pySigma scores higher, a minus where Hunters does.

MarkerCriterionWeightHuntersSigma and pySigma
+Rule languages and conversion paths153.08.5
+Git-native workflow and CI/CD183.06.0
Testing154.04.0
+Coverage analytics124.05.0
-Rule health183.52.0
+Versioning and rollback83.05.0
+Content library size and freshness84.08.0
+Pricing transparency63.09.0
Total1003.445.50

The 33 capabilities as a diff

Read it as a diff from Hunters to Sigma and pySigma: 18 of 33 rows differ. A plus marks a row where Sigma and pySigma documents more (12 rows), a minus a row where Hunters documents more (6 rows). Rows with no marker match.

Capability rows for Hunters and Sigma and pySigma, grouped. Changed rows are shaded and carry a marker.

MarkerCapabilityHuntersSigma and pySigma
Languages
Sigma and pySigma documents moreSigma nativeHunters, Sigma native: not documentednot documentedSigma and pySigma, Sigma native: documenteddocumented
Sigma and pySigma documents moreSigma conversionHunters, Sigma conversion: not documentednot documentedSigma and pySigma, Sigma conversion: documenteddocumented
Sigma and pySigma documents moreYARA-LHunters, YARA-L: not documentednot documentedSigma and pySigma, YARA-L: partialpartial
Sigma and pySigma documents moreSPLHunters, SPL: not documentednot documentedSigma and pySigma, SPL: documenteddocumented
Sigma and pySigma documents moreKQLHunters, KQL: not documentednot documentedSigma and pySigma, KQL: documenteddocumented
Sigma and pySigma documents moreEQL or ES|QLHunters, EQL or ES|QL: not documentednot documentedSigma and pySigma, EQL or ES|QL: documenteddocumented
PythonHunters, Python: not documentednot documentedSigma and pySigma, Python: not documentednot documented
Hunters documents moreVisual builderHunters, Visual builder: partialpartialSigma and pySigma, Visual builder: not documentednot documented
YARAHunters, YARA: not documentednot documentedSigma and pySigma, YARA: not documentednot documented
Sigma and pySigma documents moreLucene or KQL-likeHunters, Lucene or KQL-like: not documentednot documentedSigma and pySigma, Lucene or KQL-like: documenteddocumented
Source control and CI
Git syncHunters, Git sync: not documentednot documentedSigma and pySigma, Git sync: not documentednot documented
PR deployHunters, PR deploy: not documentednot documentedSigma and pySigma, PR deploy: not documentednot documented
Sigma and pySigma documents moreCLIHunters, CLI: not documentednot documentedSigma and pySigma, CLI: partialpartial
Rule APIHunters, Rule API: not documentednot documentedSigma and pySigma, Rule API: not documentednot documented
Sigma and pySigma documents moreCI examplesHunters, CI examples: not documentednot documentedSigma and pySigma, CI examples: partialpartial
Env promotionHunters, Env promotion: not documentednot documentedSigma and pySigma, Env promotion: not documentednot documented
Testing
Unit testsHunters, Unit tests: not documentednot documentedSigma and pySigma, Unit tests: not documentednot documented
Hunters documents moreReplayHunters, Replay: documenteddocumentedSigma and pySigma, Replay: not documentednot documented
Synthetic eventsHunters, Synthetic events: not documentednot documentedSigma and pySigma, Synthetic events: not documentednot documented
Backtest reportsHunters, Backtest reports: not documentednot documentedSigma and pySigma, Backtest reports: not documentednot documented
Test coverageHunters, Test coverage: not documentednot documentedSigma and pySigma, Test coverage: not documentednot documented
Coverage analytics
ATT&CK mapHunters, ATT&CK map: documenteddocumentedSigma and pySigma, ATT&CK map: documenteddocumented
Hunters documents moreGap viewHunters, Gap view: documenteddocumentedSigma and pySigma, Gap view: not documentednot documented
Hunters documents moreData sourcesHunters, Data sources: partialpartialSigma and pySigma, Data sources: not documentednot documented
Hunters documents moreLog source healthHunters, Log source health: partialpartialSigma and pySigma, Log source health: not documentednot documented
Rule health
Hunters documents moreNoisy rulesHunters, Noisy rules: partialpartialSigma and pySigma, Noisy rules: not documentednot documented
Broken rulesHunters, Broken rules: not documentednot documentedSigma and pySigma, Broken rules: not documentednot documented
Field driftHunters, Field drift: not documentednot documentedSigma and pySigma, Field drift: not documentednot documented
Rule costHunters, Rule cost: not documentednot documentedSigma and pySigma, Rule cost: not documentednot documented
Sigma and pySigma documents moreLifecycleHunters, Lifecycle: partialpartialSigma and pySigma, Lifecycle: documenteddocumented
Library
Sigma and pySigma documents moreLibrary countHunters, Library count: partialpartialSigma and pySigma, Library count: documenteddocumented
Sigma and pySigma documents moreCommunityHunters, Community: not documentednot documentedSigma and pySigma, Community: documenteddocumented
CadenceHunters, Cadence: partialpartialSigma and pySigma, Cadence: partialpartial

documenteddocumentedpartialpartialnot documentednot documented

Sources for the rows that differ

Verdict by buyer type

Which of the two fits each kind of team.

BuyerVerdict
Microsoft Sentinel estateSigma and pySigma is the better fit: they convert Sigma to KQL through its Kusto backend, listed as Stable; Hunters documents no Sentinel path.
Elastic estateSigma and pySigma is the better fit: they convert Sigma to Lucene, ES|QL and EQL through its Elasticsearch backend; Hunters documents no Elastic path.
Splunk estateSigma and pySigma is the better fit: they convert Sigma to SPL through its Splunk backend; Hunters documents no Splunk path.
Google SecOps estateSigma and pySigma is the only one of the pair with any stated route: they have a Google SecOps backend that its backend list marks as Development; Hunters documents no Google SecOps path.
a team starting from scratch with SigmaSigma and pySigma is the better fit: they are the format itself and converts it to Splunk, Kusto and Elasticsearch targets, with no runtime, tests or health checks; Hunters documents no Sigma path.

When to pick each

Hunters: Pick Hunters when rule health is the deciding need: it shows leads, alerts and clusters per detector and offers a Test logic step on a custom detector over a chosen timeframe. Sigma and pySigma have no runtime and score lower on rule health.

Sigma and pySigma: Pick Sigma and pySigma when CI and deployment is the deciding need: they convert rules from the command line with sigma-cli and has no deploy step. They also lead on rule languages.

Profiles: Hunters, Sigma and pySigma. Alternatives: to Hunters, to Sigma and pySigma.