Scanner deep-dive
Ornith 1.0 35B by OrnithAI ↗
General-Purpose LLM · agentic-v1 · scored on 58/66 repositories. Strict scoring (unfinished repos counted as misses).
Methodology note
Locally hosted; template fix. Open-weight GGUF (Q4_K_M) via Ollama through the standard agentic-v1 harness. Ornith's shipped GGUF template was replaced with the canonical Qwen3 template for tool calling. Completed 58/66. Cost $0.23.3
F3 (strict)
24.9
F2 (strict)
22.0%
Recall (strict)
53.6%
Precision
58/66
Repos scored
ornith-q3
Model
Free
Total cost
243s
Avg latency
§
Per-repository breakdown
Each bar shows true positives, false positives, and misses on one repository; bar length is proportional to that repo's labeled vulnerabilities. Ranked by F2.
| Repository | TP | FP | FN | Recall % | F2 |
|---|---|---|---|---|---|
| pythonssti | 2 | 0 | 0 | 100.0 | 100.0 |
| dsvw | 19 | 5 | 8 | 70.4 | 72.0 |
| vulnerable-api | 8 | 0 | 6 | 57.1 | 62.5 |
| vulnerable-flask-app | 13 | 12 | 8 | 61.9 | 59.6 |
| vulnpy | 48 | 49 | 32 | 60.0 | 57.6 |
| insecure-web | 5 | 4 | 4 | 55.6 | 55.6 |
| vc-kimi-code-seeded-v2-healthcare-clinic-django | 17 | 17 | 13 | 56.7 | 55.2 |
| vfapi | 5 | 6 | 4 | 55.6 | 53.2 |
| vc-codex-high-seeded-v2-hr-payroll-django | 13 | 11 | 12 | 52.0 | 52.4 |
| damn-vulnerable-flask-application | 7 | 1 | 8 | 46.7 | 51.5 |
| vc-kimi-code-seeded-v2-crm-saas-django | 13 | 7 | 14 | 48.1 | 50.8 |
| python-app | 11 | 14 | 10 | 52.4 | 50.5 |
| vc-kimi-code-seeded-v2-education-lms-django | 13 | 7 | 15 | 46.4 | 49.2 |
| vc-claude-code-seeded-v2-crm-saas-django | 12 | 2 | 16 | 42.9 | 47.6 |
| vc-codex-high-seeded-v2-legal-case-django | 11 | 7 | 14 | 44.0 | 46.6 |
| vc-kimi-code-seeded-v2-hr-payroll-django | 13 | 15 | 16 | 44.8 | 45.1 |
| vc-codex-seeded-v2-hr-payroll-django | 16 | 8 | 23 | 41.0 | 44.4 |
| vc-codex-seeded-v2-logistics-dispatch-fastapi | 12 | 7 | 18 | 40.0 | 43.2 |
| dvpwa | 9 | 4 | 14 | 39.1 | 42.9 |
| vc-codex-seeded-v2-fintech-lending-fastapi | 15 | 13 | 22 | 40.5 | 42.6 |
| lets-be-bad-guys | 9 | 5 | 15 | 37.5 | 40.9 |
| extremely-vulnerable-flask-app | 12 | 7 | 20 | 37.5 | 40.8 |
| vc-codex-seeded-v2-support-desk-fastapi | 12 | 16 | 18 | 40.0 | 40.5 |
| vc-codex-seeded-v2-legal-case-django | 12 | 9 | 21 | 36.4 | 39.2 |
| vulnerable-tornado-app | 5 | 3 | 9 | 35.7 | 39.1 |
| vc-claude-code-seeded-v2-education-lms-django | 11 | 7 | 21 | 34.4 | 37.7 |
| vc-codex-high-seeded-v2-marketplace-commerce-fastapi | 9 | 16 | 16 | 36.0 | 36.0 |
| dvblab | 7 | 3 | 15 | 31.8 | 35.7 |
| vc-codex-seeded-v2-property-management-fastapi | 10 | 10 | 21 | 32.3 | 34.7 |
| vampi | 5 | 9 | 10 | 33.3 | 33.8 |
| pygoat | 23 | 9 | 55 | 29.5 | 33.4 |
| vc-codex-seeded-v2-healthcare-clinic-django | 12 | 5 | 29 | 29.3 | 33.1 |
| vc-claude-code-seeded-v2-logistics-dispatch-fastapi | 9 | 11 | 24 | 27.3 | 29.6 |
| threatbyte | 6 | 8 | 20 | 23.1 | 25.4 |
| vc-codex-seeded-v2-education-lms-django | 8 | 11 | 27 | 22.9 | 25.2 |
| vc-claude-code-seeded-v2-hr-payroll-django | 6 | 7 | 21 | 22.2 | 24.8 |
| djangoat | 0 | 0 | 52 | 0.0 | 0.0 |
| dsvpwa | 0 | 0 | 32 | 0.0 | 0.0 |
| flask-xss | 0 | 9 | 30 | 0.0 | 0.0 |
| intentionally-vulnerable-python-application | 0 | 6 | 7 | 0.0 | 0.0 |
| vulnerable-python-apps | 0 | 0 | 22 | 0.0 | 0.0 |
| vc-claude-code-seeded-v2-fintech-lending-fastapi | 0 | 0 | 29 | 0.0 | 0.0 |
| vc-claude-code-seeded-v2-legal-case-django | 0 | 0 | 31 | 0.0 | 0.0 |
| vc-claude-code-seeded-v2-marketplace-commerce-fastapi | 0 | 0 | 32 | 0.0 | 0.0 |
| vc-claude-code-seeded-v2-property-management-fastapi | 0 | 0 | 33 | 0.0 | 0.0 |
| vc-claude-code-seeded-v2-support-desk-fastapi | 0 | 0 | 34 | 0.0 | 0.0 |
| vc-codex-high-seeded-v2-crm-saas-django | 0 | 0 | 25 | 0.0 | 0.0 |
| vc-codex-high-seeded-v2-education-lms-django | 0 | 0 | 25 | 0.0 | 0.0 |
| vc-codex-high-seeded-v2-fintech-lending-fastapi | 0 | 0 | 29 | 0.0 | 0.0 |
| vc-codex-high-seeded-v2-logistics-dispatch-fastapi | 0 | 11 | 29 | 0.0 | 0.0 |
| vc-codex-high-seeded-v2-property-management-fastapi | 0 | 0 | 26 | 0.0 | 0.0 |
| vc-codex-high-seeded-v2-support-desk-fastapi | 0 | 0 | 28 | 0.0 | 0.0 |
| vc-codex-seeded-v2-crm-saas-django | 0 | 0 | 34 | 0.0 | 0.0 |
| vc-kimi-code-seeded-v2-fintech-lending-fastapi | 0 | 0 | 33 | 0.0 | 0.0 |
| vc-kimi-code-seeded-v2-legal-case-django | 0 | 0 | 26 | 0.0 | 0.0 |
| vc-kimi-code-seeded-v2-marketplace-commerce-fastapi | 0 | 0 | 27 | 0.0 | 0.0 |
| vc-kimi-code-seeded-v2-property-management-fastapi | 0 | 0 | 30 | 0.0 | 0.0 |
| vc-kimi-code-seeded-v2-support-desk-fastapi | 0 | 11 | 28 | 0.0 | 0.0 |
§
Detection by severity
| Severity | TP | FP | FN | Recall % |
|---|---|---|---|---|
| Critical | 71 | 0 | 69 | 50.7 |
| High | 179 | 6 | 479 | 27.2 |
| Medium | 156 | 7 | 637 | 19.7 |
| Low | 12 | 0 | 56 | 17.6 |
§
Detection by vulnerability class
| CWE family | TP | FP | FN | Recall % |
|---|---|---|---|---|
| HTTP Header Injection | 2 | 0 | 0 | 100.0 |
| XPath Injection | 4 | 0 | 0 | 100.0 |
| Insecure Deserialization | 24 | 0 | 12 | 66.7 |
| XML External Entities | 22 | 0 | 12 | 64.7 |
| Path Traversal | 25 | 3 | 14 | 64.1 |
| SQL Injection | 37 | 3 | 27 | 57.8 |
| Code Injection / RFI | 17 | 0 | 13 | 56.7 |
| Command / OS Injection | 23 | 0 | 21 | 52.3 |
| Open Redirect | 17 | 0 | 21 | 44.7 |
| Server-Side Request Forgery | 15 | 1 | 22 | 40.5 |
| Cross-Site Scripting | 35 | 3 | 63 | 35.7 |
| Hardcoded Credentials | 18 | 0 | 35 | 34.0 |
| Security Misconfiguration | 22 | 0 | 78 | 22.0 |
| Sensitive Data Exposure | 24 | 0 | 105 | 18.6 |
| Other | 117 | 0 | 655 | 15.2 |
| Missing Authentication / Authorization | 9 | 3 | 58 | 13.4 |
| Denial of Service | 3 | 0 | 37 | 7.5 |
| Broken Access Control / IDOR | 4 | 0 | 68 | 5.6 |
§
LLM operational metrics
307,619
Avg input tokens
7,913
Avg output tokens
315,531
Avg total tokens
243s
Avg latency / repo
45.5%
JSON repair rate
66
Total runs
§
Cost
Free
Total cost
117,112
Python LOC scanned
58
Successful runs