User guide

This is the same manual the app bundles under Settings → About → User guide, rendered from the very same file — so it cannot drift from the one on your machine.

Why MindMap Chat instead of a plain chatbot

Features at a glance

What you get Why it matters
AI chat scoped to any node Ask about one concept without noise from the rest of the map
AI-suggested map edits Review and apply (or discard) structural changes as a single undoable batch
AI-generated node notes Explanations stay attached to the exact concept they describe
Rich text styling Bold, italic, underline, strikethrough and highlight in notes, details and any chat message
Map-level AI chat Discuss the whole topic with the full tree injected as context
Offline semantic search Find ideas by meaning, not just exact wording — runs on-device
Import Freeplane & XMind Bring in existing material and keep working from it
Starter templates Begin from a study, reading, decision or tour skeleton instead of a blank canvas
Full undo/redo stack Every edit — including AI changes — is reversible
Local-first storage All maps, notes and settings live in a folder you control
Encrypted at rest Database and settings are AES-256 (SQLCipher) encrypted with your passphrase
Guided local-AI setup The app installs and starts Ollama or LM Studio and fetches the model you pick
LaTeX rendering Math formulas render inline in chat bubbles and node notes

Who it is for


System requirements

Platform Minimum
Windows Windows 10, 64-bit
macOS macOS 14 Sonoma (Apple Silicon or Intel)
Linux (.deb / .rpm) glibc ≥ 2.39 and GTK 3.24+ — Ubuntu 24.04+, Debian 13+, Fedora 40+
Linux (Snap) Any distribution with snapd (built on core24)
Android Android 7.0 (API 24), 64-bit

Older systems are not supported: on macOS below 14 the app refuses to open, and on Linux the packages fail to install against an older glibc. No GPU and no AI model are required — the editor, import and offline semantic search work on any machine that meets the above.

Getting started

  1. Create a map. Tap New map in the library's top bar, type a name, and it becomes the root
  2. node of a fresh map. Or tap Template to start from a skeleton instead of a blank canvas — a study/revision map, book or paper notes, a project/decision map, or a short tour of the app whose nodes you can ask questions about.
  3. Or import what you already have. Freeplane .mm and XMind .xmind files are supported.
  4. Every import creates a fresh, independent copy, so re-importing is always safe.
  5. Set up AI — see Configuring AI below.
  6. Select a node to reveal the floating action bar, and start asking.

An example learning workflow

  1. Import a Freeplane or XMind map from a course, article, or your previous notes.
  2. Clean up the layout with Auto-align so the structure is easier to scan.
  3. Open one branch and ask AI to explain, summarize or compare the concept.
  4. Save the answer as a node note so the explanation stays attached to the topic.
  5. Expand the map with AI-suggested child nodes, then review and apply only the changes you want.
  6. Come back later and use semantic search to find ideas by meaning, not just exact wording.

Working with maps

Organize and reshape ideas visually

Node properties

Tap Properties in the node action bar for a read-only sheet showing the node's link, tags, attributes, detail text and note preview. Notes and details render LaTeX formulas and inline text styles. The AI Research button opens the research panel directly from here.

Rich text

Select text in a note or detail and apply bold, italic, underline, strikethrough or highlight from the compact toolbar. You can also style any chat message — yours or the AI's — with the Style button under the bubble. Styling composes with the existing Markdown and LaTeX rendering.

Import

Export / Share is temporarily unavailable. The HTML and Markdown output was not good enough

to ship; the feature returns in a later update.


The AI features

Node-focused chat

Select a node and press Chat about node with AI (the chat-bubble icon) to open a full-screen, multi-turn conversation scoped to that node. The AI is given the node's text, its details and note, its parent, its children, its ancestry path and the map outline as background. History is kept per node, so you can reopen the conversation any time.

Map-level chat

Chat about map with AI injects the whole tree as context — pure conversation, with no automatic edits. Map chat history is persisted too and survives restarts.

Extend with AI (node and map)

The Extend dialogs fire their prompt automatically on open. The response streams in for you to read, and if the model proposes structural changes you'll see N changes ready to apply:

Every applied AI edit is recorded as an audit trail. Nodes that received AI contributions show a ✨ badge; tapping it opens the properties sheet at the AI Contributions section, with the model name, timestamp and a preview of each change.

AI Research notes

