MojoPad

Local AI

Everything here runs on your own Mac. No accounts, no keys, no subscription, and nothing you write ever leaves the machine.

Two models, two different jobs

This is the one thing worth understanding before anything else, because the two get confused and they have almost nothing to do with each other. Settings ▸ AI has two rows:

Writing & answersSearch by meaning
What it doesWrites. Answers questions, summarises, drafts, explains, suggests.Finds. Works out which of your pages are about the same thing.
Where it comes fromOllama, which you install yourself.MojoPad brings one. You can use your own instead.
Without itEvery command is unavailable and says so.Related and search by meaning fall back to matching words instead.

So the row that goes blank when Ollama is not running is the top one, and that is correct — writing needs Ollama. Finding does not. If you have ever wondered why searching by meaning kept working while the AI said it was unavailable, that is why.

Which features need which

Only a writing model (Ollama required): Ask in every scope, ✦ Summarize, ✦ Suggest tags, Synthesis, Reflect in the Journal, ✦ Explain, ✦ Draft with AI, ✦ Group with AI, ✦ Break it down, ✦ Outline This Page, ✦ Draft from This Outline, territory names, and ✦ Why now.

Only a meaning model (works with nothing else installed): searching by meaning, Related by meaning, the suggestions that appear as you write, Rediscover, the graph's meaning edges, territory shapes, ghost threads on a board, and ✦ Arrange by meaning.

Both: mindmap grounding, the Journal's ✦ Beyond your notes and ✦ Where your notes disagree cards, background thinking, and questions about a long PDF or book.

Neither: ordinary search, links, tags, folders, the whole editor — everything MojoPad was before any of this existed. With no models at all, Related still works by comparing the words two pages share. It is cruder, and it is not nothing.

Setup

  1. Searching by meaning needs nothing installed. The first time you reach for it, MojoPad offers to fetch its own small model — about 35 MB, once, from Hugging Face — and after that it works here with no connection at all. Saying no is not permanent; you will be asked again the next time you reach for it.
  2. For anything that writes, install Ollama from ollama.com and pull a model: ollama pull qwen3 is a good current default. MojoPad prefers the newest capable one you have.
  3. Optionally, if you would rather MojoPad searched with your own model instead of its own, pull an embedding model — ollama pull mxbai-embed-large or nomic-embed-text — and pick it under Search by meaning.

What “Automatic” actually picks

The Search by meaning row offers Automatic, MojoPad's own, and any embedding models you have installed. Automatic is not a synonym for MojoPad's own — it means use one of mine if I have one:

  • You have your own embedding models. Automatic uses yours. MojoPad's own is never chosen for you, so upgrading never silently rebuilds an index you were happy with. To use ours, pick it by name.
  • You have none. Automatic uses MojoPad's own — once this Mac has agreed to fetch it. Until then nothing is indexed, which is the one confusing state: it says Automatic and nothing happens. Run a search by meaning and you will be asked, or choose MojoPad's own in Settings to be asked straight away.

If you keep Ollama on Automatic, pin your choice instead. On Automatic, quitting Ollama changes which model is in hand — and a different model means the index is rebuilt from scratch. Start Ollama again and it rebuilds back. A laptop that sleeps with Ollama off can churn through that repeatedly. Choosing a model by name is honoured without consulting Ollama at all, so pinning ends it.

Changing the meaning model

Nothing you wrote is at risk. What gets rebuilt is the index: two models do not produce comparable numbers, and measuring one against the other does not fail cleanly — it returns a confident score that means nothing. So MojoPad records which model built each index and refuses to mix them.

Three things follow. The rebuild is per wiki, and happens as you open each one, so a wiki you do not open keeps its old index. Every long PDF or book you have asked questions of is re-read on its next question, which on a large book is minutes rather than moments. And the model itself is fetched once for the whole Mac — it is the index that is per wiki, not the download.

Is MojoPad's own model worse than mine?

Probably, if yours is a large one, and that is the honest answer. Ours describes each passage with 384 numbers where a larger model uses a thousand or more, which leaves it less room to tell your pages apart. It exists so that somebody who has installed nothing is not left with a wiki that cannot find anything by meaning — which is what they had before — not because it beats what you already run.

It reads English. If you write in another language and have models of your own, use one that is trained for it: choose it under Search by meaning and the index will rebuild around it.

Two limits worth knowing

MojoPad's own model runs inside MojoPad, which has one consequence: anything reading your wiki from outside cannot use it. The browser extension's related by meaning suggestions and an AI agent's “which wiki knows about this?” both need an Ollama embedding model, because they run as their own small programs with no MojoPad window to borrow. Wikis indexed with MojoPad's own model are simply reported as unavailable to those two.

And in a password-protected document the meaning index is itself encrypted, encrypted pages stay out of it entirely, and an agent asking from outside cannot read it at all.

