ornith-1.0-35b-p150
Ornith-1.0-35B is an agentic reasoning and coding model served through an OpenAI-compatible vLLM endpoint on Tenstorrent Blackhole hardware.
Capabilities: tool calling โ yes (qwen3_xml); reasoning parsing โ yes (qwen3).
Runs on p150 or p150x2 or p150x4 โ see the serve profiles below.
Packaged and published with tt-model-manager 0.1.0 (manifest schema 5.1).
Quickstart
tt-model pull tt-hous/ornith-1.0-35b-p150 --with-weights
tt-model serve tt-hous/ornith-1.0-35b-p150
pull --with-weights downloads the Docker image and the ornith-ai/Ornith-1.0-35B weights at 5df2ed3f675c7beaa490328cc70bb573b65fb660 (into your HF cache; they are not in the image). serve starts an OpenAI-compatible server on port 7890; the first start compiles kernels for your device, which takes several minutes, and the server is ready when it logs Server ready at.
Select a serve profile
tt-model serve tt-hous/ornith-1.0-35b-p150 --profile p150 --follow
tt-model serve tt-hous/ornith-1.0-35b-p150 --profile p150x2 --follow
tt-model serve tt-hous/ornith-1.0-35b-p150 --profile p150x4 --follow
The API listens at http://127.0.0.1:7890/v1. All three profiles enable
Qwen3 reasoning and Qwen3 XML tool-call parsing. tt-model pull --with-weights
downloads the 70 GB Hugging Face snapshot. The first serve loads it onto
the device and compiles kernels into the persistent model cache; later
starts reuse that cache.
OpenCode
Configure an OpenAI-compatible provider with base URL
http://127.0.0.1:7890/v1 and model
ornith-ai/Ornith-1.0-35B.
Measured endpoint performance
Measured with vllm bench serve against the packaged server settings on
this two-P300C host: one ASIC for p150, both ASICs of one board for
p150x2, and all four ASICs across both boards for p150x4. Each row is
the p50 of three sequential requests with exact random input/output lengths,
concurrency 1, greedy sampling, and EOS ignored. Decode tokens/s is derived
as 1000 / p50 TPOT.
P150
| Input tokens | Output tokens | TTFT (ms) | Decode tokens/s | TPOT (ms) |
|---|---|---|---|---|
| 128 | 128 | 253 | 11.59 | 86.25 |
| 2,048 | 128 | 2,601 | 11.57 | 86.45 |
| 8,192 | 128 | 10,409 | 11.53 | 86.72 |
| 32,768 | 128 | 42,786 | 11.41 | 87.61 |
P150x2
| Input tokens | Output tokens | TTFT (ms) | Decode tokens/s | TPOT (ms) |
|---|---|---|---|---|
| 128 | 128 | 153 | 33.27 | 30.06 |
| 2,048 | 128 | 1,404 | 33.16 | 30.16 |
| 8,192 | 128 | 5,912 | 32.90 | 30.40 |
| 32,768 | 128 | 24,468 | 32.01 | 31.24 |
P150x4
| Input tokens | Output tokens | TTFT (ms) | Decode tokens/s | TPOT (ms) |
|---|---|---|---|---|
| 128 | 128 | 160 | 43.03 | 23.24 |
| 2,048 | 128 | 801 | 42.67 | 23.44 |
| 8,192 | 128 | 3,475 | 42.33 | 23.62 |
| 32,768 | 128 | 14,450 | 40.75 | 24.54 |
| 65,536 | 128 | 29,950 | 38.84 | 25.74 |
| 131,072 | 128 | 65,211 | 35.78 | 27.95 |
| 262,016 | 128 | 149,229 | 30.41 | 32.88 |
The final P150x4 row uses 262,016 input tokens plus 128 output tokens, exactly filling the configured 262,144-token context window.
Serve profiles
One image serves every profile below; pick one with --profile.
| profile | hardware | mesh | max_num_seqs | max_model_len |
|---|---|---|---|---|
p150 |
p150 | P150 | 1 | 262144 |
p150x2 |
p150x2 | P150x2 | 1 | 262144 |
p150x4 (default) |
p150x4 | P150x4 | 1 | 262144 |
Provenance
The exact sources the image was built from โ code/ in this repo is byte-identical to the model code inside the image:
| component | built from |
|---|---|
| tt-metal | f7662055fe4ae3d66509335d96a7c74acd53911b |
| vLLM | a887998646dc4e6f192bce8d485bf89f4596ca2f |
code/ digest |
9f145dc234915ade (sha256, first 16 hex digits) |
| built | 2026-09-04T15:53:45+00:00 by tt-model 0.1.0 |