Most comparison pages start from a disagreement. This one can't. Jan and ToolPiper made the same architectural bets - bundle llama.cpp instead of wrapping someone else's daemon, serve a local OpenAI-compatible API, store models as plain GGUF files, keep inference on your machine. Put the two design philosophies side by side and the first half reads like the same document.

Which makes the decision unusually clean. The apps split on exactly two axes, openness and scope, and you probably already know which one you care about more. Jan is fully open source and ToolPiper isn't. ToolPiper is a platform around its engine and Jan, deliberately, isn't.

If open source is a requirement, does Jan win?

Yes. Jan is Apache 2.0 with the complete desktop app source on GitHub, around 43,000 stars, no paid tier of any kind, and opt-in telemetry that's off by default. ToolPiper is closed source, so if open source is your filter, Jan wins this comparison and you can stop reading.

We mean that without a wink. Jan relicensed from AGPL to Apache 2.0 in May 2025, the permissive direction, the one that makes the code more usable rather than less. Its telemetry posture is the one privacy-minded users should demand from an OSS project: nothing collected by default, an explicit opt-in at first launch, and even when you opt in it's PostHog EU recording daily-active and retention counts, not chats or prompts. You can read the code and confirm all of it. That's a stronger auditability story than any closed-source app can offer, including ours.

What ToolPiper offers instead is verifiability at a different layer. The app makes zero outbound calls - no telemetry, no analytics, no account check-ins - and you don't have to take that on trust, because sockets are facts. Open Activity Monitor or run lsof while a chat streams and watch nothing leave the machine. We wrote the full procedure in how to verify an AI app is really offline. Reading source tells you what an app was built to do. Watching its sockets tells you what it's doing right now. Jan gives you the first. We give you the second.

What do Jan and ToolPiper agree on?

Both apps bundle llama.cpp directly, serve a local OpenAI-compatible API (Jan on 127.0.0.1:1337, ToolPiper on localhost:9998), download standard GGUF files from Hugging Face, and run inference entirely on-device. The shared thesis is that local AI should be an app you open, not a server you administer.

That agreement is worth pausing on, because it's rare in this category. Plenty of polished Mac AI apps are clients for engines that live elsewhere. Jan and ToolPiper both decided the engine belongs inside the app. Jan v0.8.2 (June 2026) manages llama.cpp in-app - and if you've read older write-ups describing Jan running on Cortex, that's a year stale. Jan deprecated Cortex at the end of July 2025 and has driven llama.cpp directly since. ToolPiper embeds the upstream llama-server binary, build b9533, unmodified.

The overlap runs further. Both take BYOK cloud keys when you want a frontier model - Jan added Anthropic-compatible custom providers in v0.8.1, and ToolPiper covers the major providers. Both store models as ordinary GGUF files any other llama.cpp tool can load. Neither requires an account to chat. If your entire requirement is a local model, a chat window, and an API for your scripts, either app does the job and this page gets short.

There's a practical payoff to the shared format, too. Because both apps store plain GGUF, switching between them costs nothing but a file path. Download a model through Jan and point ToolPiper at the file, or the reverse - no export step, no blob store to dig through. Two products that can read each other's model folders is not the norm in this category, and it means trying both before deciding costs you one download, not two.

Where do they diverge on scope?

Jan is an inference engine plus a chat app: conversations, assistants, projects, and a CLI. ToolPiper is an inference engine plus a platform: an MCP server exposing 300+ tools across 26 macOS domains, voice on the Neural Engine, indexed local RAG, a visual pipeline builder, and 142 macOS system actions.

The MCP direction is the sharpest single difference. Both apps speak MCP, on opposite sides of the protocol. Jan is a host - it consumes MCP servers, so tools other people built show up in Jan's chats. ToolPiper consumes servers too, and it's also a server itself. Claude Code, Cursor, or any MCP client connects to it and inherits 300+ tools on your Mac - clipboard, calendar, browser automation, screenshots, audio, file search. Jan can use tools. ToolPiper can be the tools.

