MojoPad

Local AI

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

That is the default and it is what most people should stay on. There is one exception, and it is switched off until you switch it on yourself: Bring your own model, further down this chapter, which lets you borrow a large model when your Mac cannot run one worth using. It changes the sentence above, so it is spelled out there in full.

Choosing which model writes

Settings ▸ AI ▸ Writing & answers lists everything that can answer, in three groups: your own agent, the models on this Mac, and the ones you set up in Settings. Choosing one there is the standing answer for everything the app writes; the chooser in the Ask panel changes it for one question.

The three groups exist because they are three different things and the difference is the whole choice. A model on this Mac answers here and nothing leaves. One you set up answers wherever you pointed it, so the question travels. Your own agent runs here and sends. A half-finished entry — one with no model name against it — is not offered at all, because it cannot answer.

With nothing installed on this Mac the list still works, as long as you have set something up.

If a question comes back saying the model could not answer here, it is one of two things: that wiki has not been allowed to send questions away, or the entry has no address. The first is a question you are asked once per wiki and can change in Settings ▸ Sharing under what you have agreed to; the second is a row in Settings ▸ AI to finish.

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, summarizes, drafts, explains, suggests.Finds. Works out which of your pages are about the same thing.
Where it comes fromOllama, which you install yourself — or a model you set up in Settings, which answers from wherever you point it.MojoPad brings one. You can use your own instead.
Without itEvery command is unavailable and says so — unless you have set a model up in Settings, which can answer instead.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.

What language answers come back in

Whatever language you write in. Ask in Dutch and the answer is in Dutch; ask in English and it is in English. You do not have to set anything, and most people never will.

It is worth knowing why there is a setting at all. A model is told which language to use, and a small one can quietly ignore being told — some lean toward the language they were trained in, which is how somebody who does not speak French ends up reading French. If that happens to you, set Answer in in Settings ▸ AI to the language you want. Every answer then comes back in that one, whatever the question or your notes are written in, and the model is given no room to decide otherwise.

It is also the setting to use if you deliberately want answers in a language you are not writing in — reading Spanish sources and wanting the summary in English, say.

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.

Turning it off entirely

Not everybody wants any of this, and some work should not go near a model at all. Settings ▶ AI ▶ Use no AI at all switches off the whole of it: nothing is generated, nothing is indexed by meaning, no model is loaded, and every button, menu item and panel that offered either one goes away. What is left is the app described in the paragraph above — writing, links, tags, folders, search, tasks, publishing.

It reaches the browser too. If you use the Clip to MojoPad extension, the related by meaning suggestions about pages you visit are read by a separate helper that Chrome starts — not by the app — so switching models off in Settings would once have left it running. It no longer does: the switch stops it, immediately, and the plain name-matching highlights carry on without a model.

What stays is the record, not the offer. Nothing you have already made is touched, and the marks saying where something came from stay put — the ✦ Synthesis badge, the ❖ ✦ ✧ marks in the page list, the sources chip. That is deliberate. A wiki that used AI should not be able to pretend it never did, least of all to the person reading it a year later. What goes is every offer to make more: the follow-up questions inside an answer card are doors to a room that is now shut, so they go with it. Turn the switch back off and all of it returns.

Or refuse it for one wiki. Open the Info palette, and under Document check Use no AI in this wiki. That travels with the wiki rather than with this Mac, so a set of records that should never meet a model keeps refusing wherever it is opened — including on a machine where the app-wide setting says yes. Either switch being on is enough: the two never argue, and the quieter answer always wins.

Nothing you already made is touched. Pages written with AI, saved answers, synthesis pages — all ordinary pages, still there, still readable, still searchable. Only the offer to make more of them goes. Turn it back on and everything returns exactly where it was.

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, you need Ollama and a model — and MojoPad will do the whole thing for you, including choosing a model that fits this Mac. See Getting Started with Ollama; it takes about two minutes and no command line. (If you would rather do it by hand, install Ollama from ollama.com and run ollama pull qwen3. MojoPad prefers the newest capable one you have, however it arrived.)
  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 right 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 honored 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.

You do not have to work this out yourself. Settings ▸ AI reads the memory in this Mac and says, in one line, roughly how large a model it can run — and, if that number is small, says plainly what a model that size will and will not do well. It is there whether or not you have installed anything.

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.

Bring your own model

