Ornith 1.0 35B
This model card documents Ornith-1.0-35B, the lightweight member of the Ornith family, designed for efficient single-GPU deployment.
Benchmarks
Quickstart
Serving Ornith-1.0-35B
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
vllm serve deepreinforce-ai/Ornith-1.0-35B \ --served-model-name Ornith-1.0-35B \ --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
SGLang
python -m sglang.launch_server \ --model-path deepreinforce-ai/Ornith-1.0-35B \ --served-model-name Ornith-1.0-35B \ --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-35B requires transformers >= 5.8.1.
from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "deepreinforce-ai/Ornith-1.0-35B" 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()
Using Ornith-1.0-35B via the Chat Completions API
Once a vLLM or SGLang server is running, talk to it with any OpenAI-compatible client.
Basic Usage
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-35B", 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-35B 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-35B", 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.
Agentic Usage
Ornith-1.0-35B excels in tool-calling and agentic coding capabilities.
Agent Frameworks
Because Ornith-1.0-35B exposes an OpenAI-compatible endpoint with tool calling, it works out of the box with standard agent frameworks. Below is a minimal example that connects Ornith-1.0-35B to tools through an MCP server.
import osfrom openai import OpenAI client = OpenAI( base_url=os.getenv("OPENAI_BASE_URL", "http://localhost:8000/v1"), api_key=os.getenv("OPENAI_API_KEY", "EMPTY"),) tools = [ { "type": "function", "function": { "name": "run_shell", "description": "Run a shell command and return its output.", "parameters": { "type": "object", "properties": { "command": {"type": "string", "description": "The command to run"} }, "required": ["command"], }, }, }] messages = [{"role": "user", "content": "List the Python files in the current directory."}] response = client.chat.completions.create( model="deepreinforce-ai/Ornith-1.0-35B", messages=messages, tools=tools, temperature=0.6, top_p=0.95,)print(response.choices[0].message)
Examples of using Ornith with agent harness:
Hermes Agent
# 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-35B"
Atomic.chat/ Ollama / llama.cpp
# Both runtimes load a GGUF build of Ornith (publish one at deepreinforce-ai/Ornith-1.0-35B-GGUF). # llama.cpp — serve an OpenAI-compatible API on port 8000.llama-server -hf deepreinforce-ai/Ornith-1.0-35B-GGUF --port 8000 -c 262144 # Ollama — pull and chat with the same GGUF straight from Hugging Face.ollama run hf.co/deepreinforce-ai/Ornith-1.0-35B-GGUF
OpenClaw
# 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-35B"
Unsloth Studio
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-35B",# max_seq_length=262144,# load_in_4bit=True,# )
OpenHands
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-35B"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
Coding CLIs
Ornith-1.0-35B is optimized for terminal-based coding agents. Point any OpenAI-compatible coding CLI at your Ornith-1.0-35B endpoint (set OPENAI_BASE_URL and OPENAI_API_KEY) to understand large codebases, automate tedious work, and ship faster.
OpenCode
# 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-35B": { "name": "Ornith-1.0-35B" } }# }# }# } opencode
Citation
If you find our work helpful, feel free to give us a cite.
@misc{ornith-35b, title = {{Ornith-1.0-35B}: Agentic Coding, Open to All}, url = {https://deep-reinforce.com/ornith_1_0.html}, author = {{DeepReinforce Team}}, year = {2026}}