OdooClaw Light 1.2B FT — MLX

An AI agent for Odoo that anyone can run — even on a Mac Mini with 8GB of RAM.

MLX 4-bit version (Apple Silicon) of the OdooClaw Light 1.2B FT model. Fine-tuned LFM2.5-1.2B-Instruct for tool calling inside Odoo (ERP) via MCP. Ask in natural language in the Odoo chat and the model picks the right Odoo tool.

Why this model

We tested the entire family of small models and chose the sweet spot:

  • LFM2.5-1.2B (this model, fine-tuned): correct tool calls, survives real multi-turn conversations, 628MB in 4-bit
  • Smaller models (0.35B): fast, but collapse with any conversation history — unacceptable for a chat
  • Bigger models (2.6B): work, but 2-4x slower on CPU and twice the memory

We deliberately traded a bit of raw latency for real conversation quality. A chat agent that forgets the previous turn is useless, no matter how fast it is.

What makes it work

  • Retrieval top-5: the gateway only injects the 5 most relevant tools per query (of 124 Odoo tools) — small models can't handle 124 schemas
  • Native tool calls: LFM2.5 emits <|tool_call_start|>[tool_name(arg='val')]<|tool_call_end|> — mlx_lm converts it to structured tool calls
  • Fine-tuned on 24K teacher-generated examples (local Qwen3.6 teacher, zero cloud cost), including multi-turn history examples
  • Deterministic record links: the gateway appends clickable /odoo/contacts/{id} links to responses

Performance (MLX, Apple Silicon)

Machine: Mac Mini M1, 8GB RAM, 8 cores — the cheapest Mac that runs Odoo:

Metric Value
Model load 0.4s
RAM used (RSS) ~1.1GB (of 8GB — leaves 7GB free)
Tool call ("Busca el cliente Acme") 1.2sfind_partner(name='Acme')
Tool call with conversation history 0.6s → survives multi-turn ✅
Generation speed 146.4 tok/s
Reference: MacBook M1 Max (32GB) 265.1 tok/s

Bottom line: an entire Odoo AI agent runs on the cheapest Apple Silicon Mac — 1.1GB of RAM, sub-second tool calls, even with conversation history.

Files

  • model.safetensors (628MB, 4-bit quantized)
  • 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-light-1.2b-ft-mlx')
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_partner(limit=10, name='Acme')]<|tool_call_end|>

License

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

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

4-bit

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

Model tree for nicolasramos/odooclaw-light-1.2b-ft-mlx

Quantized
(77)
this model