加载中…
加载中…
model-00022-of-00122.safetensors 4.3 GBmodel-00024-of-00122.safetensors 4.3 GBmodel-00026-of-00122.safetensors 4.3 GBmodel-00028-of-00122.safetensors 4.3 GBmodel-00030-of-00122.safetensors 4.3 GBmodel-00032-of-00122.safetensors 4.3 GBmodel-00034-of-00122.safetensors 4.3 GBmodel-00036-of-00122.safetensors 4.3 GBmodel-00038-of-00122.safetensors 4.3 GBmodel-00040-of-00122.safetensors 4.3 GBmodel-00042-of-00122.safetensors 4.3 GBmodel-00044-of-00122.safetensors 4.3 GBmodel-00046-of-00122.safetensors 4.3 GBmodel-00048-of-00122.safetensors 4.3 GBmodel-00050-of-00122.safetensors 4.3 GBmodel-00052-of-00122.safetensors 4.3 GBmodel-00054-of-00122.safetensors 4.3 GBmodel-00056-of-00122.safetensors 4.3 GBmodel-00058-of-00122.safetensors 4.3 GBmodel-00060-of-00122.safetensors 4.3 GBmodel-00062-of-00122.safetensors 4.3 GBmodel-00064-of-00122.safetensors 4.3 GBmodel-00066-of-00122.safetensors 4.3 GBmodel-00068-of-00122.safetensors 4.3 GBmodel-00070-of-00122.safetensors 4.3 GBmodel-00072-of-00122.safetensors 4.3 GBmodel-00074-of-00122.safetensors 4.3 GBmodel-00076-of-00122.safetensors 4.3 GBmodel-00078-of-00122.safetensors 4.3 GBmodel-00080-of-00122.safetensors 4.3 GBmodel-00082-of-00122.safetensors 4.3 GBmodel-00084-of-00122.safetensors 4.3 GBmodel-00086-of-00122.safetensors 4.3 GBmodel-00088-of-00122.safetensors 4.3 GBmodel-00090-of-00122.safetensors 4.3 GBmodel-00092-of-00122.safetensors 4.3 GBmodel-00094-of-00122.safetensors 4.3 GBmodel-00096-of-00122.safetensors 4.3 GBmodel-00098-of-00122.safetensors 4.3 GBmodel-00100-of-00122.safetensors 4.3 GBmodel-00102-of-00122.safetensors 4.3 GBmodel-00104-of-00122.safetensors 4.3 GBmodel-00106-of-00122.safetensors 4.3 GBmodel-00108-of-00122.safetensors 4.3 GBmodel-00110-of-00122.safetensors 4.3 GBmodel-00112-of-00122.safetensors 4.3 GBmodel-00114-of-00122.safetensors 4.3 GBmodel-00116-of-00122.safetensors 4.3 GBmodel-00118-of-00122.safetensors 4.3 GBmodel-00120-of-00122.safetensors 4.3 GBmodel-00002-of-00122.safetensors 4.3 GBmodel-00004-of-00122.safetensors 4.3 GBmodel-00006-of-00122.safetensors 4.3 GBmodel-00008-of-00122.safetensors 4.3 GBmodel-00010-of-00122.safetensors 4.3 GBmodel-00012-of-00122.safetensors 4.3 GBmodel-00014-of-00122.safetensors 4.3 GBmodel-00016-of-00122.safetensors 4.3 GBmodel-00018-of-00122.safetensors 4.3 GBmodel-00020-of-00122.safetensors 4.3 GBmodel-00001-of-00122.safetensors 3.2 GBmodel-00021-of-00122.safetensors 2.4 GBmodel-00025-of-00122.safetensors 2.4 GBmodel-00027-of-00122.safetensors 2.4 GBmodel-00029-of-00122.safetensors 2.4 GBmodel-00033-of-00122.safetensors 2.4 GBmodel-00035-of-00122.safetensors 2.4 GBmodel-00037-of-00122.safetensors 2.4 GBmodel-00041-of-00122.safetensors 2.4 GBmodel-00043-of-00122.safetensors 2.4 GBmodel-00045-of-00122.safetensors 2.4 GBmodel-00049-of-00122.safetensors 2.4 GBmodel-00051-of-00122.safetensors 2.4 GBmodel-00053-of-00122.safetensors 2.4 GBmodel-00057-of-00122.safetensors 2.4 GBmodel-00059-of-00122.safetensors 2.4 GBmodel-00061-of-00122.safetensors 2.4 GBmodel-00065-of-00122.safetensors 2.4 GBmodel-00067-of-00122.safetensors 2.4 GBmodel-00069-of-00122.safetensors 2.4 GBmodel-00073-of-00122.safetensors 2.4 GBmodel-00075-of-00122.safetensors 2.4 GBmodel-00077-of-00122.safetensors 2.4 GBmodel-00081-of-00122.safetensors 2.4 GBmodel-00083-of-00122.safetensors 2.4 GBmodel-00085-of-00122.safetensors 2.4 GBmodel-00089-of-00122.safetensors 2.4 GBmodel-00091-of-00122.safetensors 2.4 GBmodel-00093-of-00122.safetensors 2.4 GBmodel-00097-of-00122.safetensors 2.4 GBmodel-00099-of-00122.safetensors 2.4 GBmodel-00101-of-00122.safetensors 2.4 GBmodel-00105-of-00122.safetensors 2.4 GBmodel-00107-of-00122.safetensors 2.4 GBmodel-00109-of-00122.safetensors 2.4 GBmodel-00113-of-00122.safetensors 2.4 GBmodel-00115-of-00122.safetensors 2.4 GBmodel-00117-of-00122.safetensors 2.4 GBmodel-00003-of-00122.safetensors 2.4 GBmodel-00005-of-00122.safetensors 2.4 GBmodel-00009-of-00122.safetensors 2.4 GBmodel-00011-of-00122.safetensors 2.4 GBmodel-00013-of-00122.safetensors 2.4 GBmodel-00017-of-00122.safetensors 2.4 GBmodel-00019-of-00122.safetensors 2.4 GBmodel-00023-of-00122.safetensors 2.3 GBmodel-00031-of-00122.safetensors 2.3 GBmodel-00039-of-00122.safetensors 2.3 GBmodel-00047-of-00122.safetensors 2.3 GBmodel-00055-of-00122.safetensors 2.3 GBmodel-00063-of-00122.safetensors 2.3 GBmodel-00071-of-00122.safetensors 2.3 GBmodel-00079-of-00122.safetensors 2.3 GBmodel-00087-of-00122.safetensors 2.3 GBmodel-00095-of-00122.safetensors 2.3 GBmodel-00103-of-00122.safetensors 2.3 GBmodel-00111-of-00122.safetensors 2.3 GBmodel-00119-of-00122.safetensors 2.3 GBmodel-00007-of-00122.safetensors 2.3 GBmodel-00015-of-00122.safetensors 2.3 GBmodel-00121-of-00122.safetensors 2.2 GBmodel-00122-of-00122.safetensors 2.0 GBAloha! 🌺 Today, we are releasing Ornith-1.0, a self-improving family of open-source models for agentic coding.
Highlights:
This model card documents Ornith-1.0-397B, the lightweight member of the Ornith family, designed for efficient single-GPU deployment.
| Ornith-1.0-397B | Qwen3.5-397B | Qwen3.7-Max | GLM-5.2-744B | Minimax-M3-428B | DeepSeek-V4-Pro-1.6T | Claude Opus 4.7 | Claude Opus 4.8 | |
|---|---|---|---|---|---|---|---|---|
| Agentic Coding | ||||||||
| Terminal-Bench 2.1 (Terminus-2) | 77.5 | 53.5 | 73.5 | 81.0 | 64 | 64 | 70.3 | 85 |
| Terminal-Bench 2.1 (Claude Code) | 78.2 | 48.6 | 69.8 | 82.7 | - | 66.5 | 69.7 | 78.9 |
| SWE-bench Verified | 82.4 | 76.4 | 80.4 | - | - | 80.6 | 80.8 | 87.6 |
| SWE-bench Pro | 62.2 | 51.6 | 60.6 | 62.1 | 59 | 55.4 | 64.3 | 69.2 |
| SWE-bench Multilingual | 78.9 | 69.3 | 78.3 | - | - | 76.2 | - | - |
| NL2Repo | 48.2 | 36.8 | 47.2 | 48.9 | 42.1 | - | - | 69.7 |
| Claw-eval Avg | 77.1 | 70.7 | 65.2 | - | - | 75.8 | 78.2 | - |
| SWE Atlas - QnA | 41.2 | 20.4 | - | - | 37.9 | 27.2 | 40.3 | 48.8 |
| SWE Atlas - RF | 42.6 | 18.4 | - | - | - | - | 48.6 | 46.7 |
| SWE Atlas - TW | 39.1 | 18.5 | - | - | 30.8 | - | 38.5 | - |
* Terminal-Bench 2.1 (Terminus-2): We evaluate Terminal-Bench 2.1 using the Harbor/Terminus-2 framework with parser=json, temperature=1.0, top_p=1.0, and a 128K context window. Each run uses a 4-hour timeout with 32 CPU cores and 48GB RAM, and results are averaged over 5 runs. We adjust the Qwen chat template to ensure consistency between training and inference (https://huggingface.co/deepreinforce-ai/Ornith-1.0-397B/blob/main/chat_template.jinja), and modify Harbor to align with vLLM's reasoning_content key.
* Terminal-Bench 2.1 (Claude Code): We evaluate Terminal-Bench 2.1 using Claude Code 2.1.126 with parser=json, temperature=1.0, top_p=1.0, max_new_tokens=131072. Results are averaged over 5 runs. Again, Qwen chat template needs to be modified.
* SWE-Bench Verified, Pro and Multilingual: using OpenHands harness with temp=1.0, top_p=0.95, 256k context window.
* SWE Atlas QnA, RF, TW: using mini SWE agent harness with temp=1.0, top_p=0.95, 128K context window. Results are averaged over 5 runs.
* NL2Repo: with temperature=1.0, top_p=1.0, 400K context, 48K output and anti-hacking filters.
* ClawEval: An agentic code benchmark over real-user task distributions; temp=0.6 and 256K context.
Ornith-1.0-397B is a reasoning model: by default the assistant turn opens with a <think> … </think> block before the final answer. The serving recipes below enable a reasoning parser so the chain-of-thought is returned in a separate reasoning_content field, and a tool-call parser so the model's <tool_call> blocks are surfaced as OpenAI-style tool_calls.
Serving Ornith-1.0-397B requires recent runtimes:
The two recipes below stand up an OpenAI-compatible server on a single 8×80GB GPU node (tensor-parallel 8). Adjust --tensor-parallel-size / --tp to the number of GPUs you have.
vllm serve deepreinforce-ai/Ornith-1.0-397B \
--served-model-name Ornith-1.0-397B \
--tensor-parallel-size 8 \
--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
python -m sglang.launch_server \
--model-path deepreinforce-ai/Ornith-1.0-397B \
--served-model-name Ornith-1.0-397B \
--tp 8 \
--host 0.0.0.0 --port 8000 \
--context-length 262144 \
--mem-fraction-static 0.85 \
--tool-call-parser qwen3_coder \
--reasoning-parser qwen3
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; Ornith-1.0-397B requires transformers >= 5.8.1.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "deepreinforce-ai/Ornith-1.0-397B"
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()
Once a vLLM or SGLang server is running, talk to it with any OpenAI-compatible client.
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="EMPTY", # any non-empty string works for a local server
)
response = client.chat.completions.create(
model="Ornith-1.0-397B",
messages=[
{"role": "user", "content": "Write a one-line Python lambda that squares a number."}
],
temperature=0.6,
top_p=0.95,
max_tokens=1024,
)
message = response.choices[0].message
# reasoning_content holds the <think> trace; content holds the final answer.
print("reasoning:", getattr(message, "reasoning_content", None))
print("answer:", message.content)
You can also stream tokens, or hand the model tools — Ornith-1.0-397B emits well-formed function calls that the server parses into the standard tool_calls field:
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}
]
response = client.chat.completions.create(
model="Ornith-1.0-397B",
messages=[{"role": "user", "content": "What is the weather in Paris right now?"}],
tools=tools,
tool_choice="auto",
temperature=0.6,
max_tokens=2048,
)
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.function.name, tool_call.function.arguments)
# -> get_weather {"city": "Paris"}
You can point any OpenAI-compatible SDK (Python, Node.js, etc.) or curl at the same /v1/chat/completions endpoint.
Examples of using Ornith with agent harness:
# Hermes talks to any OpenAI-compatible endpoint — point it at your Ornith server.
export OPENAI_BASE_URL="http://localhost:8000/v1"
export OPENAI_API_KEY="EMPTY"
export MODEL="deepreinforce-ai/Ornith-1.0-397B"
# OpenClaw talks to any OpenAI-compatible endpoint — point it at your Ornith server.
export OPENAI_BASE_URL="http://localhost:8000/v1"
export OPENAI_API_KEY="EMPTY"
export OPENAI_MODEL="deepreinforce-ai/Ornith-1.0-397B"
pip install unsloth
# Load Ornith for fast local inference or fine-tuning (Python):
# from unsloth import FastLanguageModel
# model, tokenizer = FastLanguageModel.from_pretrained(
# "deepreinforce-ai/Ornith-1.0-397B",
# max_seq_length=262144,
# load_in_4bit=True,
# )
pip install openhands-ai
# OpenHands routes through LiteLLM; the "openai/" prefix selects the OpenAI-compatible path.
export LLM_MODEL="openai/deepreinforce-ai/Ornith-1.0-397B"
export LLM_BASE_URL="http://localhost:8000/v1"
export LLM_API_KEY="EMPTY"
# Launch the CLI (or run the official OpenHands Docker image with the same env vars).
openhands
Ornith-1.0-397B is optimized for terminal-based coding agents. Point any OpenAI-compatible coding CLI at your Ornith-1.0-397B endpoint (set OPENAI_BASE_URL and OPENAI_API_KEY) to understand large codebases, automate tedious work, and ship faster.
# Register your local Ornith endpoint as a provider in ~/.config/opencode/opencode.json:
#
# {
# "$schema": "https://opencode.ai/config.json",
# "provider": {
# "ornith": {
# "npm": "@ai-sdk/openai-compatible",
# "name": "Ornith (local)",
# "options": { "baseURL": "http://localhost:8000/v1", "apiKey": "EMPTY" },
# "models": { "deepreinforce-ai/Ornith-1.0-397B": { "name": "Ornith-1.0-397B" } }
# }
# }
# }
opencode
If you find our work helpful, feel free to give us a cite.
@misc{ornith_397b,
title = {{Ornith-1.0-397B}: Agentic Coding, Open to All},
url = {https://deep-reinforce.com/ornith_1_0.html},
author = {{DeepReinforce Team}},
year = {2026}
}