Instructions to use TyrusRC/haruspex with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- GLiNER2
How to use TyrusRC/haruspex with GLiNER2:
from gliner2 import AutoExtractor extractor = AutoExtractor.from_pretrained("TyrusRC/haruspex") # Extract entities text = "Apple CEO Tim Cook announced iPhone 15 in Cupertino yesterday." result = extractor.extract_entities(text, ["company", "person", "product", "location"]) print(result) - Notebooks
- Google Colab
- Kaggle
TyrusRC/haruspex
Haruspex is a small, local decision layer for security operations. It reads a situation and returns a calibrated typed verdict โ boolean (yes/no + probability), choice (pick one option), score (rate on a rubric) โ and abstains when it is not confident enough for your risk budget.
Haruspex reuses the published decision encoder
fastino/GLiNER2.5-Decide (Apache-2.0, non-autoregressive, CPU/GPU) and
specializes it on security decisions. It does not train a decision model from scratch.
- Base:
fastino/GLiNER2.5-Decide. - Added: a typed decision contract, security specialization data, and a split-conformal selective-calibration layer (accept/abstain against a risk budget).
- Serves the TypeSafe
POST /v1/systemoneand native/v1/evaluatecontracts.
Intended use (security, both sides)
- Offensive (pentest / red-team): is this template/probe relevant to the target? is this scanner hit a real finding? finding severity; verdict discipline (vulnerable / not-vulnerable / inconclusive); attack-path next step.
- Defensive (SOC / blue-team): alert triage (true vs false positive), alert severity/priority, detection-rule applicability, incident routing, CVE applicability.
It is a classifier for bounded decisions โ not a chatbot, not an exploit generator.
Use
from haruspex import Haruspex
m = Haruspex.load("TyrusRC/haruspex", device="cuda") # or "mps" / "cpu"
print(m.decide({"type":"boolean","state":"Target: WordPress 6.2, PHP 8.1",
"question":"Is a WordPress xmlrpc.php template relevant?",
"criteria":{"true":"WordPress target","false":"not WordPress"}}))
Or serve the decision API (keyless, self-hosted):
pip install "haruspex[serve] @ git+https://github.com/TyrusRC/haruspex"
haruspex-serve --model TyrusRC/haruspex --port 3000 # POST /v1/systemone ยท /v1/evaluate
Calibration
Fitted calibrator: accept threshold 0.0, target risk 0.2, coverage 1.0 (n=116).
Evaluation
On a 156-row held-out split of the security pack (recipe selected on a separate calibration split, never on test): accuracy 0.8718, ECE 0.1076, Brier 0.1071. The adapter beats a prompted general 8B model on the same set at a small fraction of the parameters; see the repo's docs/benchmark.md comparison card.
A split-conformal selective layer gates each verdict: it accepts when the top-1
confidence clears a threshold fitted to hold the error AMONG accepted items at a target
risk, and abstains otherwise. Fit it with python -m haruspex.calibrate; evaluate
coverage/risk with python -m haruspex.eval.
Limitations
- A specialist for the decision types above; novel free-form judgments belong to a general LLM.
- Calibrated on the training mix โ recalibrate for a very different domain.
- Prediction SETS (not just abstention) await a GLiNER2 fix for per-label scores.
Apache-2.0. Repo + recipe: https://github.com/TyrusRC/haruspex
- Downloads last month
- 62
Model tree for TyrusRC/haruspex
Evaluation results
- accuracy on web held-out (156 rows)self-reported0.872
- ECE on web held-out (156 rows)self-reported0.108
- BRIER on web held-out (156 rows)self-reported0.107