You write in Dutch, on an 8 GB MacBook Air. The largest model that fits answers passably in English and mangles everything else — it rephrases your sentences into something you would not sign your name to, and asked a question in your own language it replies in an approximate version of it. You have tried three models. They are all the same. That is not a setting you have got wrong: a model needs roughly three quarters of a gigabyte of memory for every billion parameters it has, so your Mac's ceiling is the ceiling, and small models are weakest at exactly the two things — rephrasing and languages other than English — you needed most.

Or: the material is not sensitive and you already pay for a good model. Your wiki is lecture notes and reading summaries, you have a key for a large model, and you would rather ask it than run anything locally at all.

Both are the same answer. Settings ▸ AI ▸ Bring your own model lets the questions you ask be answered by a model somewhere else, using your own key.

What becomes true when you turn it on

This is the part to read properly, once. Checking that box changes the promise this chapter opens with, and it changes it in a specific and limited way.

  • Your writing leaves this Mac. When you ask a question, the pages that question is about go to the company whose key you entered. People there can read that text. Whether it is logged, kept, or used to train anything is their decision and governed by whatever you agreed to when you got the key. MojoPad has no say in it and cannot promise anything about it.
  • Only what you ask. Everything MojoPad does on its own stays here regardless — indexing, searching by meaning, Related, Rediscover, resurfacing, the background thinking, the suggestions that appear as you write. Those are the great majority of what the AI does, they run while you are away, and none of them is ever sent anywhere. Nothing goes out while nobody is looking, and you are never billed for work you did not ask for.
  • Search by meaning never goes. The meaning index is built on this Mac, always, with a local model. So your wiki is never swept through wholesale — what goes out is the handful of pages behind one question you typed.
  • Locked pages never go. A page you have put a password on does not enter an AI prompt at all, here or locally, so it cannot be sent.
  • They bill you. Every question costs whatever your provider charges. MojoPad does not meter it, cap it, or warn you about it.
  • It is decided per wiki, not once for everything. Turning this on does not open every wiki you keep. The first time you ask a question in a particular one, MojoPad asks whether that wiki may send — and remembers that answer — yes or no — for it alone. So a personal journal can stay on this Mac permanently while a research wiki answers from your model, with one key and one setting between them. A wiki you never permit cannot send its pages, whatever the switch says.
  • It is reversible in one click. Uncheck the box and the next answer comes from this Mac. Clear the key and it is erased. Ask every wiki again… forgets the per-wiki permissions, so each is asked afresh.

What "opening your wiki to a model" actually means

Worth a minute, because the thing people underestimate is not the idea — it is the amount.

A question is not one page. When you ask your wiki something, MojoPad finds the pages most related to the question and sends those, up to nine of them, so the answer can be grounded in what you actually wrote. You are not choosing which ones. The retrieval is. So a question you think of as being about one subject can carry pages you had not thought about in years, because they turned out to be related. Over a few weeks of asking, a fair proportion of a working wiki can pass through a provider one handful at a time.

You cannot take it back. Deleting a page afterwards does not unsend it. Whatever your provider logged, it still has. Turning the setting off stops the next question; it does nothing about the last one.

Free tiers are usually a different bargain from paid ones. Several providers treat what you send on a free key as material they may use to improve their models, while the same company's paid API does not. That is a real and common difference, it is theirs to change, and it is written in their terms rather than ours. Read that page once before you paste the key, not after.

The wiki is the boundary, and you choose it wiki by wiki. Retrieval only ever reads the document you have open, so whatever a question can reach is bounded by the wiki you asked it in — and MojoPad asks, once per wiki, before any of them sends anything. That is the practical answer to most of the paragraph above: keep the material you are careful about in its own wiki, never permit that one, and the question never arises again.

Some material is not yours to send. Notes about a client, a patient, a student; anything covered by an employer's policy, a confidentiality agreement, research ethics approval, or a data-protection obligation. Sending it to a third party may breach something you agreed to, and MojoPad has no way of knowing when that is the case — it cannot tell a shopping list from a case file. If any of this describes what is in your wiki, the honest answer is either to leave the setting off, or to put that material in password-protected pages, which are never sent with the setting on or off.

What MojoPad can and cannot do for you here. We can promise what our own code does: only what you ask leaves, locked pages never leave, the meaning index stays here, and turning it off works immediately. We can promise nothing at all about the company on the other end — not what they keep, not what they train on, not whether they are up, not what they charge you, and not whether their answer is any good. There is no relationship between MojoPad and your provider; the arrangement is between you and them, and their terms are the ones that govern it.

