How does Linkly AI protect user data privacy?
Linkly AI is built on a local-first architecture. Your documents, full-text index, vector index, and the embedding model itself all run on your device — nothing is uploaded to any server by default.What stays on your device
- Document originals: stay in their original folders. Linkly AI only reads them — it does not copy or relocate them.
- Full-text index (BM25): built locally with Tantivy.
- Vector index: stored in a local database.
- Embedding model: a local embedding model runs entirely on your device. Apple Silicon Macs automatically use Metal GPU acceleration.
- App logs: written to local files only — never auto-uploaded.
Where chat data goes
When the chatbot calls a large language model, where the request goes depends on the provider you choose:Local model
Ollama, LM Studio, or any other OpenAI-compatible local service. Data stays entirely on your machine.
Linkly Official
Forwarded to a third-party model provider via
api.linkly.ai. Requests pass through Linkly’s servers.Third-party direct
Connects directly to OpenAI, Anthropic, etc. Requests do not pass through Linkly’s servers.
User Experience Improvement Program (telemetry)
To help us understand which features are used and how the app is running, Linkly AI sends an anonymous usage report by default:
You can turn it off any time in Settings → Data Privacy → User Experience Improvement Program. Once disabled, any in-memory events that have not yet been sent are discarded as well.
Privacy commitments
- No third-party analytics SDKs (Google Analytics, etc.).
- We do not read your browser history or clipboard.
- No mandatory account login — core features work offline.
- App logs stay on your machine. They are sent to us only if you explicitly share them.
How long does Linkly AI take to finish indexing?
Indexing time depends on the number of files, file types, machine performance, and indexing mode. Linkly AI indexes in three stages:1
Filename quick index (seconds)
As soon as files are discovered, their paths and names are written to the full-text index, so you can search by filename even while content indexing is still running.
2
Full-text extraction and BM25 index (minutes to hours)
Document contents (txt, md, html, docx, pptx, epub, pdf, images, plus audio and video once transcription is enabled) are parsed; outlines and metadata are written to Tantivy. Multiple workers can run in parallel.
3
Vector embedding (minutes to hours)
The local embedding model generates a vector for each document chunk and writes it to the vector index.
What affects speed
- File count: roughly linear with total time.
- File format: plain text is fastest; PDFs require page parsing.
- Machine performance: Apple Silicon Macs use Metal GPU acceleration for embeddings, which is significantly faster than CPU inference. On Windows / Linux, embedding currently runs on CPU.
- Indexing mode: pick
Performance / Balanced / Autoin Settings → Indexing. Performance mode uses higher concurrency and more CPU; Auto upgrades to Performance when the system is idle.
Rough expectations
These are order-of-magnitude estimates only — actual times vary considerably with hardware and file mix:You can watch indexing progress live (indexed / pending) at the top of the launcher. Indexing runs in the background and does not block search — once filename indexing is done, search is immediately available.
Why can’t I find a particular file?
Start with one triage step — search for it by filename. The three possible outcomes point to three completely different problems:
This step matters: the three cases are handled completely differently, and skipping triage is a good way to spend a long time digging in the wrong direction.
Skipped files are not listed anywhere in Settings. The badge in search results is the only way to discover them — which is why you have to run the triage step above yourself.
Four reasons
Hovering the badge gives you the same explanation. These files stay in your search results; they just have no content to search.
What cloud placeholders are about
iCloud Drive, OneDrive, Dropbox, Synology Drive and similar services all have a files on-demand feature (also called “online-only” or “smart sync”): the file is visible in Finder or File Explorer, but its content still lives in the cloud and is only downloaded when you double-click to open it. Linkly AI deliberately does not open these files — opening one triggers a download, which would mean a single indexing pass could pull hundreds of gigabytes of your cloud drive onto your machine, filling the disk and saturating your bandwidth. So it judges by attributes only: recognise a placeholder, skip the body, keep the filename indexed. Scans are triggered automatically on app start, on configuration changes (adding or removing folders, for example), and when a burst of file changes is detected. If you want one right now, restarting the app is the easiest way.What to do about a signature mismatch
This means the file header’s signature bytes don’t match the extension. It’s common with stub or shortcut files produced by certain sync tools, half-downloaded files from an interrupted transfer, or files whose extension was renamed by hand. Open it with the corresponding application to check — if it doesn’t open at all, Linkly AI was right to skip it; if the extension is simply wrong, correcting the extension is enough.Linkly AI’s trade-off here is better to miss than to falsely reject: if reading the file header hits a transient IO error or permission hiccup, it is treated as “content available”. A single momentary failure will never permanently mark a real file as a stub.
Found by filename, no badge, but the content still isn’t searchable
No badge means the file itself is fine — it’s the content extraction step that hasn’t happened, or can’t. In order of likelihood:- The relevant extraction switch is off. Images and scanned PDFs depend on Image Text Recognition (OCR); audio and video depend on Audio transcription and Video transcription — and those last two are off by default. Check under Settings → Index.
- Its turn hasn’t come up yet. OCR and media transcription are the heaviest tasks, so a slow queue is normal. The status detail on the settings page shows what they’re currently working on.
- This particular file failed to parse. A corrupted file or an encrypted PDF, for instance. That case produces no badge — the file is simply skipped and not retried.
Index Settings
What every switch does, its default, and the meaning of each row in the status detail — all on this page.
Not found even by filename
This means the file never entered the index at all. There are three common causes: 1. The folder isn’t being watched. Check under Settings → Folders that its parent directory is in the list. The first-run onboarding flow only indexes the bundled samples; your own directories have to be added by you. 2. The format isn’t on the supported list. Linkly AI uses an allowlist: only PDF, DOCX, PPTX, EPUB, Markdown, TXT, HTML, images, audio, and video extensions are picked up. xlsx, csv, doc, rtf, htm and avi are currently not among them — a file outside the allowlist doesn’t even get its filename registered. The full list is in the Tools Introduction. 3. It’s inside an ignored directory. The following directories, and everything below them, are skipped wholesale:- Hidden directories starting with a dot (
.git,.cache,.dropbox.cacheand so on) node_modulesand__pycache__and similar build / dependency caches- NAS sync metadata directories:
#recycle,#SynoRecycle,@eaDir(Synology),@Recycle(QNAP) - System directories:
$RECYCLE.BIN,System Volume Information
Inside a Git repository, files excluded by
.gitignore are likewise not indexed. If your notes happen to sit in a repo’s ignored directory, move them out, or add that directory on its own under Settings → Folders.Why can’t I search what was said inside my audio and video files?
Because audio and video transcription is off by default. While it’s off, media files are still registered in the index (so filename search finds them), but what was said inside them is never transcribed. Go to Settings → Index and turn on Audio transcription and Video transcription. The app downloads the speech recognition model and then works through all your existing media files automatically — no rescan and no index rebuild required.Index Settings
This page explains what every switch under Settings → Index does, its default, and the full troubleshooting path when indexing goes wrong.
Where do I find the settings I need?
The settings window is split into pages by function. These are the ones people look for most:Settings → General: language, launch at login, shortcut
Settings → General: language, launch at login, shortcut
- Language: the interface display language
- Launch at Login: start Linkly AI when you log in to your system
- Silent Launch: when started at login, stay in the background instead of opening the main window — on by default, so indexing and the MCP server run without getting in your way
- Search Shortcut: the global shortcut that toggles the Launcher. Click once to re-record it, or use Reset to default. If it says the combination is already in use or reserved by the system, pick another one
- Linkly AI Space: the folder that’s indexed by default — you can open it or move it elsewhere; see Linkly AI Space
Settings → Appearance: theme, font size, Dock icon
Settings → Appearance: theme, font size, Dock icon
- Theme: Light / Dark / System
- Font Size: Small / Standard / Large, applied to both the interface and chat content
- Show Dock Icon (macOS): turn it off and the app lives only in the menu bar tray, taking up no space in the Dock
Settings → About: version, updates, data directory
Settings → About: version, updates, data directory
- Check for Updates: manually check for and download a new version; when it’s downloaded, click Restart to Update
- Join Beta Program: get beta updates and early access to new features, at the cost of possibly running into less thoroughly tested changes
- Data Directory: where the index, settings, and logs are stored — click Open to go straight there (that’s where you grab the log)
- From here you can also jump to the changelog, privacy policy, terms of service, and the CLI and Skills documentation
Settings → Shortcuts: every shortcut in one place
Settings → Shortcuts: every shortcut in one place
Lists every shortcut in the app. Pressing
⌘ + / (Ctrl + / on Windows/Linux) in the Launcher opens this page directly.How do I get Linkly AI’s application runtime logs?
While running, the app automatically writes its full log to a localapp.log file (capped at 2 MB per file, with rotation). Attaching this file when you report an issue dramatically speeds up debugging. Sensitive data is already redacted.
There are two ways to grab the log:
Option 1: Open from inside the app (recommended)
This is the simplest path:1
Open the About page
In Linkly AI, go to Settings → About.
2
Open the data directory
Find the Data Directory row and click the Open button on the right. Your file manager will open at the folder that holds the app’s data.
3
Grab app.log from the logs subfolder
Inside that folder, open the
logs/ subdirectory and send us app.log.Option 2: Open the data directory manually
If the app has crashed or won’t launch, open the folder directly from disk:- macOS
- Windows
- Linux
- Open Finder.
- From the menu bar, choose Go → Go to Folder… (or press ⌘ + ⇧ + G).
-
Paste this path and press Return:
-
Find
app.login that folder and send it to us.
What if the app crashes during startup?
If the app crashes immediately on launch,app.log may not have been written yet. In that case we save the crash information to a separate startup crash log linkly-ai-startup-panic.log. Find it at the path below.
- macOS
- Windows
- Linux
- Open Finder.
- From the top menu choose Go → Go to Folder… (or press ⌘ + ⇧ + G).
-
Paste the path below and press Enter:
-
Find
linkly-ai-startup-panic.login that folder and send it to us.
This log is only created when a crash happens during startup, and each crash overwrites the previous one. If this file does not exist either, take a screenshot of the crash dialog or window and send it along with your OS version.
Where to send it
Open a GitHub issue, or reach us through any channel on the community page.

