Product Thumbnail

BaseRT

6.4x faster than llama.cpp, 3.9x faster than MLX

Open Source
Artificial Intelligence
Apple
Visit WebsiteSee on Product HuntTwitter

Hunted byLukas WesemannLukas Wesemann

BaseRT is the fastest LLM runtime on Apple Silicon. Install it with one command and run local models on your own device.

Top comment

Hey Product Hunt! Lukas here, co-founder of BaseRT. TLDR: a new performance ceiling for LLMs on Apple's M5 Pro. The M5 introduces a new tensor core architecture, exposed through the Metal 4 tensor API. We tuned BaseRT to use all of it. The results: Up to 6.3× faster prompt processing (prefill) than llama.cpp Up to 3.9× faster prefill than MLX Tested on 10 configs across Qwen3/3.5/3.6, Llama 3.2, and Gemma 4, from 0.6B to 35B params We built BaseRT because we think on-device inference is about to matter a lot, and Apple silicon is the best consumer hardware to run it on. The software just hasn't been keeping up with the chips, and we're trying to close that gap. Happy to answer anything about the benchmarks, the Metal 4 tensor API, or where we're headed next. Would love your feedback, and if you've got an M5, try it and tell us what numbers you get.

Comment highlights

The 3.9x over MLX claim caught my eye — is that mostly custom Metal kernels or smarter KV-cache handling? And does the speedup hold for long-context prompt processing, or mainly decode? Running models locally is fast becoming my default for anything privacy-sensitive, so this is timely.

The speed numbers are impressive, especially on Apple hardware. For teams deciding between llama.cpp, MLX, and BaseRT, what is the tradeoff in model coverage or quantization support? I would love to know where you see BaseRT fitting in a production local-inference stack.

the Metal 4 tensor core optimization is the interesting part here. most local inference tools treat Apple Silicon as a nice-to-have but you're actually building for it as the primary target. curious how the performance scales with context length — prefill speed is great but does it hold up at 32k+ tokens?

The discussion's focused heavily on prefill vs. decode, but there's a third axis worth thinking about for Apple Silicon specifically: unified memory's effect on how many models you can keep resident simultaneously. llama.cpp and MLX both require fairly explicit load/unload, and on a machine where you might want a small coding model, a larger reasoning model, and an embedding model all warm at once, the round-trip cost of loading from disk breaks the local-first experience more than raw token throughput does. Is BaseRT doing anything with model-weight sharing or partial preloading, or is that a separate problem from what you've optimized?

On-device inference is exactly the direction I keep hoping more indie apps can go — no per-token bill and privacy by default is a big deal. Is BaseRT meant to be embedded inside a shipping Mac/iOS app, or is it more of a dev/CLI runtime for now? That'd decide whether I could actually bundle it into my own app.

6.4x over llama.cpp is a big claim for a field this optimized — where does the speedup actually come from? Custom Metal kernels, better KV-cache layout, speculative decoding, or quantization formats? And does the gap hold at batch-1 decode on long contexts, or is it mostly a prefill win? Genuinely curious — we run local models for dev work and llama.cpp has been the default for so long that a 6x claim deserves a look.

6.4x faster than llama.cpp is a big claim — what's the tradeoff? Curious whether it's fast enough to run a real-time voice pipeline on-device (where every 100ms of latency is felt), or if the win is mainly on batch/throughput. Running local with no token cost + full privacy is a huge deal for small-business use cases. Following.

Very interesting work. It feels like we're finally seeing software catch up to what Apple Silicon has been capable of for a while.

One thing I'm curious about: if an application needs to switch between different models depending on latency or quality requirements, does BaseRT help manage that orchestration, or is that intentionally left to the application layer?

the no-per-token part matters as much as the speed imo, it's what makes always-on background agents affordable to run. is that the direction you're headed?

the prefill numbers are impressive, but prefill isn't usually where I feel the wait on a laptop - it's token-by-token decode speed during a long generation. is the decode-side speedup in the same range as prefill, or is that gap smaller since decode is more memory-bandwidth bound than compute bound?

@lukas_base Benchmarks you posted seems to be prefill numbers. do you have decode or token generation throughput comparisons against llama.cpp and MLX too, or is most of the gain concentrated in prompt processing rather than generation speed? Thanks!

Tuning specifically for the M5's new tensor cores through the Metal 4 API, instead of just optimizing existing kernels, is a genuinely sharp bet given how far the hardware has pulled ahead of the software stack. Your published numbers highlight prefill speed specifically, so how much does decode/token-generation throughput improve on M5 versus llama.cpp and MLX, since that's usually the bottleneck for longer, more conversational or agentic workloads?

@lukas_base Just a quick question how does it compare to LiteRT? It is no secret that MLX and llama.cpp are falling behind but we already have a great architecture from Google.

Installed it on my M2 and pulled a 7B model in under a minute, felt snappy even on battery. Nice to skip the per-token bill without cooking my laptop.

curious how it handles model swapping on the fly, like dropping into a bigger LLM only when a prompt clearly needs it. A simple toggle or auto-routing between something like Llama 3 8B and 70B based on the task would be a really nice touch for battery life on MacBooks.

Took a few minutes to set up on my M2 and the speed genuinely surprised me compared to other runtimes I've tried. Love that everything stays on device, no tokens flying off to some server.

One thing I'd love to see is a simple built-in model downloader so I can grab and switch between popular open weights from the CLI without hunting for GGUF files manually. That would make testing new models way smoother.

Love how simple the install is and the speed on my M2 is genuinely impressive. One thing that would make this even better is a built-in model benchmark tool so you can see tokens/sec for different models on your specific hardware right from the CLI.

About BaseRT on Product Hunt

6.4x faster than llama.cpp, 3.9x faster than MLX

BaseRT launched on Product Hunt on July 19th, 2026 and earned 238 upvotes and 45 comments, placing #4 on the daily leaderboard. BaseRT is the fastest LLM runtime on Apple Silicon. Install it with one command and run local models on your own device.

BaseRT was featured in Open Source (68.6k followers), Artificial Intelligence (474.3k followers) and Apple (15.5k followers) on Product Hunt. Together, these topics include over 128.3k products, making this a competitive space to launch in.

Who hunted BaseRT?

BaseRT was hunted by Lukas Wesemann. A “hunter” on Product Hunt is the community member who submits a product to the platform — uploading the images, the link, and tagging the makers behind it. Hunters typically write the first comment explaining why a product is worth attention, and their followers are notified the moment they post. Around 79% of featured launches on Product Hunt are self-hunted by their makers, but a well-known hunter still acts as a signal of quality to the rest of the community. See the full all-time top hunters leaderboard to discover who is shaping the Product Hunt ecosystem.

Want to see how BaseRT stacked up against nearby launches in real time? Check out the live launch dashboard for upvote speed charts, proximity comparisons, and more analytics.