Setting it up

  1. Get a key from a provider. The table below says where, for the common ones.
  2. Settings ▸ AI, scroll to Bring your own model, and check the box. You will be asked to confirm — that is the disclosure above, in short.
  3. Press + Add a model.
  4. Choose your provider from the list. That fills in the address for you and tells you where that provider issues keys. Choose Something else to type an address yourself.
  5. Type the model name exactly as your provider spells it, and paste your key.
  6. Give it a name of your own — whatever you would call it when choosing between them. This is the name you will see in the Ask panel, so "the good one" beats the provider's spelling.
  7. Press Test it. It sends one throwaway question and reports back. If something is wrong it says which thing — a refused key, an address that does not exist, a provider out of quota — rather than a number to look up.

More than one

Set up as many as you want. A fast cheap one for rephrasing and a slow expensive one for the hard questions is the usual pair; a third for a provider you are trying out is common enough. Each keeps its own address, its own model name, its own key and the name you gave it, and they do not interfere with each other.

One of them is the default — marked in the list, and used for every question you do not say otherwise about. Change which one from the same list.

And any single question can go elsewhere. The chooser in the Ask panel lists everything that can answer: your own agent, then the models installed on this Mac, then the ones you set up in Settings, each under a heading of its own — because those are three different things and the difference is what you are choosing between. Pick one and it answers that question; the wiki remembers your last choice, so a wiki where you always want the expensive one stays that way without being told twice.

What the box says is what answers. That is the whole rule, and it has no exceptions worth remembering. A persona may be paired with a model, and two of the built-in ones ask for your fastest or your deepest — but those are what ✦ Auto resolves to, never something that overrules a model you picked yourself. Choose one in the panel and it answers, whatever persona is in force. Leave the panel on Auto and the persona's own pairing decides, then its preference for speed or depth, then MojoPad picks a sensible one.

A model you cannot use is not offered. An entry you started setting up and never gave an address to is left out of the list, and so are all of them while the switch above them is off — a name you can pick but nothing can answer with is worse than a shorter list.

Where a question is going is on screen while you type it. When an answer would leave this Mac, a mark beside the persona says so and names the model that will answer — not "a model", the name you gave it. When it would not, there is nothing there: the quiet case needs no badge, and the state worth being told about is the one you can forget you are in.

Keys are never in your settings file. They are encrypted by your Mac and kept in a file of their own, so copying settings to another machine or sending a diagnostics report carries none of them. A key you have already typed is never shown back to you — there is nothing to read, only Forget it, which removes it.

Removing a model removes its key with it. Nothing is left behind for a model that is no longer in the list.

The providers, one line each

These are the addresses as each provider publishes them. You do not need to type them — the list in Settings fills them in — but here they are for reference, and for anyone setting up something not on the list.

ProviderAddressWhere the key comes from
OpenAIhttps://api.openai.com/v1 platform.openai.com ▸ API keys
Google Geminihttps://generativelanguage.googleapis.com/v1beta/openai/ aistudio.google.com ▸ Get API key — has a free tier
Claudehttps://api.anthropic.com/v1/ console.anthropic.com ▸ API keys
OpenRouterhttps://openrouter.ai/api/v1 openrouter.ai ▸ Keys — one key, most models
Groqhttps://api.groq.com/openai/v1 console.groq.com ▸ API keys
A Mac of your own
running Ollama
http://name-of-that-mac.local:11434/v1 none needed — see the note below
A Mac of your own
running LM Studio
http://name-of-that-mac.local:1234/v1 none needed — see the note below

The model name is the part that changes. Addresses stay put for years; model names change every few months, so rather than print a list that will be wrong by winter: open your provider's model page, and use the name exactly as written there — gemini-3.6-flash and claude-opus-5 are the shape of it. If the name is wrong, Test it says the model was not found, which is the quickest way to check you have it right.

Pointing at your own second machine? Use that computer's name on your network rather than localhost, make sure its server is set to accept connections from other machines, and put any word at all in the Key box — a local server does not check it, but MojoPad will not send anything until all three boxes have something in them. That is deliberate: half a setup should fail here, not half way through your question.

