Instructions to use Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx with MLX:
# Make sure mlx-lm is installed # pip install --upgrade mlx-lm # Generate text with mlx-lm from mlx_lm import load, generate model, tokenizer = load("Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx") prompt = "Write a story about Einstein" messages = [{"role": "user", "content": prompt}] prompt = tokenizer.apply_chat_template( messages, add_generation_prompt=True ) text = generate(model, tokenizer, prompt=prompt, verbose=True) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Unsloth Desktop
- Pi
How to use Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx"
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx" } ] } } }Run Pi
# Start Pi in your project directory: pi
- MLX LM
How to use Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx with MLX LM:
Generate or start a chat session
# Install MLX LM uv tool install mlx-lm # Interactive chat REPL mlx_lm.chat --model "Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx"
Run an OpenAI-compatible server
# Install MLX LM uv tool install mlx-lm # Start the server mlx_lm.server --model "Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx" # Calling the OpenAI-compatible server with curl curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx", "messages": [ {"role": "user", "content": "Hello"} ] }' - Hermes Agent
How to use Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx with Hermes Agent:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx"
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 Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx"
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 "Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx" \ --custom-provider-id mlx-lm \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
Ornith-1.0-35B — Unsloth MXFP4 + MXFP8 (MLX)
Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx
is an Apple Silicon MLX quantization of
deepreinforce-ai/Ornith-1.0-35B,
an agentic-coding model with the 40-layer Qwen3.5 MoE architecture: 256
experts, top-8 routing, hybrid linear/full attention, and an MTP-capable config.
The published checkpoint does not include an mtp.* tensor subtree.
This model is part of the Qwen Unsloth tensor-class recipe for MLX on macOS and DGX collection.
The source was the updated BF16 checkpoint at revision
dfd73723eb604e739fe07fa22ebd5daccca0a1a6.
Update — re-converted 2026-09-01
The MXFP4 and MXFP8 weights are re-encoded. mlx-node now picks each MX block's
shared E8M0 exponent itself instead of rounding log2(amax) to nearest: MXFP4
tries both candidate exponents and keeps the lower squared error, and MXFP8 takes
the ceiling so a block can never saturate. Measured MXFP8 weight error across a
checkpoint drops from 6.91% to 2.66%.
Weight bytes changed; the tensor-class map, shard layout and tensor counts are unchanged. Earlier revisions remain in this repository's history.
Quantization recipe
This is a data-free, weight-only Apple translation of the Unsloth Qwen3.6 NVFP4 recipe:
- tensors assigned NVFP4 by the recipe are stored as MXFP4, 4-bit with group size 32;
- tensors assigned FP8 by the recipe are stored as MXFP8, 8-bit with group size 32;
- every excluded tensor stays BF16.
This ports the recipe's tensor-class selection. It does not claim numerical parity with NVIDIA NVFP4/FP8 activation quantization. Both MXFP classes use MLX weight-only quantized matmul with BF16/A16 activations. The artifact contains no activation-calibration or FP8 KV-cache-calibration data, global scales, or W4A4/W8A8 execution metadata. No imatrix, calibration dataset, or AWQ-style pre-scaling was used, and no upstream numerical or performance parity is claimed.
| Tensor class | Stored format |
|---|---|
Routed expert switch_mlp.{gate,up,down}_proj, layers 0–31 |
MXFP4 4/32 |
Shared expert {gate,up,down}_proj, layers 0–31 |
MXFP4 4/32 |
| The same routed/shared FFN projections, layers 32–39 | MXFP8 8/32 |
Full-attention {q,k,v,o}_proj |
MXFP8 8/32 |
Linear-attention in_proj_qkv, in_proj_z, out_proj |
MXFP8 8/32 |
lm_head |
MXFP8 8/32 |
Embeddings; router mlp.gate and shared_expert_gate; in_proj_a/b; GDN state, convolution, and norm tensors; all other norms |
BF16 |
| MTP tensors | Not present in the published source checkpoint |
| Vision tower and merger tensors | BF16 |
The resulting config contains 192 MXFP4 module entries and 179 MXFP8 module entries. The final eight FFN layers are intentionally MXFP8; this is the regular, accuracy-oriented 35B recipe rather than the all-FFN-FP4 "Fast" variant.
Compatibility and usage
This checkpoint requires @mlx-node/lm and @mlx-node/core 0.0.8 or newer.
The published prebuilt macOS binary requires macOS 26 or newer; macOS 14 or
newer can use a source build.
npm install @mlx-node/lm@^0.0.8 @mlx-node/core@^0.0.8
import { loadSession } from '@mlx-node/lm';
const session = await loadSession('./Ornith-1.0-35B-mxfp4-mlx');
const result = await session.send('Write a short plan for reviewing a code change.');
console.log(result.text);
Reproduction
Converter: mlx-node at or after PR #131, which made the tuned MX
weight encoders and the NVFP4 power-of-two lift unconditional. v0.0.8 reproduces
the earlier revision of this repository, not the current weights.
The normalized reproducible invocation from the mlx-node repository root was:
mlx convert \
--input .cache/models/ornith-1.0-35b \
--output .cache/models/ornith-1.0-35b-unsloth-mxfp4-mlx \
--model-type qwen3_5_moe \
--dtype bfloat16 \
--quantize \
--q-recipe unsloth \
--q-mxfp
Validation
A local mlx-node load-and-generate smoke test completed successfully and
produced the one-token output OK. This functional smoke test is separate from
the performance benchmark below and does not validate model quality.
Benchmark
Measured on an Apple M5 Max with 128 GiB of unified memory, Darwin
25.5.0/arm64, Node.js 24.13.1, and @mlx-node/lm, @mlx-node/core, and
@mlx-node/core-darwin-arm64 0.0.8.
The table reports the median of three measured runs. Each run used a fresh
child process and fresh model load, with zero warmups and a 60-second cooldown.
Generation was deterministic: temperature: 0, reasoning effort none, 106
prompt tokens, and a 512-token generation limit. All three runs generated 512
tokens and ended with finishReason: "length".
| Metric | Median |
|---|---|
| Model load | 111.887 s |
| Time to first token | 364.885 ms |
| Prefill throughput | 290.503 tok/s |
| Decode throughput | 82.950 tok/s |
| Generation wall time | 6.654 s |
| End-to-end wall time | 118.537 s |
Raw per-run samples and the machine-readable summary are available in benchmark.json.
The model files were read from external storage. Load timing is sensitive to external-storage and OS file-cache state; the three measured loads ranged from 77.111 to 295.859 seconds. Treat load time as host- and cache-specific. These measurements describe only this prompt and configuration and must not be used to infer model quality.
License and attribution
The source model card declares the MIT license. Model capability and training credit belong to DeepReinforce. The tensor-class recipe is credited to Unsloth, and this repository only converts the BF16 source weights to an MLX-native mixed MXFP4/MXFP8 representation.
- Downloads last month
- 292
3-bit
Model tree for Brooooooklyn/Ornith-1.0-35B-mxfp4-mlx
Base model
ornith-ai/Ornith-1.0-35B