Jan earns the first paragraph, not a grudging mention at the bottom. It's the genuinely open-source app in local AI. The full desktop source sits on GitHub with around 43,000 stars, the license is Apache 2.0, there's no paid tier of any kind, and telemetry is opt-in at first launch with zero collection by default. If open source is your hard filter, Jan wins this comparison and you can stop reading.

We mean that, and the rest of this page depends on you believing it. An alternative pitch that pretends the openness doesn't matter would be lying about the one thing Jan does better than everyone in this category, including us. So here's the honest version. Jan got the license right and the architecture right. What sends people searching for an alternative is the list of things it doesn't do.

Is Jan open source and free?

Yes on both counts. Jan is Apache 2.0 licensed (relicensed from AGPLv3 in May 2025) with the full desktop app source on GitHub, and it's completely free, with no paid tier of any kind as of June 2026.

The privacy posture matches the license. Telemetry is a question Jan asks at first launch, it defaults to off, and nothing is collected until you say yes. Even opted in, what leaves your machine is daily-active and retention counts, not chats or prompts. You don't have to take any of this on faith because the code is right there to read.

That's a stronger auditability story than any closed-source app can tell, ours included. Hold that thought, because we'll come back to what a closed-source app can offer instead.

What did Jan get right architecturally?

Jan bundles llama.cpp directly in the app, serves a local OpenAI-compatible API on 127.0.0.1:1337, downloads plain GGUF models from Hugging Face, and takes your own keys for remote providers. The engine lives on your machine, the API is standard, and the files are standard.

This is the shape we'd argue every local AI app should have, and Jan committed to it earlier than most. The old Cortex engine layer was retired in July 2025, so llama.cpp is managed in-app now with no separate runtime to babysit. An experimental MLX engine landed in February 2026 for Apple Silicon, though it's still labeled experimental and doesn't run embeddings yet. The app itself is Tauri, shipping on Windows, macOS, and Linux from one codebase.

Point a script at port 1337 and it behaves like any OpenAI endpoint. Download a model and it's a file you can see. None of this sounds remarkable until you've used tools that hide weights behind hashed blob stores or quietly route a "local" feature through someone's cloud. We made the same architectural calls in ToolPiper for the same reasons. Plain files outlive the app that downloaded them, and a standard API means your scripts never care which engine answered.

Why do people look for a Jan alternative?

The common reasons are capability walls, not quality complaints. Jan has no voice features at all (no speech-to-text, no text-to-speech, no dictation), it consumes MCP tools but can't serve them to Claude Code or Cursor, its document Q&A is an inline attachment rather than an indexed RAG pipeline, and it has no system automation and no mobile app.

No voice, in either direction. Jan won't transcribe a meeting, won't read an answer aloud, and won't take dictation. As of v0.8.2 there's no STT or TTS anywhere in the app. If voice is part of how you want to use local AI, Jan has nothing to offer yet.

MCP runs one way. Jan is an MCP host. Plug servers into it and its models will call their tools, which is genuinely useful. What it can't do is the reverse - serve tools to an outside agent. Claude Code and Cursor can't reach your Mac through Jan, because there's no server side to connect to.

Documents go into context, not into an index. Attach a file to a chat and Jan puts its text in the prompt. Works fine for one PDF. It's not a knowledge base, though. There's no embedding index, no retrieval step, no asking one question across two hundred files.

Smaller walls exist too. MLX support is still experimental, so on Apple Silicon you're mostly on the Metal llama.cpp path. Jan chats, it doesn't act on your Mac, so there's no system automation to build on. And there's no mobile app, full stop.

Notice what's missing from that list. Nobody leaves Jan because the chat is bad or the engine is slow. They leave because the product stops at chat.

How does ToolPiper compare to Jan?

ToolPiper keeps the architecture Jan got right - an embedded upstream llama.cpp engine (build b9533), a local OpenAI-compatible API on localhost:9998, plain GGUF files - and adds the platform layer Jan doesn't have. That layer includes an MCP server with 300+ tools across 26 macOS domains, free transcription on the Neural Engine, push-to-talk dictation and three TTS engines on Pro, local indexed RAG, a visual pipeline builder, and 142 macOS system actions.

The free tier is the whole runner, no account required. ToolPiper embeds upstream llama-server directly, build b9533, the same engine llama.cpp ships. When llama.cpp improves, we pick it up on the next bump, unmodified. Models download from Hugging Face as plain named GGUF files, and chat, transcription, the pipeline builder, the local API, and the full MCP server all sit in the free tier with no caps.

The MCP server is where Jan's one-way wall falls. ToolPiper doesn't only consume tools, it serves them. Connect Claude Code or Cursor to your Mac and the agent gets file operations, window control, browser automation, and the rest of ToolPiper's 142 system actions as callable tools, drawn from a catalog of more than 300 across 26 macOS domains.

Voice exists at every point Jan leaves blank. Transcription runs free on the Neural Engine. Pro adds push-to-talk dictation anywhere on the Mac, about 140ms from key release to text in our testing, plus three text-to-speech engines. Document Q&A on Pro is an actual indexed pipeline, HNSW vectors plus BM25 keyword search over your files, so retrieval is a query instead of a paste.

Pipelines round out the free tier. A voice chat pipeline is three blocks on a canvas, speech-to-text into a language model into text-to-speech, and you drag the connections rather than write the glue code. Jan has no equivalent surface.

Now the trade-off, stated plainly. ToolPiper is closed source and macOS only. The openness Jan offers is real and we don't match it. You can't read our code, and there's no Windows or Linux build. What we offer instead is verifiability at the network layer: ToolPiper makes zero outbound calls, and unlike a source-code claim, that's a property you can check yourself with tools already on your Mac. We wrote up exactly how to verify it, and the method works on any app, Jan and ToolPiper alike.

Pricing is the other asymmetry, and it cuts both ways. Jan is free, full stop, with no paid offering as of June 2026. ToolPiper's runner is free with no account, and the platform features live in the paid tiers. Pro is $10/month for dictation, text-to-speech, local RAG, and all nine inference backends. Studio is $29 for media tools. Max is $49 for dev tools.

When is Jan the better pick?

Pick Jan when open source is a hard requirement, when you work on Windows or Linux, when your budget for paid tiers is zero, or when you want to read and patch the code you run.

None of those are edge cases. Plenty of teams hold an open-source-only policy for anything that touches their data, and Jan clears that bar where we can't. Cross-platform consistency is real value if your machines aren't all Macs. And if your needs end at chatting with a local model plus your own API keys, Jan already covers them, free, and the alternative question never needs to come up.

The switch makes sense when the gaps above are your daily work. Voice, agents that can act on your Mac, retrieval across a real document set, automation. Those aren't patches away in Jan, they're absent layers.

Try them side by side

Nothing about this choice requires uninstalling anything. Jan serves its API on 127.0.0.1:1337, ToolPiper serves on localhost:9998, and they coexist on the same Mac while you decide. Download ToolPiper at modelpiper.com/download, let the starter model arrive, and try the things Jan can't do yet. Dictate into any text field. Wire the MCP server into Claude Code. Ask one question across a folder of files. If the platform layer earns its keep, the paid-tier decision comes later, on your schedule. If it doesn't, you've lost nothing but the download time, and Jan was the right answer all along.

The full feature-by-feature table is in Jan vs ToolPiper. For the wider field, see five local AI platforms compared. The verification method behind our privacy claim is in how to verify an AI app is really offline.