The reason there is a list rather than a menu of companies is that MojoPad speaks one request shape, the one nearly every provider answers. An address and a key is all a provider is. That is also why something not on the list very likely works anyway — try it.

Knowing which machine answered

While this is on, the AI drawer carries a chip in the same row as the scope and the persona, naming the model your questions are going to. It is colored, it is only ever there when answers are leaving this Mac, and clicking it opens Settings. This is deliberate — being unsure which state you are in is the one thing that would make the setting a bad idea.

Help ▸ Save Diagnostic Report… has a matching section, Where answers come from, which reports the same thing in words, names the host and model, and confirms what is still running locally. It never includes your key or anything you wrote.

Where your key is kept

Encrypted by macOS, in a file of its own, deliberately not in the settings file. Settings are plain text that people copy between machines, attach to support emails, and sweep up in backups; a key is a credential and does not belong in a file that travels like that. MojoPad never sends the key back to the window you typed it into either — once saved, the field shows only that a key is held.

If you would rather not

Then leave it alone, which is where it already is, and nothing about MojoPad changes. If your Mac is on the small side and you want the best local result: prefer a smaller, newer model over a larger, older one, keep questions to one page or a few rather than the whole wiki, and remember that search by meaning and everything built on it work perfectly well regardless — those never needed the writing model at all.

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; hover that edge for a chevron, or double-click the edge itself, to put the drawer away with its width kept, and ✦ AI brings it back). 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 where the answer may look. It shows the one in force — click it and the four choices open in a short menu, with a check beside the one you're on. Most people set this once and forget it, which is why it takes a single word of the bar rather than four:

  • 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 steps outside your wiki — for a definition, a translation, or a starting point that isn't in your notes yet. It searches the web, so a question about something current gets a current answer, with the addresses it drew on listed under it. It uses whichever search you have set up in Settings, and free sources if you have set up none. Where there is nothing to check something against it says so rather than guessing, and if you are asking with your own agent it does its own searching, which it is better at.

All four read your pages here on your Mac, and MojoPad remembers which scope you used last. (If you have turned on Bring your own model and permitted this wiki, above, the question and the pages it draws on are what gets sent — the retrieval that chooses those pages still happens here.) 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 recognized 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.

It knows what day it is

Every answer is told today's date. Without it a model cannot weigh how recent anything is — whether a paper is new, whether a headline is current, what "last month" means, how old a note of yours is — and asked outright it will say it has no way to know. It is the date on your own computer, so it is right.

It is told roughly what part of the day it is, and not the clock. Morning, afternoon, evening — enough to answer "is it too late to start this" without pretending to a precision it was not given. A clock would be accurate and would cost about six seconds of every question: the instructions are rebuilt each time you ask, and a value that changes every time makes the model re-read the whole prompt instead of picking up where it left off. Part of the day changes four times a day and costs nothing.

Nothing else about your machine goes with it, and a date is not a private thing: every request already carries one at the other end.

Conversations that last — Saved Chats

A good question is often the second one. You ask, the answer is nearly right, you ask again with what you have learned — and the thread that got you there is worth more than any single answer in it. MojoPad keeps conversations rather than throwing them away when the drawer closes.

Recent ones keep themselves. Every conversation is remembered as you have it, and the 🕘 button in the drawer's head brings back the last two hundred, newest first. They roll off on their own; nothing is asked of you.

A conversation you want to keep is starred. Press and it becomes yours: saved chats sort above the recents, never roll off, and can be filed. That is the whole difference — a recent chat is a convenience, a saved one is a thing you own.

What you can do with one

  • File it in a folder. The 🗂 button puts a saved chat in one of your collection folders, so a month of questions about one project sits together.
  • Link to it from a page. Link to a Saved Chat…, from the command palette (⇧⌘P), drops a link where your caret is — so the page that came out of a conversation can point back at it.
  • Find it by its words, or by what it was about. Saved chats are searched along with your pages — and searching by meaning reaches them too, so the conversation where you argued about why a paper was wrong turns up under critique even though neither of you used the word. Keyword search finds the chat you can quote; the meaning search finds the one you can only describe.
  • See which chats a page was about. A page shows the conversations that discussed it, so opening a paper next year brings its argument with it.
  • Forget it. The 🗑 button deletes a saved conversation. Anything you saved out of it as a page stays exactly where it is.

Reopening one is continuing it, not copying it. The persona that was answering, the tools it was allowed to ask, and the model all come back with the words — a conversation reopened without its arrangement is a transcript, not a conversation.

