Downloads · 30 days
8
10% of all-time downloads
edwardcapriolo/antares-350m-JQ4
antares-350m-JQ4 is a text generation model from edwardcapriolo. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as apache-2.0.
Downloads · 30 days
8
10% of all-time downloads
All-time downloads
81
Public
Repo size
362 MB
Likes
0
Public
Click a slice to open those files.
.safetensors362 MB · 98%
From the Hugging Face model README
This model directory was generated by Deliverance Q.O.D. (Quantize On Demand) from a local source model.
Deliverance rewrote selected matrix weights into its Q4 quantized tensor format to reduce model size and improve local inference throughput while keeping the model card and tokenizer metadata intact.
679.0 MB351.8 MBQ4168deliverance-quantization.jsonThe manifest records the source/output paths, tensor dtype changes, generated .qb sidecars, and shape-normalization transforms used during export.
Deliverance is a local Java inference engine with safetensors loading, Q4 quantization, and quantize-on-demand model generation. Learn more at github.com/edwardcapriolo/deliverance.
Antares-350M is an open-weight, 350-million parameter language model specialized for vulnerability localization in real-world codebases. Built on IBM Granite 4.0 350M, it is trained to autonomously navigate source code repositories through a terminal interface — issuing shell commands, reading files, and iteratively narrowing in on vulnerable files — using a two-stage pipeline: supervised fine-tuning (SFT) followed by Group Relative Policy Optimization (GRPO).
Unlike traditional static analysis tools or retrieval-based approaches, Antares-350M operates as a terminal agent: it explores repositories by executing commands (grep, find, cat, and standard Unix utilities), reasons about the output, and submits a list of files it believes to contain the reported vulnerability.
Antares-350M is part of the Antares family of models (350M, 1B, 3B), all built on IBM Granite 4.0 and trained with the same two-stage pipeline. The 350M model achieves a File F1 of 0.135 on the Vulnerability Localization benchmark (VLoc Bench), outperforming models many times its size including Gemini 2.5 Flash, Gemma-4-31B, GPT-5 Mini, and Qwen3.5-122B-A10B.
[!NOTE] Within the family, Antares-350M can serve as a speculative draft model for the larger Antares variants in compatible deployments: it proposes candidate tokens that a 1B or 3B model verifies, accelerating inference while preserving the larger model's localization quality. It can also run standalone in resource-constrained deployments.
Antares enables organizations to deploy compact, on-premises vulnerability localization capabilities without relying on cloud-based AI services. In our evaluation setup, Antares-350M completes the full 500-task VLoc Bench sweep in approximately 11 minutes on a single H100 GPU using 16 parallel workers.
Antares-350M is designed for security practitioners, researchers, and developers building automated vulnerability-localization workflows. The model is optimized for:
The model is intended for local deployment in environments prioritizing data security, regulatory compliance, and operational control.
Antares-350M can be integrated into security toolchains as a terminal-based agentic component. Example downstream applications include:
For questions or assistance with integrating Antares-350M, please contact Hadas Birin ([email protected]).
The following uses are out-of-scope and are neither recommended nor intended use cases:
Antares-350M operates as a terminal agent: it receives a system prompt containing a CWE identifier and its generic category description, then iteratively generates reasoning and tool calls whose outputs are appended to the conversation context. The model may issue up to 15 terminal calls and must then terminate through either submit_vulnerable_files or submit_no_vulnerability_found.
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("fdtn-ai/antares-350m")
model = AutoModelForCausalLM.from_pretrained("fdtn-ai/antares-350m")
# The model uses a structured tool-calling format:
# <think> ... </think> — internal reasoning
# <tool_call> {"name": "terminal", "arguments": {"command": "..."}} </tool_call>
# <tool_response> ... </tool_response> — sandbox output (provided externally)
#
# The agent loop terminates when the model calls:
# submit_vulnerable_files — list of file paths believed to be vulnerable
# submit_no_vulnerability_found — declares the repository clean
SYSTEM_PROMPT = """You are a security vulnerability localization agent.
You have access to a terminal with the repository mounted at /workspace/repo/.
Use shell commands (grep, find, cat, etc.) to explore the codebase and identify
files that contain the reported vulnerability. When confident, submit your findings."""
cwe_description = (
"CWE-78: Improper Neutralization of Special Elements used in an OS Command "
"('OS Command Injection'). The software constructs all or part of an OS command "
"using externally-influenced input from an upstream component, but does not "
"neutralize or incorrectly neutralizes special elements that could modify the "
"intended OS command when it is sent to a downstream component."
)
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": f"Vulnerability to locate:\n{cwe_description}"},
]
# Apply chat template and generate the first reasoning + tool call turn
inputs = tokenizer.apply_chat_template(
messages, return_tensors="pt", add_generation_prompt=True, return_dict=True
)
prompt_length = inputs["input_ids"].shape[-1]
output = model.generate(
**inputs,
do_sample=True,
temperature=0.3,
top_p=1.0,
max_new_tokens=512,
)
response = tokenizer.decode(output[0][prompt_length:], skip_special_tokens=False)
print(response)
# The model will output a <think> block followed by a <tool_call> block.
# Your infrastructure should parse the tool call, execute the command in a sandbox,
# and append the result as a <tool_response> message before the next generation turn.
# Repeat until the model calls submit_vulnerable_files or submit_no_vulnerability_found.
The model is designed to operate within an agentic evaluation loop with a sandboxed terminal environment. Each repository should be extracted into an isolated container (e.g., ubuntu:24.04 with network disabled) before the agent begins exploration. See the technical report for full integration details and the recommended agent loop implementation.
Antares-350M was trained through a two-stage pipeline:
Stage 1 — Supervised Fine-Tuning (SFT): A proprietary corpus spanning three categories: (1) cybersecurity reasoning data covering vulnerability concepts, CWE/CVE reasoning, threat modeling, advisory interpretation, and security analysis; (2) deep-research and general reasoning data focused on multi-step reasoning, evidence aggregation, and instruction following; and (3) code-search trajectories demonstrating terminal-based repository exploration, file inspection, and iterative search behavior.
Stage 2 — GRPO (Group Relative Policy Optimization): Reinforcement learning over complete multi-turn agent trajectories using vulnerable repository snapshots curated through proprietary data-generation and filtering pipelines. Each task includes a complete codebase containing a known vulnerability and ground-truth labels identifying the affected implementation files.
Data cutoff: April 10, 2025.
This is a static model trained on an offline dataset. Future versions will be released on updated data. A detailed description of the methodology is available in the technical report.
Antares-350M is based on the IBM Granite 4.0 350M architecture. Training was performed on Cisco Foundation AI's internal compute cluster.
Key training details:
A more detailed description of the methodology is available in the technical report.
Antares-350M was evaluated on the Vulnerability Localization Benchmark (VLoc Bench), which comprises 500 tasks drawn from 290 unique real-world repositories, spans 6 package ecosystems and 147 unique CWE categories, and includes assigned CVE identifiers for 78% of tasks. Each task pairs a vulnerable repository snapshot with ground-truth vulnerable implementation files; tests, documentation, and configuration files are excluded from the label set.
The agent receives a CWE identifier and its generic category description — no advisory text, file hints, or severity details — and must explore the repository within a budget of 15 terminal commands per task, followed by one final submission action.
Metric calculation: For each task, submitted file paths are compared with the ground-truth set of vulnerable implementation files. Precision is the fraction of submitted files in the ground-truth set, recall is the fraction of ground-truth files submitted, and File F1 is the harmonic mean of task-level precision and recall. A task with no valid file submission receives zero precision, recall, and File F1 because every Phase A task contains a known vulnerability. We macro-average precision, recall, and File F1 across all 500 tasks, then average the resulting metrics across three independent runs. The reported File F1 is therefore the mean task-level File F1 across all tasks and runs.
All evaluations use temperature=0.3 and top_p=1.0.
Overall Performance (Phase A — File F1):
| Model | Parameters | File F1 ↑ | Precision | Recall |
|---|---|---|---|---|
| GPT-5.5 (xhigh) | Frontier | 0.229 | 0.310 | 0.221 |
| Antares-3B (GRPO) | 3B | 0.223 | 0.303 | 0.221 |
| GPT-5.5 | Frontier | 0.221 | 0.305 | 0.211 |
| Antares-1B (GRPO) | 1B | 0.209 | 0.262 | 0.224 |
| Antares-3B (SFT) | 3B | 0.198 | 0.240 | 0.228 |
| Antares-1B (SFT) | 1B | 0.188 | 0.263 | 0.179 |
| GLM-5.2 | 753B | 0.186 | 0.226 | 0.186 |
| Gemini 3 Pro | Frontier | 0.152 | 0.190 | 0.153 |
| Antares-350M (GRPO) | 350M | 0.135 | 0.136 | 0.178 |
| Antares-350M (SFT) | 350M | 0.108 | 0.149 | 0.101 |
| Gemini 2.5 Flash | Frontier | 0.102 | 0.132 | 0.098 |
| Gemma-4-31B | 31B | 0.101 | 0.131 | 0.097 |
| GPT-5 Mini | Frontier | 0.098 | 0.115 | 0.096 |
| Gemini 3.1 Flash Lite | Frontier | 0.095 | 0.131 | 0.090 |
| Qwen3.5-122B-A10B | 125B MoE | 0.091 | 0.124 | 0.083 |
| GPT-5 | Frontier | 0.048 | 0.062 | 0.048 |
| GPT-5 Nano | Frontier | 0.024 | 0.038 | 0.021 |
| Llama-3.3-70B | 70B | 0.012 | 0.016 | 0.014 |
| Granite 4.0 350M (base) | 350M | 0.001 | — | — |
Bold rows indicate Antares models. All models use the same agent protocol, tools, task inputs, 15-call terminal budget, and generation settings of temperature 0.3 and top-p 1.0. Results are averaged across three independent runs.
This model is designed to operate as a component within a sandboxed agentic terminal loop, not as a standalone conversational assistant. As such, no additional standalone safety alignment (e.g., RLHF-based refusal training or HarmBench evaluation) was performed on this model.
Safety considerations should be addressed at the system level by:
network=none)It is strongly recommended to deploy this model with appropriate system-level safeguards and not to expose it as a general-purpose assistant endpoint.
Antares-350M has several limitations that users should be aware of:
To address the limitations of Antares-350M, we recommend:
network=none), a command timeout (10 seconds recommended), and resource limits (2 CPU cores, 4GB RAM). Destroy the container after each evaluation entry.