Privacy-first note assistant and search engine for Obsidian. Fast local text search out of the box, with optional semantic search and AI-powered note enrichment.
Current version: 0.3.2 (Alpha).
Alpha: Lina is usable but under active development. Behaviour and internal formats may still evolve between versions. Keep regular backups of your vault.
Help | Glossary | User Manual | Commands Guide | Changelog | Roadmap
Lina helps you find, connect, and enrich your Markdown notes in Obsidian without taking control away from you. It operates across three distinct layers:
/ask, /tags, /yaml) directly from the sidebar. AI suggestions are only applied to your notes after your explicit review and confirmation.Get up and running in a few simple steps:
manifest.json, main.js, and styles.css from the latest release and place them into <Vault>/.obsidian/plugins/lina/ (or install via Obsidian Community Plugins once listed)..lina: If you use more than one device, synchronise the whole .lina folder, with all its files and subfolders, together with your vault.Text, Hybrid, Semantic), an actions dropdown menu for secondary note analysis tools, a discrete "silent-success" operational status indicator, and direct access to device diagnostics./ask, /tags, /yaml)Type a slash command into the sidebar search bar to interact with your active note context:
/ask <prompt>: Ask questions about the current note or selected excerpt./tags: Get tag suggestions with checkboxes to apply non-duplicate tags. Suggestions come from the same engine as the note analysis: they start from the vocabulary already used by related notes in your vault and only ask the AI to fill the gaps./yaml: Suggest frontmatter properties safely without overwriting existing data, using the same engine./ask, /tags and /yaml act on your active note or selection; they are not search modes.
Explicit Confirmation: Lina never modifies your notes silently. Every AI suggestion requires explicit confirmation before changes are saved to disk.
Lina supports independent configuration for AI Analysis (chat and commands) and Vector Embeddings (semantic search). You can mix and match providers according to your workflow:
| Provider | Type | Analysis / Chat | Embeddings | Embedding Maintenance | API Costs |
|---|---|---|---|---|---|
| Ollama | Local (when the Base URL is this computer) | Supported | Supported | Manual, or automatic on the Desktop Producer when set to automatic (local only) | Local compute (free) |
| Mistral | Remote | Supported | Supported | Manual update only | Billed directly by provider |
| OpenRouter | Remote | Supported | Supported | Manual update only | Billed directly by provider |
app.secretStorage and never exposed in logs, manifests, or sync channels. Embedding updates on external providers always require explicit confirmation to prevent unintended API credit consumption.Lina keeps semantic search practical and predictable across desktop and Android:
Lina is built around data ownership and transparent operation:
/ask, /tags, /yaml, folder or Inbox analysis) with a provider you configured.app.secretStorage) and are not written to data.json or the synchronised .lina folder.data.json holds this installation's preferences. Avoid synchronising it between devices.See the Help for details.
Lina organizes settings by what you want to do, using Obsidian's native page navigation:
› Geral / General (Native Page)
├── Plugin information, language, and multilingual guidance
└── Device role, role actions, and friendly local device name (editable on every device)
› Pesquisa / Search (Native Page)
├── Semantic search enablement, provider, model, endpoint, credential and connection test
└── Search language and hybrid ranking weights
› Assistente de IA e Análise / AI Assistant & Analysis (Native Page)
├── Provider, model, endpoint, credentials, timeout, and connection test
└── Inbox and its limit, plus YAML/tag behaviour
› Privacidade e Exclusões / Privacy & Exclusions (Native Page)
└── Excluded folders, path terms and content terms: editable on the Producer, read-only on a Companion
› Produtor / Producer (Native Page — Producer devices only)
└── Embedding update, index maintenance, and binary-copy actions
› Diagnóstico / Diagnostics (Native Page)
└── Synchronisation check, device diagnostics, binary-copy status, and debug
Support & Contact (Root Hub Footer)
├── Support & feedback form link
└── Email support contact with one-click copy button
Lina coordinates multi-device vaults seamlessly across Desktop and Mobile:
.lina; (4) configure the Companion. The order is functional: a Companion needs the artefacts the Producer produces, and cannot replace the Producer..lina folder, including all files and subfolders, must be synchronised between the Producer and its Companions. Excluding .lina or any part of it breaks the Producer–Companion model. Keep data.json local to each installation..lina folder has been synchronised, the Companion has no search data to consume.At startup, the active Producer recovers interrupted embedding publications under the existing ownership and writer protections. Companion and standby devices do not repair shared artefacts. Lina checks the canonical JSONL and manifest before repairing the derived binary copy; detected incomplete or inconsistent publications disable semantic search and automatic embedding updates until recovery or a confirmed rebuild. The JSONL format is unchanged. These checks use existing counts and identities; they cannot distinguish different JSONL generations with the same count and vector identity without a canonical content digest.
If you experience issues, have questions, or wish to suggest improvements:
Contact details are used solely to respond to inquiries and are never shared with third parties.
Contributions and feedback are welcome:
# Install dependencies
npm ci
# Run development build
npm run dev
# Validate changes
npm run lint
npm test
npm run build