A protected wiki protects them too. Lock a document and its saved conversations are sealed with everything else; unlocking brings them back.

Borrowing your own agent

A research run is the other half of this, and it is a different shape. Asking in the drawer holds one window's attention and stops after a few minutes. A run goes away and works: reading the web, reading folders you have allowed, dividing the job up if it is large — for as long as it takes. You carry on writing. When it finishes the answer arrives as a page of its own, named for the question you asked, with that question written at the top of it, and MojoPad tells you.

You start one from the Ask panel, where everything else about an answer is decided. The scope button — the one that says My wiki — has Research it at the bottom, under a line, because it is a different kind of thing from the four above it. The box then takes a question of any length, which matters more than it sounds: handing back a report for another pass means pasting the report in, and that never fitted in a one-line box.

What the panel already knows goes with it. The persona you chose writes the report. The tools this wiki has allowed for runs are the tools it may use — the ⚙ button beside the scope shows that list here, and is where a tool is allowed or taken back. And the pages you pin are handed over as reading, first, as the context the question was asked in.

Two things do not travel, and the panel says so rather than pretending. A run is carried out by your own agent on this Mac and by nothing else, so the model chooser is set aside while the scope is Research it — a model you have set up in Settings cannot take a run. And a wiki with a password on it hands over no pinned pages: giving a run pages means writing them where it can read them, and that is the one thing a password is for. The sheet that asks whether to start says which pages are going, or that none are and why.

It is still in the command palette as Research this… (⇧⌘P), which is the quickest route when you already know the question and want none of the rest.

Watching one while it works

A run can take an hour, and for most of it there is nothing on screen. Research runs & scripts in the command palette lists everything going and everything finished; picking any of them opens it, running or finished, and you can see what it has been doing — every step it has reported, in order, with the time each was said. A finished one keeps its steps where you went looking for them.

That list holds scripts too, running ones first. A plugin fired by an event runs with nothing on screen at all, so there was no way to tell a long one from one that never started — the list names it, says how long it has been going, and picking it opens it: what it has printed so far, and a Stop if it is still going. Nothing in that list ends a run by being clicked. A script cannot be interrupted mid-calculation: stopping refuses the next thing it asks MojoPad to do, which ends any run that is actually doing something.

The long jobs you start from the editor — writing in sources, building a reference list, checking what your sources say, filling a property across a kind — sit in the same list and say which paper or page they are on. Open one to read its line for every source and to stop it, or press Stop on the card at the bottom of the window; what a job had already finished is kept. A run that has finished has no Stop and keeps its lines where you went looking for them.

The times are the point. A run that is thinking and a run that has silently stopped look identical from outside, so the header says how long since it last said anything: if that number climbs past a few minutes, nothing is happening. And reading the steps tells you whether it has understood the question at all — if it is off down the wrong road, Stop this run is right there, and you can ask a better question rather than wait an hour for an answer to the wrong one. Stopping asks first, because what a run has found is not kept.

The list keeps working while you watch, so new steps arrive in front of you, and the header keeps counting whether or not the run is saying anything — which is the point of it.

A run that finishes while you are watching says so. The list stops offering to stop it, and asking to stop one that has already landed is refused rather than pretended: its answer is a page by then, and nothing is lost.

Every run in the list carries its time. One still going says how long it has been going; one that finished says how long it took, and stops counting — a finished report is not still spending your afternoon.

Asking for a particular shape

A run gives you what you asked for: a citation style, a table with named columns, a length. Those are part of the question rather than decoration around it, so say them in the question or put them in a persona and every run of yours arrives that way.

One thing to know before you ask: a run’s answer becomes a Markdown page. Headings, tables, links, emphasis and footnotes all arrive formatted. Raw HTML does not — it arrives as visible tags — so a request for HTML comes back as the same shape in Markdown, with a line saying that is what happened. If you want a file of HTML at the end, ask for the report normally and export the finished page.

They gather themselves. The first time an answer lands, a Research folder appears under Folders holding every run you have ever made — including the ones from before it existed. Nothing is moved into it, so a research page still lives wherever else you have put it, and throwing the folder away loses no pages. It is an ordinary smart folder: open it, rename it, edit what it looks for, or delete it. If you would rather see your runs as a table, with the question and the date as columns you can sort, that is a Database View over the same thing.