From a node's properties sheet, tap AI Research. A question is pre-filled ("Tell me about …") — edit it and press Ask. The response streams in and renders LaTeX. If the node has no note yet the answer is saved as its note automatically; if it already has one, you're asked to confirm before replacing it. Either way it's undoable.


Semantic search (offline)

Semantic search runs directly on the canvas, using embeddings stored on your device.

Configure the model under Settings → AI → Embedding model: local-hash-384 (lightweight) or all-minilm-l6-v2 (higher quality). Both ship inside the app, so search works offline out of the box. Changing the model clears stored embeddings and re-indexes on the next search; **Recompute embeddings now** forces a full re-index immediately.


Configuring AI

  1. Open Settings (the gear icon in the toolbar).
  2. On the AI tab, pick a Provider. Ollama and LM Studio run on your own hardware;
  3. Claude (Anthropic) and OpenAI run on theirs. For a local runtime, keep the default endpoint (http://localhost:11434/v1 for Ollama, http://localhost:1234/v1 for LM Studio) or point it at a host elsewhere on your network — switching provider re-points the address for you. A cloud provider has a fixed address and asks for an API key instead.
  4. Pick a Model from the curated list. On a local runtime each shows an installed/missing badge,
  5. and choosing one that isn't installed triggers an automatic download when you press Save.
  6. Choose the Embedding model used by offline semantic search.
  7. Toggle Include map context to inject the current map outline into the AI's system prompt.

Guided setup: for a local endpoint, pressing Save installs the runtime if it's missing and starts its server — with a progress checklist, and Cancel / Retry if anything fails. Steps that are already done are skipped. If the model you picked isn't there yet, the Downloads panel opens and fetches it. Two limits are worth knowing: on Linux, LM Studio ships only as an AppImage and has to be installed by hand (Ollama installs automatically there); and a remote LM Studio cannot be fetched into, because LM Studio downloads models through its own command-line tool on the machine running it — the app says so rather than offering a download that could not work. On Android and iOS neither runtime runs on the device, so both work against a remote endpoint only — there the AI tab asks for the Server address of the computer running the runtime (just the IP or host name, e.g. 192.168.1.50) and composes the endpoint for you, showing the address it will connect to. The port comes from the runtime you picked and follows it when you switch; open Port · Change underneath if your server listens somewhere else.

Using a cloud provider

Claude (Anthropic) and OpenAI are optional, and nothing about the local runtimes changes if you never touch them. What changes if you do is worth being plain about: the model runs on the provider's servers, so what it needs to answer — the outline of the map you are working on, the text and notes of the node you act on, and the messages in that chat — is sent to them over the internet. Your maps stay encrypted on this device, and your API key is stored encrypted here too, but what you send for a reply is handled under their terms and they bill you for it.

The app asks before this can happen. Choosing a cloud provider opens a dialog naming it and listing what is sent; declining leaves your selection where it was, and until you accept, the AI features stay switched off for that provider. A banner in Settings repeats it, and a Cloud chip sits beside the title in the chat window.

Setting up a Claude API key, step by step

API access is billed separately from any Claude subscription. A Claude Pro or Max plan does not include API credit, and a token from claude setup-token is a Claude Code credential that this app cannot use. You need an API key from the Console.

  1. Go to platform.claude.com and sign in (the same account as Claude.ai works).
  2. Add credit under Settings → Billing. There is no free tier for the API, and a key with no
  3. credit behind it authenticates fine and then fails on the first message.
  4. Open Settings → API keys and press Create key.
  5. Name it something you will recognise later — "MindMap Chat" — and choose an expiration. Never
  6. is fine for a key that stays on your own machine; a dated one means remembering to replace it.
  7. Scope it to a single workspace if you are offered the choice. This is the step that saves you
  8. trouble: a key tied to one workspace needs nothing else. A key that spans several has to name the workspace on every request, and the app will ask you for the ID below.
  9. Copy the key — it starts sk-ant-api… and is shown once — and paste it into API key in the
  10. app.
  11. Press Test connection. All four checks should go green.

If the test says a workspace ID is required, your key is not tied to one workspace. Open Settings → Workspaces in the Console, copy the value from the ID column (it starts wrkspc_), and paste it into Workspace ID in the app. Creating a new key scoped to one workspace works just as well and leaves the field empty.

Setting up an OpenAI API key, step by step

The same trap in a different shape: API access is billed separately from ChatGPT. A Plus, Pro or Team subscription does not include API credit, and a ChatGPT login is not an API key.

  1. Go to platform.openai.com and sign in (the same account as ChatGPT works).
  2. Add credit under Settings → Billing. A key with no credit behind it authenticates fine and
  3. then fails on the first message.
  4. Open API keys and press Create new secret key.
  5. Name it something you will recognise later — "MindMap Chat" — and pick the project you added
  6. credit to. A project-scoped key needs nothing else: the app sends no organisation or project header, so the key's own project is the one billed. That is why there is no workspace field here.
  7. Copy the key — it starts sk- and is shown once — and paste it into API key in the app.
  8. Press Test connection. All four checks should go green.

If the connection test reports insufficient_quota, the project has no credit left, whatever your ChatGPT plan says.

Your key is stored in the same encrypted database as your maps, per provider — configuring one does not overwrite another's, and nothing is written to the settings file in clear text.

Under Cost and size you will find:

If a map must never leave this device, use Ollama or LM Studio. That is the only guarantee.

Who is responsible for what

MindMap Chat is not affiliated with Anthropic or OpenAI, and does not resell, host or intermediate their services. When you enable one, you are using your own account with that provider, and that is an agreement between you and them: their terms of service, privacy policy, acceptable-use policy, pricing and availability govern it. Any account, billing, quota or support matter is yours to take up with them directly — this app has no visibility into your account and cannot act on your behalf.

Warranty and liability are the licence's, not a second set of terms. This software already ships under the Elastic License 2.0, whose No Liability section reads:

As far as the law allows, the software comes as is, without any warranty or condition, and the

licensor will not be liable to you for any damages arising out of these terms or the use or

nature of the software, under any kind of legal claim.

That covers anything that goes wrong when a provider is involved — outages, rate limits, models changed or withdrawn, refused or wrong answers, how the provider handles what is sent, a suspended account, or charges made to it — for the same reason it covers everything else. The full text is in Settings → About.

Deleting a chat here deletes it here. Clear conversation removes the messages from this device's encrypted database and makes no network call — there is nothing to delete at the provider in the sense you might expect, because the API is stateless and keeps no conversation of its own. What it does keep is the requests already sent, for as long as its retention policy says. Nothing in this app can reach that; the provider's privacy policy governs it.

What the app does guarantee is narrow and worth stating plainly: it will not send anything to a provider you have not selected and agreed to.

Read the provider's terms and privacy policy before you turn this on:

Which model should I pick?

The app supports a fixed list of models — the ones covered by its automated tests against a real LLM. Nearly all of the local ones are offered on both runtimes, so switching runtime does not change what the AI can do; the one exception is Bonsai (27B), which LM Studio publishes and Ollama does not. Download is disk space; Roughly needs is the memory the model wants while it is answering, which is video memory on a GPU or system memory without one — and for a cloud model, both are its provider's problem rather than yours.

Model Runtime Model key Download Roughly needs
Qwen 2.5 (7B) Ollama qwen2.5:7b 4.7 GB ~8 GB RAM or VRAM
Qwen 2.5 (32B) Ollama qwen2.5:32b 19.9 GB ~24 GB VRAM (or 32 GB RAM) — best quality, slowest
Mistral (7B) Ollama mistral:7b 4.4 GB ~8 GB RAM or VRAM
Gemma 3n (e4B) Ollama gemma3n:e4b 7.5 GB ~6 GB RAM or VRAM — lightest to run, despite the larger download
Gemma 4 (e4B) Ollama gemma4:e4b 9.6 GB ~6 GB RAM or VRAM
Qwen 3.6 (35B-A3B) Ollama qwen3.6:35b-a3b 23.9 GB ~24 GB VRAM (or 32 GB RAM) — reasons before answering; MoE, so faster than its size suggests
Qwen 3.8 (27B) Ollama qwen3.8:27b 17.7 GB ~20 GB VRAM (or 32 GB RAM) — reasons before answering
Muse Glimmer (28B) Ollama muse-glimmer:latest 18.2 GB ~20 GB VRAM (or 32 GB RAM) — reasons before answering
Qwen 2.5 (7B) LM Studio qwen/qwen2.5-7b 4.7 GB ~8 GB RAM or VRAM
Qwen 2.5 (32B) LM Studio qwen/qwen2.5-32b 19.9 GB ~24 GB VRAM (or 32 GB RAM) — best quality, slowest
Mistral (7B) LM Studio mistralai/mistral-7b-instruct-v0.3 4.4 GB ~8 GB RAM or VRAM
Gemma 3n (e4B) LM Studio google/gemma-3n-e4b 4.2 GB ~6 GB RAM or VRAM — lightest option
Gemma 4 (e4B) LM Studio google/gemma-4-e4b 6.3 GB ~6 GB RAM or VRAM
Qwen 3.6 (35B-A3B) LM Studio qwen/qwen3.6-35b-a3b 22.1 GB ~24 GB VRAM (or 32 GB RAM) — reasons before answering; MoE, so faster than its size suggests
Qwen 3.8 (27B) LM Studio qwen/qwen3.8-27b 17.7 GB ~20 GB VRAM (or 32 GB RAM) — reasons before answering
Muse Glimmer (28B) LM Studio meta/muse-glimmer 18.2 GB ~20 GB VRAM (or 32 GB RAM) — reasons before answering
Bonsai (27B) LM Studio prism-ml/bonsai-27b 4.7 GB ~8 GB RAM or VRAM — 27B at 1-bit quantization, so it fits a small card; reasons before answering
Claude Opus 5 Claude (cloud) claude-opus-5 — Nothing — runs on Anthropic's servers; billed by them
Claude Sonnet 5 Claude (cloud) claude-sonnet-5 — Nothing — runs on Anthropic's servers; billed by them
Claude Haiku 4.5 Claude (cloud) claude-haiku-4-5-20251001 — Nothing — runs on Anthropic's servers; billed by them
GPT-5 OpenAI (cloud) gpt-5 — Nothing — runs on OpenAI's servers; billed by them
GPT-5 mini OpenAI (cloud) gpt-5-mini — Nothing — runs on OpenAI's servers; billed by them
GPT-4.1 OpenAI (cloud) gpt-4.1 — Nothing — runs on OpenAI's servers; billed by them

If you are unsure, start with Gemma 3n (e4B) — it is the lightest — or Qwen 2.5 (7B) for a better balance of quality and speed. The 32B model is noticeably slower and only worth it if you have the memory for it: on a machine that cannot hold it, it still answers, but by falling back to system memory, and a single reply can take minutes instead of seconds.

Qwen 3.6 (35B-A3B) is the best quality on the list, and it works differently from the others: it reasons before it answers, writing out its thinking first. That thinking is not the answer, so the app keeps it out of your notes — but in chat you can open the Reasoning line above a reply to read how it got there. Expect the first words of an answer to take longer to appear than with the other models; the app says "Thinking…" while that is happening. It is a mixture-of-experts model, so despite being the largest download it is faster than the 32B once it starts writing. For chat the app turns the reasoning off, because a conversation should not pause for a minute before its first word.

Qwen 3.8 (27B) reasons in the same way, and the same Reasoning line shows its thinking. It is a dense model rather than a mixture-of-experts, so it wants the memory of the 32B class and writes at a similar pace; chat turns the reasoning off, as it does for Qwen 3.6.

Muse Glimmer (28B) also reasons, and unlike the Qwen models it offers no way to switch that off — so every reply, chat included, pauses to think before its first word. It writes long, detailed answers, which is what makes it worth the wait when it is expanding a map rather than holding a conversation.

Bonsai (27B) is the one model offered on LM Studio only. It is quantized down to a single bit per parameter, so a 27B model fits in about 8 GB — by far the most capability per gigabyte on the list — and it reasons before answering too. Being compressed that hard, expect it to be less reliable than the larger downloads on long, detailed answers.

A model that does not fit is a slowness problem, not an error — nothing breaks, it just gets slow.

Downloads

The download icon beside the Model heading opens a panel listing every supported model for the current runtime, with what's ongoing, what failed, what's installed, and what's still available. Several models can download at once, and the panel can be closed and reopened without interrupting anything — a download keeps running while you use the app.

Cancel behaves differently on the two runtimes, and the button says which:

If a download stops making progress it's shown as Stalled, not failed — with LM Studio the transfer may still be alive, and the app says so instead of guessing. LM Studio also reports progress as a plain percentage for some models, so a size and a time remaining aren't always available.

Settings are saved inside your data directory, so they travel with the database when you move or back up your data folder.

Set up LM Studio manually

On Windows, winget install -e --id ElementLabs.LMStudio; on macOS, brew install --cask lm-studio (Apple Silicon only); on Linux, download the AppImage from lmstudio.ai, chmod +x it and run it — it needs FUSE, e.g. sudo apt install libfuse2.

Then:

  1. Open the LM Studio app once. That first launch is what installs its lms command-line tool,
  2. which the app uses to start the server and download models. If MindMap Chat says the tool isn't set up yet, this is the step you are missing — do it and press Retry.
  3. Download a model, either in LM Studio's own browser or with lms get qwen/qwen2.5-7b -y.
  4. Start the server with lms server start -p 1234.
  5. In the app, open Settings → AI, choose LM Studio, leave the Base URL as
  6. http://localhost:1234/v1, pick the matching Model, and press Save.

The first reply from a model can take a while — LM Studio loads it into memory on demand. Later replies are fast.

Share one LM Studio server across your network

Same idea as sharing Ollama, with two differences. Start the server bound to every interface with lms server start --bind 0.0.0.0 -p 1234 (by default it listens only on localhost), and allow inbound TCP port 1234 through the host's firewall — see Opening the port on your firewall below. On each client, open Settings → AI, choose LM Studio, and set the Base URL to http://<host-ip>:1234/v1. On a phone or tablet, enter just the address (<host-ip>) — the app adds the port and the /v1.

Because model downloads go through the lms tool on the host, download the models you want to share on that machine — a client cannot fetch into a remote LM Studio.

Set up Ollama manually

If you'd rather not use the zero-touch flow — or you're on a platform where it isn't available — you can install Ollama yourself:

  1. Download and install Ollama for your operating system from its website. On Linux you can also run
  2. the official install script; on Windows and macOS use the installer.
  3. Ollama runs as a background service and listens on http://localhost:11434 by default.
  4. Pull one of the supported models from a terminal, using the model key from the table above — for
  5. example ollama pull qwen2.5:7b or ollama pull gemma3n:e4b. A model outside that list can be pulled, but the app will not offer it.
  6. In the app, open Settings → AI, leave the Base URL as http://localhost:11434/v1, pick the
  7. matching Model, and press Save. The model's badge should read installed.

Share one Ollama server across your network

You don't need Ollama on every device. Run it once on a single capable PC (plenty of RAM and, ideally, a GPU) and let every other computer, laptop, tablet, or phone on the same network use it.

On the machine that will host Ollama:

  1. Set OLLAMA_HOST=0.0.0.0 in Ollama's environment so it accepts connections from other devices,
  2. then restart the Ollama service. (By default Ollama only listens on localhost, which other machines can't reach.)
  3. Pull the models you want to share, as above.
  4. Allow inbound TCP port 11434 through that machine's firewall so other devices can connect —
  5. see Opening the port on your firewall below.
  6. Note the host's LAN address, e.g. 192.168.1.50.

On every client device:

  1. Open Settings → AI.
  2. Set the Base URL to http://<host-ip>:11434/v1 — for example http://192.168.1.50:11434/v1.
  3. On a phone or tablet the field asks for the Server address instead: type 192.168.1.50 and the app composes the rest. localhost there means the phone itself and is refused.
  4. Pick a model that the host has pulled, and press Save.

The desktop-only auto-install runs per machine; clients don't install anything — they just point at the shared host. The app shows a small notice under the endpoint when it is on your network rather than on this device.

Opening the port on your firewall

Two separate things have to be true before another machine can reach your server, and each one fails silently on its own: the server has to listen on every interface (the steps above), and the firewall has to allow the port inbound (the commands below). If you only do one, the connection simply times out with nothing to explain why.

Use 11434 for Ollama or 1234 for LM Studio. Each command below allows the port for your **local network only**.

Before you run these. Neither Ollama nor LM Studio asks for a password. Anyone who can reach

that port can use your machine's GPU, see which models you have, and load or unload them. That is

usually fine on a home network and a bad idea on a shared, office, hotel, or campus one. Two rules

keep it sensible: allow the port to your local network only, never to "any" address; and **never

forward this port on your router** — that is the mistake people reach for when a client still

can't connect, and it puts an unauthenticated server on the public internet for anyone to find.

You set this up at your own risk.

Windows. Open PowerShell as Administrator and run, on one line:

New-NetFirewallRule -DisplayName "Ollama LAN" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 11434 -Profile Private -RemoteAddress LocalSubnet

-Profile Private is what keeps this off untrusted networks. It is worth checking that Windows actually classifies your network as Private, because a private rule does nothing on a network marked Public — the rule looks perfectly correct while the port stays shut. Run Get-NetConnectionProfile to see. If it says Public and this is your own network, change it with Set-NetConnectionProfile -InterfaceAlias "<name>" -NetworkCategory Private. Don't do that on public Wi-Fi.

One more Windows setting can defeat the rule while everything looks right: **Block all incoming connections, including those in the list of allowed apps** (Windows Security → Firewall & network protection → your active network). While that is ticked, Windows discards every inbound allow rule, so the rule exists, is enabled, is on the correct profile — and the port stays shut. Check it with Get-NetFirewallProfile | Select-Object Name, Enabled, AllowInboundRules: AllowInboundRules : False on the profile you are on is the culprit, and Set-NetFirewallProfile -Profile Private -AllowInboundRules True (as Administrator) undoes it.

Linux. With ufw, replacing the network with your own:

sudo ufw allow from 192.168.1.0/24 to any port 11434 proto tcp

Then check it took effect with sudo ufw status. If that says inactive, the rule is stored but nothing is enforcing it, and the port is governed by whatever else your distribution uses.

macOS. The built-in firewall allows or blocks whole applications, not individual ports. Check whether it is on at all under System Settings → Network → Firewall. If it is off, the port is already reachable and there is nothing to do. If it is on, allow the application with sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add $(which ollama) followed by the same command with --unblockapp in place of --add. For LM Studio, use /Applications/LM Studio.app instead of $(which ollama).

To undo any of this, remove the rule rather than turning the firewall off — use Remove-NetFirewallRule -DisplayName "Ollama LAN" on Windows, sudo ufw status numbered followed by sudo ufw delete <number> on Linux, or --blockapp in place of --unblockapp on macOS.

Keep your endpoint on your own network

Where Ollama runs decides where your map content goes. Everything the AI sees — your map outline, notes, and chat — is sent to whatever Base URL you configure.

⚠️ **Don't point the app at an Ollama or OpenAI-compatible endpoint on the public internet unless

you run and trust that server.** Doing so streams your private map content off your network, where

it may be logged or retained. The same caution applies to any remote, API-key-protected endpoint:

a remote endpoint is off-network regardless of whether it needs a key.

Your local database is always encrypted at rest, but that protection does not extend to content you send to a remote endpoint — which is exactly why the endpoint you choose matters. When sharing over a LAN, prefer plain HTTP only on a network you control; treat anything reachable from outside as public.


Your data

Where it lives

By default the app uses the platform's application-support directory:

Windows %APPDATA%\com.mindmapchat\mindmap_chat\
macOS ~/Library/Application Support/ (inside the app's own folder)
Linux ~/.local/share/mindmap_chat/
Android, iOS private app storage, not reachable from a file manager

To put it somewhere else, set a custom path in Settings → Data.

Changing the directory starts a guided migration: if the destination is empty, your database is moved there; if a database already exists there, the app switches to it without copying or overwriting anything. The destination database is never overwritten.

What is in that folder

Three files, and it is worth knowing which is which before you copy or sync any of them.

mindmap_chat.db Everything you made — maps, sheets, nodes, notes, styles, and every AI chat, plus your AI provider's API key. Encrypted; it cannot be opened without your passphrase
settings.enc Every preference — the AI provider and model you chose, the endpoint remembered for each, your cloud consent and its request-size limit, theme, text size, update settings, and the context window the app measured for each model. Encrypted with the same key
crypto_header.json How to check a passphrase, never the passphrase. The salt and the settings for the key derivation, plus a marker saying whether a key file is required. Deliberately readable — it is what tells the app that encryption was set up at all — and it contains nothing that can decrypt anything

Copying or syncing all three is a complete backup; there is nothing else to take. Your key file, if you use one, is the exception in the other direction: keep it somewhere other than beside the database it unlocks.

Diagnostics are not in there. logs/ holds the last 20 sessions — which model was asked what, how long it took, what failed, in sizes and counts only, never the text of a prompt and never your API key — and it stays in the app's own application-support folder even if you move your data elsewhere, so a backup does not carry it and neither does a move. It is the one part you might want to hand to someone else.

Encryption & privacy

Everything meaningful is encrypted at rest, so you can safely keep or sync your data folder on public cloud storage (Google Drive, Dropbox, OneDrive, a USB stick).

Manage all of this under Settings → Security: change the passphrase or key file, toggle device caching, or Lock now to clear the key from memory. Changing your passphrase re-encrypts the database with a crash-safe procedure that rolls back if interrupted, so a rotation can never lock you out.

⚠️ Keep your passphrase safe. If you use a key file, store it separately from the database —

in the same cloud folder it adds no protection. There is no recovery if both are lost.


Display settings

Settings → Display has a global text-size control (Small / Normal / Large / XL) that applies to the app's UI text and persists across restarts. Map-canvas labels stay a fixed size so zoom behaves predictably.


Updates

The app checks a release feed on startup and tells you when a newer version is available; you can turn this off in Settings → About. Updates show what's new, download with live progress and a Cancel button, and verify the download's integrity before installing.

Settings → About also has a manual Check for updates, a preview of the release notes, and Skip this version.


Troubleshooting

The AI says it can't connect, or the model is missing

Check Settings → AI: the base URL must point at a running Ollama or LM Studio instance, and the model must show as installed. Pressing Save re-runs the install/start/download flow. The app tells you which step failed and offers Retry. Common errors are reported plainly: 401 means the API key, 404 means the base URL or model name, and timeouts mean the host is unreachable. If you're pointing at a shared box, re-check the steps under Share one Ollama server across your network or Share one LM Studio server across your network — usually the server was not started so other devices can reach it (OLLAMA_HOST=0.0.0.0, or lms server start --bind 0.0.0.0), or its port (11434 / 1234) is blocked by the host's firewall.

LM Studio: the app says its command-line tool isn't set up

LM Studio installs its lms tool the first time the app runs, so a freshly installed LM Studio does not have it yet. Open the LM Studio desktop app once, then press Retry. This is the most common LM Studio hiccup, and it is not a sign that anything is broken.

LM Studio: the model list is empty

Its server isn't running. Start it with lms server start, or open LM Studio and start the server from its Developer tab.

LM Studio: the first reply takes a minute

Expected — LM Studio loads a model into memory on demand, and the first request pays that cost. Keep LM Studio running and later replies are fast.

Semantic search finds nothing, or seems stale

The map may not be indexed yet — run the search once and let the indexing pass finish. If results still look wrong (for example after changing the embedding model), use **Settings → AI → Recompute embeddings now**.

The app asks for a passphrase I don't recognise

You have pointed the app at a data directory whose database was encrypted with different credentials. Either enter that database's passphrase, or switch back to your own data directory in Settings → Data.

"Database credentials missing"

The database is encrypted, but the file holding its credentials header is gone. Restore that file, or point the app at the correct data directory. The app deliberately will not set up a new key over the existing data — that would strand it permanently.

Linux: the window opens but the canvas is blank

This affects KDE with an NVIDIA GPU on an X11 session. Log in to a Plasma (Wayland) session instead — the app renders correctly there on the same hardware. GNOME sessions are unaffected.

Linux (Snap): the window is black and the display fix doesn't help

The Snap is sandboxed, so on some systems it can't reach your host's GPU drivers (notably certain NVIDIA setups) and has no working OpenGL — the window stays black. **Install the .deb package directly instead:** it runs unsandboxed and uses your system's own GPU drivers, exactly like any native app. This is a display-only limitation — local AI is unaffected either way, because Ollama runs as a separate service outside the app and keeps full GPU access regardless of how the app is packaged.

Fedora KDE (Snap): Discover hangs on "Refreshing Snap" after installing

Installing any Snap pulls in snapd, which activates Discover's Snap Store plugin (plasma-discover-snap). On Plasma 6.7.0–6.7.3 that plugin never reports that it has finished, so Discover's Updates page waits forever and hides your regular package updates too. It is an upstream Discover bug (KDE bug 500513), not a problem with your system or with this app — snapd itself works normally, and sudo dnf upgrade in a terminal is unaffected. Until the fix ships, remove the plugin and keep it from coming back with the next Plasma update. Run sudo dnf remove plasma-discover-snap, then add the line excludepkgs=plasma-discover-snap to /etc/dnf/dnf.conf.

Discover then updates normally again; Snaps stay installed and are managed with the snap command.

Something else is broken, or missing

Use Settings → About → Send feedback, or write to [email protected]. It opens your mail app with the version already filled in. This app is free and built by one person; what's missing or broken is the most useful thing you can send.


License

MindMap Chat is released under the Elastic License 2.0 — the full text is available in the app under Settings → About → License.

Free to use for personal and commercial work, and free to copy, share and modify. You may not offer it to others as a hosted or managed service, circumvent its license-key functionality, or remove its licensing notices.