OdooClaw Medium 2.6B FT — MLX (BF16, unquantized)

The on-device agentic model for Odoo — the best quality-to-speed tradeoff in the OdooClaw family.

MLX BF16 (non-quantized) version (Apple Silicon) of the OdooClaw Medium 2.6B FT model (v18, canonical). Fine-tuned LFM2.5-2.6B for tool calling inside Odoo (ERP) via MCP. Ask in natural language in the Odoo chat and the model picks the right Odoo tool.

Part of the OdooClaw collection. This repo holds the full-precision BF16 weights. For the smaller, faster 4-bit MLX release (recommended for on-device use) see odooclaw-medium-2.6b-ft-mlx. The GGUF release (Linux/Windows/CPU) is odooclaw-medium-2.6b-ft.

Why this model

The Medium is the agentic sweet spot of the OdooClaw family:

  • LFM2.5-2.6B (this model, fine-tuned): the best balance of tool-calling accuracy and speed — the "on-device agentic" model of the LFM2.5 family
  • Light 1.2B (odooclaw-light-1.2b-ft-mlx): faster and lighter, but lower accuracy on business/finance tasks
  • Medium 2.6B (this model): 94.2% conversation, 99.5% creation on 1000-case batteries — the most balanced model of the series

We deliberately chose the 2.6B for agentic workloads where the model reasons before every tool call — the extra accuracy is worth the small latency cost.

Why BF16

This is the unquantized reference of the model. Use it when you want the exact training weights:

  • No quantization loss — bit-exact reproduction of the fine-tuned checkpoint
  • Ideal for further fine-tuning, conversion, or evaluation as the ground truth
  • Requires ~5.4GB on disk / in memory (vs 1.5GB in 4-bit)

For day-to-day on-device inference, prefer the 4-bit MLX version — in our benchmarks it shows negligible quality loss at a fraction of the memory.

Evaluation (v18, 1000-case batteries)

Battery (1000) v18
Conversation (990) 94.2%
Creation (1000) 99.5%
Business (1000) 74.0%
Invoices (1000) 71.6%

The v18 is the most balanced model of the series: top-2 in all 4 categories at once, no tradeoffs. Trained with balanced distribution (matches evaluation) and natural variety.

Files

  • model-00001-of-00002.safetensors + model-00002-of-00002.safetensors (5.4GB total, BF16 / unquantized)
  • config.json, tokenizer.json, chat_template.jinja

Usage (mlx-lm)

pip install mlx-lm
python -c "
from mlx_lm import load, generate
model, tokenizer = load('nicolasramos/odooclaw-medium-2.6b-ft-mlx-bf16')
messages = [
{'role': 'system', 'content': 'Eres odooclaw, un asistente que gestiona Odoo ERP.'},
{'role': 'user', 'content': 'Busca el cliente Acme'},
]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
print(generate(model, tokenizer, prompt=prompt, max_tokens=100))
"

Output: <|tool_call_start|>[mcp_odoo-mcp_odoo_find(model='res.partner', domain=[["name",...])]<|tool_call_end|>

License

Apache 2.0 — free for everyone, that's the whole point.

Downloads last month
481
Safetensors
Model size
3B params
Tensor type
BF16
·
MLX
Hardware compatibility
Log In to add your hardware

Quantized

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for nicolasramos/odooclaw-medium-2.6b-ft-mlx-bf16

Finetuned
(35)
this model