It lands as a new page rather than in the one you were on. An hour is a long time, and by then the page you started from may be half-rewritten; a thousand words appended into prose you are editing is a good way to lose both.

A run outlives the window that started it. Move to another page, open another wiki, close the window — it keeps going, and the answer is written down the moment it arrives, so it is waiting for you the next time you open that wiki. Quitting MojoPad does end it, though: the run is a program on your Mac that this one started, and leaving it going with nothing here to receive what it found would be worse than stopping it.

Folders it may read

Nothing on your disk is readable until you say so, one folder at a time. Folders research runs may read…, also in the command palette (⇧⌘P), opens a chooser; the folder you pick is the one it gets, and the permission belongs to that wiki alone. Take it back the same way.

Two folders are refused however you pick them: the wiki itself, because a password on a page protects its words and anything handed the file simply reads them; and your whole home folder, because that is what a chooser gives you when you click past it, and the difference between "my papers" and "everything I own" should not be one stray click.

It still cannot write. Reading more widely is not writing at all: no run may create or change a file, or start a program, in either mode. That is set when it starts rather than asked for politely.

It answers questions you ask, and nothing else. Everything MojoPad does on its own — indexing, search by meaning, the quiet passes that weigh your notes against each other — stays on this Mac whatever you have chosen in the chooser. Picking your own agent changes where your questions go, and nothing about the work you did not ask for.

Why the drawer is narrower than this. A question you ask your wiki carries the content of your pages with it, and pages arrive from the clipper, from mail, and from wikis other people send — so some of that text was written by somebody else. A research run carries your question and nothing else, which is exactly why it is allowed to read a disk and the drawer is not.

If you use Claude Code, it can answer here. It appears in the model chooser as Claude Code (your own agent) — MojoPad finds it if it is installed and you are signed in — and it is not a model among models: it is an agent that searches, reads and decides for itself, then hands back what it found.

It is Claude Code specifically, and MojoPad checks. If you keep more than one copy, or yours is installed somewhere unusual, choose it under Settings ▸ AI ▸ Your copy of Claude Code — the list shows every copy found on this Mac, and Choose… is there for one it missed. Naming a different agent will not work, and MojoPad says so rather than offering it: everything it allows or refuses a run — which tools may be used, which folders may be seen, that your own connected servers stay out of reach — is written in Claude Code's own command line, and another agent would take none of those instructions. Offering one anyway would hand it your question with none of the boundaries described below.

It can search your whole wiki. Ask “how many pages mention this” or “list every page about that” and it looks through all of them, not just the handful the question was matched to — and it says how many it found. That search is the one tool it has here, and it only reads: it cannot change a page, add one, or move anything.

It is deliberately kept narrow. It may not run commands, write or edit files, read anything off your disk, or reach the internet — and it cannot be talked out of that by anything it reads on one of your pages, because the limits are set when it starts rather than asked for politely. It also has a turn budget, so a question that will never resolve stops rather than running all afternoon.

Wikis with a password are the exception, and it is worth knowing before you wonder why. The search runs outside MojoPad and is never given your password, so a protected wiki stays unreadable to it even while it is unlocked on your screen. It will say so rather than answering as though it had looked.

Why so narrow, when it is your agent? Because a question asked here carries the content of your pages with it — and pages arrive from the web clipper, from mail, and from wikis other people send. Some of that text was written by somebody else, and an agent reading it is an agent being spoken to by a stranger. When you run Claude Code yourself you wrote every word of the input; here you did not. That is also why searching your wiki replaced reaching the web rather than joining it: a question about your own notes has no need to fetch an address, and a run that cannot fetch one cannot be talked into fetching a particular one.

Answers arrive as they are written, and while it is working you see what it is doing rather than a still screen.

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 two hundred: 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 checks 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 embedding models installed, one of those is used. MojoPad's own is used only when you have none. The word embedding is doing real work there: a Mac with a shelf full of chat models has none of these, and Automatic quietly resolves to MojoPad's own. So automatic means yours when yours can do this job, and ours when they cannot.
  • 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 a 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.

The single exception is Bring your own model, above, which is off until you turn it on and confirm. With it on, the pages behind a question you ask go to your provider; everything automatic still runs here, and locked pages are still never sent. The AI drawer says so on screen whenever it is on.

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 ▸ Save Diagnostic Report… names the model that built the index for each wiki, and how many pages are in it.