Instructions to use Johnny5b/Ornith-9B-CORTEX-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Johnny5b/Ornith-9B-CORTEX-GGUF with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
Use Docker
docker model run hf.co/Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use Johnny5b/Ornith-9B-CORTEX-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Johnny5b/Ornith-9B-CORTEX-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Johnny5b/Ornith-9B-CORTEX-GGUF", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
- Ollama
How to use Johnny5b/Ornith-9B-CORTEX-GGUF with Ollama:
ollama run hf.co/Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
- Unsloth Desktop
- Pi
How to use Johnny5b/Ornith-9B-CORTEX-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use Johnny5b/Ornith-9B-CORTEX-GGUF with Docker Model Runner:
docker model run hf.co/Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
- Lemonade
How to use Johnny5b/Ornith-9B-CORTEX-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
Run and chat with the model
lemonade run user.Ornith-9B-CORTEX-GGUF-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use Johnny5b/Ornith-9B-CORTEX-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Johnny5b/Ornith-9B-CORTEX-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "Johnny5b/Ornith-9B-CORTEX-GGUF:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Ornith-9B-CORTEX-GGUF
Ornith-1.5-9B with the CORTEX protocol fine-tuned into the weights (QLoRA → merged → GGUF Q4_K_M),
built per docs/CUSTOM-MODEL-BUILD-PLAN.md in
Johnny5b/portable-ai-runner.
Files:
Ornith-9B-CORTEX-v3-Q4_K_M.gguf— current, recommended (5.63 GB, sha256ca2803a2b9510e3d4cb5a51e5e244e8d616c5ec8d1df7193005364834a7d7b93). Passes the full behavior bar: model-emitted patch applied by the harness, no fallback, correct§S:REPAIRstate (see evidence below). Trained on the v3 corpus: identity examples + in-scope Q&A for the expanded knowledge-vault domains + repair-patch completion.Ornith-9B-CORTEX-v2-Q4_K_M.gguf— v2 (5.6 GB), kept for provenance. Passed the same behavior bar with the§S:AWAKEstate nit.Ornith-9B-CORTEX-Q4_K_M.gguf— v1 (5.6 GB), kept for provenance. Learned the trace header + RST scaffold but not patch-JSON emission.
Upstream: ornith-ai/Ornith-1.5-9B, MIT license. Attribution: Ornith-1.5 by ornith-ai.
Speed
GPU (A10G-large 24 GB, llama.cpp server-cuda, -ngl 99, ctx 2048, max_tokens 512):
| Model | Gen tok/s | Job |
|---|---|---|
| Base Ornith-1.5-9B Q4_K_M | 76.60 / 76.71 | 6aad81ec51992417dfcc794a |
| v1 CORTEX Q4_K_M | 77.18 / 77.20 | 6ab0994751992417dfcce80f |
| v2 CORTEX Q4_K_M | 77.19 / 77.16 | 6ab0b80c52d0dbd7f1d773b1 |
v3 CPU same-box A/B (cpu-upgrade, llama-bench b11175, -p 29 -n 64 -r 1; GPU flavors were unavailable at verify time, absolute numbers are contention-dominated — read the RELATIVE column):
| Model | pp29 t/s | tg64 t/s | Job |
|---|---|---|---|
| v2 CORTEX Q4_K_M | 3.01 | 0.27 | 6ab5ee1652d0dbd7f1d8e12e |
| v3 CORTEX Q4_K_M | 1.95 | 0.30 | 6ab5ee1652d0dbd7f1d8e12e |
Generation throughput parity confirmed (0.27 vs 0.30 — v3 ≥ v2). The pp29 gap is single-rep noise on a heavily contended box (the same box measured v2 at 2.58 pp29 an hour earlier, and v3 at 18.16 pp29 on its conversion load-gate). Structurally the files are identical for compute: same architecture, 427 tensors, same quant types, both 5.23 GiB. Behavioral corroboration: the v3 trial generated its full protocol answer in 411 s vs v2's 810.7 s on the same flavor.
Live trial evidence chain (scripts/cortex_live_trial.py, CPU)
| Run | Gen cap | Patch extractor | Model output | Gate carried by | Job |
|---|---|---|---|---|---|
| v1 @ stock harness | 300 | stock | header + RST ✓, patch JSON never emitted | AST fallback | 6ab09ef851992417dfcce887 |
| v2 @ stock harness | 300 | stock | truncated preamble (budget) | AST fallback | 6ab0b80c51992417dfcceac4 |
| v2 corrected harness | 800 | fixed | full protocol + valid patch JSON | model patch ✓ | 6ab0c48f51992417dfccebaf |
| v3 corrected harness | 800 | fixed | full protocol, correct §S:REPAIR, valid patch JSON |
model patch ✓ | 6ab5e36a52d0dbd7f1d8df53 |
The v3 run verbatim (2026-09-25):
[TRACE: §R:§EVO_AST:PYGGI | §T:repair_run | §S:REPAIR]
Diagnosis: the function divides by len(nums) with no empty-input guard, so avg([]) raises
ZeroDivisionError instead of ValueError.
{"find": " return sum(nums) / len(nums)", "replace": " if not nums:\n raise ValueError('empty input')\n return sum(nums) / len(nums)"}
===== REPAIR - model patch applied =====
===== REPAIR - pytest gate ===== 3 passed in 0.01s
TRIAL PASSED TRIAL_EXIT_CODE=0
v3 fixes v2's residual state nit (§S:REPAIR is now emitted, not §S:AWAKE) and completes the
protocol in half the generation time (411 s vs 810.7 s).
The two harness fixes (required for the corrected-harness runs)
- Generation cap 300 → 800 in
chat()— the stock cap was sized for a non-reasoning 0.6B; a reasoning-style 9B spends >300 tokens thinking and the patch JSON never emits (measured, twice). - Patch extractor — parse the last line starting with
{, no.replace("'", '"')quote mangling (it broke valid patches containingValueError('empty input')).
A ready-to-run patcher that applies exactly these two fixes (byte-verified, with backup and
audit-ledger line) ships at tools/apply_harness_fixes.py in
Johnny5b/cortex-knowledge-vault.
Training
- Adapter v3 (Johnny5b/Ornith-9B-CORTEX-LoRA-v3):
same QLoRA recipe as v2 (r=16, α=32, TRL 1.13.0, 2 epochs, lr 2e-4 cosine, eff. batch 8,
bf16/nf4) on the 404-example v3 corpus. 102/102 steps, final train_loss 0.434, token accuracy
0.917. Jobs: train
6ab355f252d0dbd7f1d825ad, merge/quant6ab5db5e6b030d633f69024c, publish6ab5f11052d0dbd7f1d8e1b4. - Adapters v2 / v1: see the LoRA-v2 / LoRA repos for their recipes (identical except corpus).
- Data: Johnny5b/cortex-sft-300 —
data/cortex_sft.jsonl(v1: 304),data/cortex_sft_v2.jsonl(v2: 356),data/cortex_sft_v3.jsonl(v3: 404 = v2 + identity block + vault-domain Q&A). Anti-contamination invariant held: no example contains the trial'savgfixture — the trial remains a transfer test. - Dashboard: ornith-9b-cortex-qlora-v3-trackio.
GGUF conversion note (qwen35 MTP metadata)
llama.cpp's converter derives qwen35.nextn_predict_layers from the HF config's
mtp_num_hidden_layers, but the merged model carries no MTP tensors — the runtime then rejects
the file. v3 (and future builds) convert with --no-mtp. The staged artifact additionally passed
a load gate (llama-bench executed against the quantized file) before publishing, after the sha256
assertion. Conversion job: 6ab5db5e6b030d633f69024c.
Honesty ledger
- Fine-tune deltas are measured ONLY by the tests above. Everything else is UNMEASURED — including the v3 identity examples ("I'm Ornith…"): trained, but no identity probe was run in the verification harness. The model may still self-identify as Qwen (its pretraining).
- Both behavior passes required the two harness fixes; against the stock trial script the AST fallback still carries the gate. Harness limitation, documented, not hidden.
- v3 residual nits: (a) thinking residue still leaks into the raw reply before the trace header
at the 800-token budget; (b) the header's rule field rendered as
§R:§EVO_AST:PYGGI(double-§ formatting quirk) though the state and patch were correct. - The v3 speed gate is a CPU same-box A/B, not the GPU number: GPU flavors were unavailable platform-wide at verify time. Relative parity only; absolute GPU tok/s for v3 is unmeasured.
- Architecture correction to the source plan: Ornith-1.5-9B is a dense hybrid (3:1 linear:full attention, no MoE routers) — the "small active fraction" label in the source BENCHMARKS.md does not match this config.
Usage
llama.cpp / llama-cpp-python ≥ 0.3.35 (arch qwen35). Reasoning-style model: allow ≥800 tokens
generation budget — at 300 the thinking budget eats the reply (measured, three times).
- Downloads last month
- 366
4-bit
Model tree for Johnny5b/Ornith-9B-CORTEX-GGUF
Base model
ornith-ai/Ornith-1.5-9B