Bigger models are smarter, but they need a beefier Mac — more memory and more patience. A model runs from your Mac's memory, so as a rule of thumb its download size wants to fit comfortably in RAM with room to spare. A rough guide:

  • 8 GB — small models only (≈2–4 GB): qwen3:4b, llama3.2.
  • 16 GB — up to ~8B (≈5–9 GB): qwen3:8b, gpt-oss.
  • 32 GB — mid-size (≈14–20 GB): qwen3:14b, qwen3:32b.
  • 64 GB and up — the large ones (≈40 GB+): llama3.3:70b, big qwen3/gpt-oss builds.

When in doubt, start smaller — a snappy answer beats a brilliant one that takes a minute and makes the fans roar. MojoPad picks a model automatically; override it in Settings ▸ AI, or right in the AI drawer's header — a small dropdown by the close button lets you pick which model answers, or leave it on ✦ Auto.

Ask your wiki — the AI drawer

Click ✦ AI in the toolbar — or press ⇧⌘A — and MojoPad's assistant slides out in its own drawer on the right (drag its left edge to resize it — the width is remembered, and double-clicking the edge resets it). It opens with a greeting and a few starter prompts; ask a question in plain language and the answer streams back as formatted text, with the pages it drew from listed as source chips — click one to open that page right beside the chat. Follow-up questions keep their context, so “tell me more about the second one” just works, and the + New button by the input starts a fresh conversation. You can also select text in any page, right-click, and choose Ask Your Wiki about “…” to send it straight to the drawer.

The AI drawer: a scope picker in the input, cited answers, page tools, and Save as Page.

