Ilya60 downloadsAsk questions across your notes and the web, then open the note, heading, PDF page, or URL behind every answer. Use local models with Ollama or LM Studio, or connect a cloud API.
Cited deep research across your notes and the web.
Attest turns your vault and optional web sources into something you can ask questions of. Instead of searching for the note or page that might hold the answer, you ask in plain language and get a written response where every claim is attested by the note, heading, document page, or web source it came from. One click takes you to the source.
You choose which folders it may read, and which AI model answers: a model running on your own machine, or a cloud service you already use. Web search is optional and runs only when the selected research scope allows it. Nothing leaves your vault unless you ask it to.
Obsidian 1.8.7+ on desktop and mobile · cloud AI on iOS and Android

Attest is not yet available in the Obsidian Community plugin catalog. When it is published, install it through Settings → Community plugins, then enable it and open Settings → Attest.
If a step is unavailable, open the corresponding Settings section. Attest displays the status of each model and index profile.

ollama
format and enter the Ollama address by hand.openai-compatible format and enter the URL yourself.Use the test button in the profile settings to check the connection before the first indexing run.
On iOS and Android, use a cloud provider endpoint. Ollama, LM Studio on localhost, and other loopback endpoints are unavailable from the phone and fail immediately with an explanatory error.
All model requests use Obsidian's request API on mobile, so cloud endpoints do not need browser CORS headers. Obsidian buffers the provider response before exposing it to the plugin, which means chat and capability probes show a waiting state and then render the response instead of displaying tokens progressively. Desktop model responses continue to stream as they arrive.
Attest recognises a provider by the base URL of the Server profile and reads its model listing in that provider's own format, so chat and embedding models are told apart automatically. OpenAI, Anthropic, OpenRouter, Mistral, Groq, DeepSeek, Together AI, DeepInfra, Fireworks AI, Cerebras, Nebius AI Studio, Novita AI, and Ollama are recognised by name; LM Studio, vLLM, llama.cpp, and any other OpenAI-compatible endpoint keep working through the generic listing. See the provider reference for base URLs, API formats, and how each provider's embedding models are detected.
The embedding profile is verified with a real embedding request when it is saved, so a model that the provider lists but cannot embed is suspended with an explanation.
An Index profile determines which notes Attest can use as local sources.
/ means the entire vault.Attest supports Markdown, TXT, PDF, EPUB, FB2, and DOCX. Scanned PDFs without a text layer cannot be read.
For a large vault, build the index on desktop and sync it with the vault:
.attest/index) and the Attest plugin
settings. Make sure your sync tool does not exclude hidden folders.Mobile can update an index with conservative batch, PDF, and changed-file limits. A destructive rebuild requires explicit confirmation. Large or PDF-heavy rebuilds are still best performed on desktop and synced after completion; do not edit the same index concurrently on two devices.
A fast mode for local retrieval and models without tool calling or reasoning. Choose it when you need a predictable short answer or when the model has not passed the capability check.
A multi-step mode for compatible models. It can search for additional sources and displays its progress in chat. If the model does not support the required capabilities, Attest explains why and falls back to Instant.

A web search runs only in a scope that asks for one. A new chat starts in the index-only scope, and no search provider is queried until you switch that chat to Web or Index + Web. In Thinking mode the web tools are not even offered to the model outside those scopes.
DuckDuckGo is available from the first launch so those scopes work without setup, and it needs no account or key. Switch it off, or add a keyed search provider, under Settings → External sources; the web source reference lists every source and what it costs. When a search does run, the provider receives only the entered question — retrieved vault content and embeddings are never sent to it. Chat and embedding providers receive only the data needed for the user-selected request.
One exception is not a search: when a note holds external links, Thinking mode may check whether those URLs still resolve, which contacts the linked host directly in any scope.
Note mutation access is a per-chat-model permission stored with the chat model profile, and a new
profile carries it enabled whenever tool calling is on. A model that holds it can create, update,
and delete vault notes, and can save downloaded documents into the download folder
(Attest/Downloads by default) — the plugin does not ask for a separate confirmation before each
write. Without that permission Attest only reads notes, and answers reach the vault solely through
your own save or append action. Use a model and vault you trust, or turn tool calling off for a
profile that must stay read-only.
| Requirement | Details |
|---|---|
| Obsidian | Obsidian 1.5.0 or later on desktop, iOS, or Android. |
| Chat | Desktop supports local or cloud models. Mobile requires a cloud endpoint and buffers model responses. |
| Vault search | A configured embedding model and a completed index are required; desktop-built synced indexes are best. |
| Documents | Markdown, TXT, PDF, EPUB, FB2, and DOCX are supported. Scanned PDFs without a text layer are not readable. |
An honest list of what Attest does not do, so you can judge it before installing.
The diagnostic report in the toolbar helps with provider, index, or research-flow problems. Before sending a report, make sure it contains no private notes, and never attach an API key.
| Problem | What to do |
|---|---|
| Chat model unavailable | Check the URL, API key, and model ID, then run the connection test. |
| Empty index | Choose an embedding profile, check included folders, and run indexing. |
| Thinking unavailable | Recheck model capabilities or choose Instant. |
| Web request failed | Disable web search for a vault-only answer or check source settings. |
| Citation does not open | Make sure the source file has not been deleted or moved. |
Release-by-release changes are listed in the Changelog. To send a patch, start with the Contributing guide; for development builds, project commands, architecture, and release requirements, see the Technical reference. Report reproducible bugs in GitHub Issues, excluding API keys and private notes. Report vulnerabilities through the Security policy.
Attest is free and open source, built in spare time. If it saves you time, you can support further work:
Support is entirely optional and never unlocks features — every capability stays available to everyone. Starring the repository, reporting a bug, or describing how you use Attest helps just as much.
Attest is available under the MIT License.