Ornith-1.0-9B-Heretic (Decensored)
This repository contains Ornith-1.0-9B-Heretic, a decensored variant of the state-of-the-art agentic coding model Ornith-1.0-9B.
Using the Heretic directional abliteration framework, the model's safety alignment and refusal vectors have been removed while preserving 99.9% of its original reasoning and coding intelligence (KL Divergence: 0.0156).
🛡️ Intended Use & Safety Warning
This model has been explicitly decensored to assist authorized security researchers, penetration testers, CTF players, and bug bounty hunters. It is designed to act as an autonomous fuzzer and exploit developer without triggering standard safety refusals on technical cybersecurity prompts.
⚠️ Disclaimer: You must only use this model on systems you own or have explicit, written authorization to test. Unauthorized access or exploitation is illegal.
Abliteration Details
- Base Model:
deepreinforce-ai/Ornith-1.0-9B - Tool: Heretic v1.4.0
- Optimal Trial: Trial 109
- Refusals: Reduced from 95/100 to 63/100 on the standard harmful behaviors benchmark (while maintaining near-perfect compliance on technical/coding prompts).
- KL Divergence: 0.0156 (Virtually zero brain damage; agentic tool-calling and
<think>reasoning remain fully intact).
Ornith-1.0-9B (Base Model Info)
Aloha! 🌺 Today, we are releasing Ornith-1.0, a self-improving family of open-source models for agentic coding.
Highlights:
- State-of-the-Art Coding Agents: Available in 9B-Dense, 31B-Dense, 35B-MoE, and 397B-MoE (post-trained on top of Gemma 4 and Qwen 3.5), achieving state-of-the-art performance among open-source models of comparable size on coding benchmarks such as Terminal-Bench 2.1, SWE-Bench, NL2Repo and OpenClaw.
- Self-Improving Training Framework: Ornith-1.0 employs RL to learn to generate not only solution rollouts, but also the scallfold that drive those rollouts. By jointly optimizing the scaffold and the resulting solution, the model discovers better search trajectories and generates higher-quality solutions.
- Licence: MIT licensed, globally accessible, and free from regional limitations.
Ornith 1.0 9B
This model card documents Ornith-1.0-9B, the most lightweight member of the Ornith family, designed for efficient single-GPU deployment.
Benchmarks
| Ornith-1.0-9B | Qwen3.5-9B | Qwen3.5-35B | Gemma4-12B | Gemma4-31B | |
|---|---|---|---|---|---|
| Agentic Coding | |||||
| Terminal-Bench 2.1 (Terminus-2) | 43.1 | 21.3 | 41.4 | 21 | 42.1 |
| SWE-bench Verified | 69.4 | 53.2 | 70 | 44.2 | 52 |
| SWE-bench Pro | 42.9 | 31.3 | 44.6 | 27.6 | 35.7 |
Quickstart
Ornith-1.0-9B is a reasoning model: by default the assistant turn opens with a <think> … </think> block before the final answer.
Serving Ornith-1.0-9B requires recent runtimes:
- Transformers ≥ 5.8.1
- vLLM ≥ 0.19.1
- SGLang ≥ 0.5.9
Serving Ornith-1.0-9B-Heretic
vLLM
vllm serve Toaster496/Ornith-1.0-9B-heretic \
--served-model-name Ornith-1.0-9B-Heretic \
--host 0.0.0.0 --port 8000 \
--max-model-len 262144 \
--gpu-memory-utilization 0.90 \
--enable-prefix-caching \
--enable-auto-tool-choice --tool-call-parser qwen3_xml \
--reasoning-parser qwen3 \
--trust-remote-code
#### Hugging Face Transformers
For a quick local test (or to script offline generation), load the model directly with Transformers. Make sure you have a recent release installed — see the [Transformers installation guide](https://huggingface.co/docs/transformers/installation); Ornith-1.0-9B requires `transformers >= 5.8.1`.
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Toaster496/Ornith-1.0-9B-heretic"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
dtype="auto",
device_map="auto",
)
messages = [
{"role": "user", "content": "Write a Python function is_prime(n). Keep it short."}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
generated = model.generate(
**inputs,
max_new_tokens=512,
do_sample=True,
temperature=0.6,
top_p=0.95,
top_k=20,
)
output_ids = generated[0][inputs.input_ids.shape[1]:]
# The reply contains a <think> ... </think> reasoning block followed by the answer.
content = tokenizer.decode(output_ids, skip_special_tokens=True)
print(content)
To split the reasoning trace from the final answer, parse on the </think> marker:
text = tokenizer.decode(output_ids, skip_special_tokens=True)
if "</think>" in text:
reasoning, answer = text.split("</think>", 1)
reasoning = reasoning.replace("<think>", "").strip()
answer = answer.strip()
else:
reasoning, answer = "", text.strip()
- Downloads last month
- 77