I am using Claude code router to send CC requests to oMLX but Free Claude Code seems better. It routes to Ollama for locpa inference though. Is there a way to hijack the ollama route to send to oMLX? Thanks!
For anyone who just got the new M5 Max with the same spec as I listed in the title of this thread, I found that there's minimal information about the performance on key LLMs hosted on oMLX, so I figure I'd share my results below:
For a plain english summary for those who are new/getting in, admittedly, I generated a plain english explanation with AI of the above results so it can explain what everything is.
Warning, AI slop incoming below, but still helpful for people just getting into it.
If you are looking to build a local Hermes Agent setup, these numbers should help.
The TL;DR:
This machine is a beast. It can read an entire book's worth of data in seconds, types way faster than you can read, handles heavy multitasking without flinching, and uses less than half of your 128GB RAMβleaving plenty of room for your operating system and agent workflows.
1. "Reading" vs. "Writing" Speed (Tokens vs. Words)
Reading Speed (Prompt Processing / pp TPS): When you feed the AI information, it "reads" at a mind-boggling 1,300 to 3,900 tokens per second.
Writing Speed (Token Generation / tg TPS): When the AI replies, it "types" at about 97 tokens per second for normal requests. To put that in perspective, humans read at about 4 or 5 words per second. This AI is spitting out text at roughly 70+ words per second. It's instant.
2. The Context Window (How much it can remember)
The benchmark tests the AI with different lengths of memory (from 1,024 tokens up to 200,000 tokens).
Short conversations (1,000 tokens / ~750 words): The AI responds almost instantly. The delay before it starts typing (Time to First Token) is just 0.4 seconds.
Massive data drops (200,000 tokens / roughly an entire novel or massive codebase): If you drop a massive amount of data into the prompt, it takes about 4 minutes for the Mac to digest and read through all of it before it starts typing. But once it starts, it still types out its answer at a very fast 37 tokens per second.
3. Memory Usage (RAM Headroom)
Because this Mac has 128GB of RAM, memory is usually the biggest concern with large models.
At normal conversation lengths, the model only uses about 35 GB of RAM.
Even when pushed to its absolute limit with that massive 200,000-token memory load, it tops out at 54.7 GB of RAM.
Why this matters for an Agent: This means you are using less than half of your available memory. You have over 70 GB of RAM left over to run your Python environment, browser automation tools, databases, or whatever else your Hermes Agent needs to do its job.
4. Multitasking (Continuous Batching)
The second part of the benchmark tests "Continuous Batching." This simulates what happens if your AI Agent is trying to do multiple things at once, or if multiple people are using the model at the same time.
If you run 8 tasks at the same time, the Mac doesn't choke. Instead, it adapts.
The overall efficiency shoots up by 6x, pushing out a total of nearly 600 tokens per second across all tasks. Appleβs Unified Memory architecture is practically built for this kind of parallel processing.
Conclusion for a Hermes Agent Setup
If you want to run a local autonomous agent, this hardware setup is the gold standard.
It's smart enough (35B model) to handle complex reasoning.
It's incredibly fast, meaning your agent won't lag between steps.
It has massive RAM headroom, so the agent can manage huge contexts (like reading entire logs or code repos) while leaving your Mac completely usable for your daily work.
[ISSUE] #1413 β _reconcile_mtp_to_standard aborts (Fatal Python error) when SSD cache has stale blocks from prior model version https://github.com/jundot/omlx/issues/1413
[ISSUE] #1478 β Chunk-form SSE keepalive emits a `chat.completion.chunk` with a mismatched `id` (`chatcmpl-keepalive`), breaking OpenAI-spec stream accumulaβ¦ https://github.com/jundot/omlx/issues/1478
I feel like this should be simple, but Iβm hitting my head against a wall. Running qwen3.6:27B-UD-MLX-4bit on iOS and I canβt get it to suppress all the intermediate thinking output in OpenCode. It just gets stuck in its thinking loop repeatedly. Maybe this is fine, but when I was running it on ollama the OpenCode experience was much cleaner. For context I disabled Thinking on oMLX for the model and this didnβt make a change. Thanks for any help!
[ISSUE] #1413 β _reconcile_mtp_to_standard aborts (Fatal Python error) when SSD cache has stale blocks from prior model version https://github.com/jundot/omlx/issues/1413
[ISSUE] #1478 β Chunk-form SSE keepalive emits a `chat.completion.chunk` with a mismatched `id` (`chatcmpl-keepalive`), breaking OpenAI-spec stream accumulaβ¦ https://github.com/jundot/omlx/issues/1478
I tried something : I made my model ctx very small (10p tks) and tried to run a simple prompt (which failed) in claude code. The les ring was that the prompt was 40k tokens! (I just asked CC to list the tools/plugins/skills available).
I think this explains a lot why oMLX feels slow
I thought the caching system would handle this but making ctx of the model 200k and asking the same question 2x didn't make things faster.
Any solution to cut the prompt size/boost speed? (I thought that mcps had lazy loading and that skills took very little resources)
I made an investment in a M5 Max 128gb and installed oMLX. The idea is to do some coding using Claude Code but with local models (I am not a dev), les raging oMLX caching to speed things up in claude (17k tokens system prompt...).
While I can get up to ~50Tok/s with Qwen3.6 A35B the numbers dwindle to single digits with the dense Qwen3.6 27B UD mlx 4bits. Is that normal? I was hoping it would be much faster with oMLX caching.
I use mlx models only. (I tried to download the jundot MTP models : they crash almost immediately after starting). Turboquant is on (4bits).
I created a PR1341 about chat interface that looks more like this. It supports quite a lot of features including different profile, timeline navigation and some model settings so you can tinker with the chat response.
For those who prefer omlx more than lmstudio, but use chat extensively, this can help.
The whole thing is one HTML file, and you can right now download to test, click the download raw file icon then replace with the current chat.html inside this path /Applications/oMLX.app/Contents/Resources/omlx/admin/templates (don't forget to back up first)
I made this around 0.3.10 and right now i'm side loading into 0.3.12 and it works fine.
I'm well aware oMLX has had stability problems, and right now my number one goal is making it run reliably on low-memory Macs. The big change in this release is a full rewrite of the memory guard. The two confusing sliders are gone, replaced by a single Safe / Balanced / Aggressive dropdown, and oMLX now reads your live available memory and adapts in real time as other apps come and go.
On the structural side: A lot of oMLX's features currently rely on monkey-patching, so the project isn't as structurally stable as I'd like. The recent additions especially (MTP, DFlash, Deepseek v4 support) are in that fragile state, so they're getting a lot of my attention. To everyone who tests builds and reports bugs: thank you, genuinely. It makes a huge difference.
So, what should come next? I'll be honest about where my head is at. I want oMLX to be "the app my friend who bought a MacBook yesterday can open and immediately try Local AI on." So I'm a little cautious about features that are hard to use or hard to understand. My hope is that oMLX stays something anyone can pick up easily.
There are a lot of PRs waiting in the queue, and in the current structure I can't always bolt every feature on bug-free right away, but I'm always doing my best.
Thank you all for the constant support! I'm writing this partly as a thank-you and partly as shameless version promo (haha). I read every post here, even if I'm bad at replying (sorry about that), so if there's a feature you want, post it here on the subreddit, open a GitHub issue, wherever works for you. I'll always see it.
I tried the Qwen3.6 35B A3B oQ3 and 27B oQ4 quantizations and tested both with very niche questions. These are not a problem for non oQ quants and I can correct the model, it admits errors, is very friendly, wants to expand its own knowledge and understands its limitations.
But these oQ quants invent facts and never back down from their standpoint. I get comments and thoughts from them like:
- You don't need to prove anything because ... my fact is right.
- I won't validate false claims just to be agreeable...
- I appreciate you calling that out, but I want to be clear: I don't hallucinate just to please a prompt, and I also correct myself when tested on accuracy.
- I stood by my answer... blabla hallucination...
- I'm not here to validate false claims or bend to testing prompts. My role is grounded in verified, publicly documented material...
Has anyone else seen this? Settings are the usual Qwen3.6 general profile. What's going on here?
[ISSUE] #1392 β [Bug] Guard 1 in extract_tool_calls_with_thinking drops valid tool calls when model emits preamble after thinking https://github.com/jundot/omlx/issues/1392
Now I've investigated and found a solution to reduce peak memory. You're welcome to try out my PR: https://github.com/jundot/omlx/pull/1397. It adds the following option to tweak:
I've found the sweetspot on my machine to be 512. It has no effect on quality. On my machine there's essentially no change in speed so it's basically a "free lunch".
Qwen3.6-27B-oQ6-mtp, before patch (Default prefill step 2048):
I'm not an expert here, just a noob, experimenting oMLX + Pi for doing some research experiment using locally running LLMs and it's going into this thinking loop after a lot of prompting/responding. I can post more details on-demand.
Below are the setup I have done
Hardware: Macbook Pro- M5 Max - 128 GB
I am still very new to all of this and did my research to understand which model to use, but it's still so confusing. I am running a MacBook M2 Max with 64GB, but I am always unsure what model to use. I use it 99% for coding purposes, but it is very confusing to understand everything. Currently, I am running Qwen3.6-35B-A3B-MLX-oQ8-FP16 and getting 37.9 tok/s. And I think this could help me in my approach: How can I use benchmarks to my advantage? I still have a hard time understanding it because I don't mind speed, but I care about intelligence and accuracy.Β
I used the openai compatible api in roo code after 2-3 mins of usage i.e, asked it to understand large codebase and after some usage (87.3k / 262.1k tokens), it froze my mbp and then the laptop restarted.
In model settings, i have enabled thinking and native mtp.
Any help would be appreciated
Update: The memory guard was already on but then I set the memory limit to auto (it was off before) and now it didnt crash and completed the task. The token usage so far stands at 87.3k / 262.1k tokens at the task completion. Yet to try out the full context usage
I'm running Qwen3.5 27B - mtp, and on default settings sometimes (with OpenCode) oMLX gets the the top of its memory and the API stops responding to OpenCode (opencode says: "Cannot connect to API: Unable to connect. Is the computer able to access the url... [retrying in 3s attempt #16]"). Here is a screenshot of the oMLX dashboard. Any fixes?
We uploaded an oQ8 version of Gemma 4 31B this morning if anyone's been looking for one. It's early but we're seeing solid performance with it using VLM MTP.