Production setup: MiniMax M2.5 as OpenClaw local brain with prefix caching + tool calling #104
Replies: 1 comment
|
This is exactly the kind of real-world deployment story we love to see—thank you for sharing it in such detail. Running MiniMax M2.5 as a local OpenClaw brain for multi-step tool use and automated workflows is genuinely impressive. Rapid-MLX has evolved quite a bit since v0.4.2. Notably, recent releases introduced opt-in prefix-extension reuse for hybrid Mamba/SSM and sliding-window models via If you upgrade and revisit Qwen 3.5 or another hybrid model, we’d love to hear how it impacts your heartbeat workload. Please feel free to DM me as well. If you have specific requirements, bottlenecks, or ideas around running OpenClaw locally, I’d be very happy to learn more and see how Rapid-MLX can better support what you’re doing. Thanks again for sharing such a thoughtful production setup! — Raullen |
Uh oh!
There was an error while loading. Please reload this page.
We've been running local LLMs as an OpenClaw sub-brain since February — started with Qwen3-32B, moved through Qwen3-Coder-Next, then a 235B MoE on llama.cpp. Each iteration taught us something. Today we landed on what feels like the right setup: MiniMax M2.5-4bit on Rapid-MLX with working prefix caching and streaming tool calls.
The Stack
mlx-community/MiniMax-M2.5-4bit(~129GB, 229B params, 10B active)openai-completionsAPI providerWhat It Handles
Performance
Why MiniMax M2.5
We tried several models along the way. The big learning was that model architecture matters more than parameters for caching on MLX.
MiniMax M2.5 is pure full-attention MoE — no Mamba layers, no sliding window. That's why prefix caching works. Qwen 3.5 models (all sizes) use Mamba/SSM hybrid layers, which means the recurrent state can't be trimmed at arbitrary token boundaries. Every request rebuilds from scratch. See mlx-lm issue #980 for the details.
Quick reference:
For agentic workloads with repeated system prompts (heartbeats, cron jobs), prefix caching is the difference between 8s and 1s per request. That 8x improvement compounds when you're running 48 heartbeats a day.
Things We Learned
Use Rapid-MLX, not upstream vllm-mlx. The PyPI vllm-mlx (waybarrios) doesn't parse tool calls in streaming mode — they come back as raw
<tool_call>text in the content field. Rapid-MLX fixes this.Use the right tool parser.
--tool-call-parser minimaxfor MiniMax. Not hermes, not qwen. Each model family has its own format.Set explicit timeouts for network operations. If your model runs SMTP/IMAP via exec, set
timeout: 60on the exec call andsocket.setdefaulttimeout(30)in Python scripts. Otherwise the framework may kill the process before the network operation completes.cache-memory-percent 0.40not 0.60 — MiniMax is 129GB, so you need to leave headroom on a 256GB machine.Happy to answer questions. The setup handles real production work — not just benchmarks.
All reactions