The scope picker in the input bar decides what you're asking:

  • My wiki grounds every answer in your own pages, with sources — a real multi-turn conversation.
  • This page scopes it to the page you have open — including PDF and ePub attachments, whose text is read on the fly. It reads the whole document: a 300-page book is indexed into sections on first use (you'll see the progress), and each question retrieves the most relevant passages. Ask about chapter 14 and it actually reads chapter 14. (Long-document questions need an embedding model — see Setup.) In this scope the drawer also offers one-tap ✦ Summarize this page and ✦ Suggest tags.
  • Journal answers only from your daily notes. Name a time in the question — “how was last week?”, “what was on my mind in June?”, “what changed since April?” — and exactly those days are read, all of them, not a search's best guesses. No time named? Your recent couple of months of written days are read by default. A short stretch is read whole; a long one — “how did this year go?” — is read in three-week stretches first, each condensed with your question in mind, so the final answer really has the whole year behind it (the status line shows it working through the stretches). Answers cite the days they drew from as chips — click one to open that day. Try: “what patterns keep showing up?”, “what did I say I'd do and never mention again?”
  • Anything asks the model directly — its own general knowledge, no retrieval — for a definition, a translation, or a starting point that isn't in your wiki yet.

All four stay entirely on your Mac, and MojoPad remembers which scope you used last. And the ✦ Persona chip beside the scope picker changes how answers are written — see AI Personas.

Citations you can check

An answer names the pages it drew on in square brackets. Every one of those names is checked, once, against the pages the answer was actually written from — so what you see is not the assistant's word for it:

  • A name that checks out becomes a link. Click it to open the page.
  • A name that is a page of yours the answer never read is still a link, shown differently, with a note underneath. The assistant recognised the name without having read it — worth knowing before you lean on the claim.
  • A name that is no page at all keeps its brackets exactly as written, marked with a ?. Nothing of yours goes by that name.

Underneath, the pages split into Cited — the ones the answer leaned on — and Also read, which were in front of it and never mentioned. The difference matters: a thin answer sitting under a long list of sources looks better supported than it is.

None of this asks the AI anything. It is plain name-matching, so it works the same whatever model you use, and it cannot itself be wrong in the way it is checking for.

Questions about everything

Some questions are not about a page, they are about the whole wiki — where do my notes disagree with each other? is the clearest example. Those cannot honestly be answered from the handful of pages that best match the words in the question.

Ask one and MojoPad says so, and offers the choice: read every page — in stages, condensing as it goes, which takes minutes of your own Mac's thinking and can be stopped at any point — or answer from the closest pages, which is quick. Nothing long ever starts without you asking for it. If the reading turns up nothing, it says that too, rather than assembling an answer out of whatever it happened to see.

Questions understand time. Ask “what was I working on in July?” or “summarize my notes from last quarter” and the drawer scopes its reading to that window — both when a note was written and when its content talks about that time. Follow-ups inherit the window until you name a new one, so “and what about August?” does what you'd hope.

Working with answers

  • ⊕ Pages — pin your sources. Pin pages to the conversation and every answer draws on them, whatever the search would have picked. The pins show as 📌 chips above the input; ✕ unpins, and a new conversation starts unpinned. Pins even ride along in Anything scope.
  • Follow-ups appear by themselves. After each answer, up to five tappable follow-up questions are suggested beneath it — tap one to keep the thread going.
  • Peek at a citation. Hover any source chip under an answer to preview that page in place; click to open it in the editor.
  • ⤵ Insert. Drop an answer into the page you're writing, right at the caret — formatted, with any embeds rendered.
  • ✦ Catch me up. The first suggestion in My wiki scope briefs you on everything you edited in the past week — grouped by theme, cited, with loose ends called out.
  • 🕘 Past conversations. Every conversation files itself — the moment it has an answer, it lands in history and stays there, so nothing is lost if you close the drawer, start a + New one, or quit and come back. The 🕘 button in the drawer's header brings back any of the last twenty: each is listed by its opening question, with when it was, how many questions it holds, who answered (the persona), and the trail of questions you asked — and the filter matches any question in a chat, not just its title, so a follow-up you remember finds the whole session. next to it saves the whole conversation as a page.

A good answer is worth keeping: press ↳ Save as Page beneath it and the answer becomes a real page — named after your question, the answer rendered, with a footer that records when you asked and links to the source pages. Those are ordinary wiki links, so the saved answer appears in the graph and in each source's Backlinks, exactly like a page you wrote yourself. Answers from Anything scope are stamped as the model's own knowledge instead — so future-you knows which pages came from your notes and which came from a machine.

Summarize and tag a page

In the drawer's This page scope, ✦ Summarize this page condenses the open page to bullet points — and it works on PDF and ePub attachments too. Long documents are summarized in full: the book is read part by part (progress ticks off in the chat), then the part summaries are distilled into one digest of the whole work. A full-length book takes some minutes of local crunching — start it, make coffee, come back to an executive summary. ✦ Suggest tags proposes tags you can add to the page with a click.

Semantic search and Related

This one needs nothing installed. Finding a page by what it is about, rather than by the words that happen to be in it, uses a small model MojoPad brings with it. The first time you ask for it, it says so and fetches the model once — about 35 MB, roughly a podcast episode — and after that it works here with no connection at all, and nothing you write is ever sent anywhere. Ask for pottery firing and the note that says fired the kiln overnight at cone six comes back, though it shares not one word with what you typed.

Which model is being used, and how to change it

The setting is Settings ▸ AI ▸ Search by meaning, and it offers three kinds of thing:

  • Automatic — the default. If you have your own models installed, one of those is used. MojoPad's own is used only when you have none. So if you already run models on this Mac, automatic means yours, not ours.
  • MojoPad's own — runs on this Mac — always offered, whether or not you have anything else. Choose this to use the small model MojoPad brings, even when your own models are available.
  • Models you have installed — pick a specific one by name. A larger one may read your writing more finely.

Changing this rebuilds each wiki's meaning index from scratch, quietly, in the background. Two models don't measure alike, so nothing carries over — see below.

Either way MojoPad indexes your pages (the index lives inside the document and updates as you edit). You get:

  • the “Related by meaning” section in Searching, and
  • the Related palette — pages whose content resembles the current one, with similarity bars. Old notes resurface exactly when they're relevant again.

More AI — beyond the drawer

Several of MojoPad's most useful AI features live outside the drawer:

  • Edit with AI. Select text, say what you want, and the local model proposes a rewrite you review and apply. See Edit with AI.
  • Dictation. Speak into a page or into the chat, fully on-device. See Dictation.
  • Fill in properties. The model reads a page and suggests values for your typed fields. See Properties.
  • The Graph is now an AI workspace. Open it (⌃⌘G) and the ✦ AI… menu lets you chat with your wiki (a multi-turn, cited conversation), group pages into AI-named Territories, Explain this graph, Find issues to fix, and suggest links and pages to create. See The Graph.
  • Links suggest themselves as you write. With an embedding model present, pausing mid-sentence surfaces existing pages your paragraph relates to by meaning — one click inserts the link. See Pages and Linking.

Both run on the same local model and embedding index as everything else here.

Telling what the AI made

So future-you always knows which pages came from your own hand and which MojoPad assembled, AI-built pages are marked in the list: an auto-built index page carries an accent , a Map of Content a , and answers you saved from Ask are flagged too. The page list's filter menu can show only AI-built pages, so a quick audit of “what did the machine write?” is one click away.

Privacy, precisely

Everything happens on this Mac. Encrypted pages are excluded from retrieval and indexing; in password-protected documents the semantic index is itself encrypted.

Changing the model rebuilds the index

Two models do not measure alike, so nothing carries over when you switch: the wiki's meaning index is built again from scratch, quietly, in the background. That is deliberate. Comparing numbers from one model against numbers from another does not produce a wrong answer you could spot — it produces a confident one that means nothing. So MojoPad records which model wrote each index and refuses to mix them.

If searching by meaning ever comes back empty when you expect something, Help ▸ Diagnostics names the model that built the index for each wiki, and how many pages are in it.