Voice doesn't exist in Jan. No transcription, no text-to-speech, no dictation, no voice mode - the changelog through v0.8.2 has no voice surface at all. ToolPiper ships transcription free on the Neural Engine, and Pro adds push-to-talk dictation into any Mac app (about 140ms from key release to text in our testing) plus three TTS engines. If you talk to your computer, this axis alone decides the page.

Document Q&A is a quieter gap with the same shape. Jan attaches a file inline - the document's text goes into the context window alongside your question. That works for one PDF. It isn't an index, so it can't scale to a folder of contracts or a year of notes. ToolPiper's local RAG (Pro) builds a real retrieval pipeline, an HNSW vector index plus BM25 keyword search over your files, so the relevant passages are found before the model sees a token. There's a wrinkle on Jan's side here too: its experimental MLX backend doesn't do embeddings, so even if Jan added indexed RAG tomorrow, the MLX path couldn't power it yet.

Then there are the parts with no Jan equivalent at all - a visual pipeline builder (free) for chaining models into workflows, and 142 macOS system actions an agent can invoke. None of this is a criticism of Jan. Menlo Research scoped a chat app and built a good one. It's a different answer to the question of what should sit on top of the engine.

Where is Jan better?

Five places, plainly.

Open source. Covered above, and it belongs on this list anyway because it's the biggest one. Full app source, Apache 2.0, a public issue tracker where problems get worked in the open. Closed-source apps don't get to match this, and we don't pretend to.

Cross-platform. Jan ships on Windows, macOS, and Linux from one Tauri codebase. ToolPiper is macOS-only. If your machines are mixed, Jan covers all of them today.

Zero cost, full stop. Jan has no paid tier. ToolPiper's runner is free too, but the voice, RAG, and media layers cost $10 to $49 a month. With Jan there's no upsell because there's nothing to upsell.

In-house model research. Menlo Research trains and ships its own small models - Jan-nano, Jan-v1-4B, Jan-v2-VL - tuned for the app they run in. A model lab attached to the product is something we don't match.

MLX experimentation. Jan has shipped an experimental native MLX backend since v0.7.7 in February 2026. It's early (no embeddings yet, hence the RAG wrinkle above), but it's a second engine on Apple Silicon. ToolPiper runs one engine, llama.cpp, and bets on tracking upstream closely instead.

What do they actually cost?

Jan is free with no paid tier of any kind. ToolPiper's runner, chat, transcription, pipelines, and MCP server are free with no account, and the paid tiers are Pro at $10/month, Studio at $29, and Max at $49.

At budget zero the two apps are closer than this page's length suggests. What's free in ToolPiper is the whole engine surface - downloads, multi-model switching, the localhost API - plus MCP serving, transcription, and pipelines. Money only enters for capabilities Jan doesn't have a version of: dictation, TTS, indexed RAG, media tools, dev tools. The paid tiers don't gate anything Jan offers for free. They gate things Jan doesn't offer at all.

Which one should you pick?

Pick Jan if open source is a requirement, if you run Windows or Linux alongside your Mac, or if the budget is zero and stays zero. You'll get the same local-first architecture we'd have chosen, because we chose it too.

Pick ToolPiper if voice matters, if you want your Mac to serve tools to Claude Code or another agent instead of only chatting, if your documents need a real index rather than an attachment, or if you want engine, automation, and voice in one native Mac app.

They also compose. Both serve OpenAI-compatible APIs, so any client that talks to one talks to the other. And since Jan is an MCP host and ToolPiper is an MCP server, you can point Jan at ToolPiper's MCP endpoint and chat in Jan with ToolPiper's 300+ tools behind it.

Download ToolPiper at modelpiper.com/download - free, no account, chatting with a local model in about a minute.

See also the switcher's view of this matchup in Jan AI Alternative for Mac, and the same head-to-head against LM Studio.