OMEGA for Obsidian:
Semantic Search
for Your Developer Vault
Obsidian is where a lot of developers keep their thinking: architecture decisions, research notes, debugging journals, system diagrams. The vault grows. And then it becomes unsearchable, because keyword search does not understand meaning. You know a note exists. You cannot find it. The OMEGA Obsidian plugin fixes this. It runs semantic search locally inside your vault using bge-micro-v2 ONNX embeddings, connects your notes to OMEGA's memory system, and surfaces the notes you forgot you wrote.
Why Keyword Search Fails Developer Vaults
A developer vault does not accumulate blog posts. It accumulates decisions: why you chose Postgres over SQLite, what the race condition in that queue handler actually was, how you debugged the CORS issue that took three hours. These notes use the language of the moment you wrote them, not the language you will use when you need them.
Six months later you search for "database choice reasoning" and find nothing. The note you want says "went with pg because of the row-level locking requirements." Keyword search requires you to remember what you called things. Semantic search understands what you meant.
The problem compounds as the vault grows. At 50 notes, you can browse. At 500 notes, you rely on search. At 5,000 notes, keyword search is not a tool anymore, it is a lottery. Most developer vaults hit the 5,000-note range within a few years of active use. Obsidian's built-in search is not designed for that retrieval problem.
What the OMEGA Obsidian Plugin Does
The plugin has five distinct capabilities. Each one addresses a different failure mode in how developers use Obsidian vaults today.
The plugin is desktop-only (isDesktopOnly: true) because it uses Node.js APIs for the OMEGA bridge and ONNX runtime. Mobile Obsidian does not expose these APIs. This is a constraint of the architecture, not a roadmap gap.
Under the Hood: Embeddings and the OMEGA Bridge
The embedding model is bge-micro-v2, a 384-dimensional model from BAAI. It is small enough to run inside Obsidian without perceptible lag (under 10ms per note on Apple Silicon) and accurate enough for vault-scale retrieval. Transformers.js v3 handles the ONNX runtime directly in Node.js, no Python process required.
When you open a note, the plugin checks whether it has been embedded. If not, it queues an embedding job. The queue processes in the background during idle time, so vault indexing does not block your editing. A 5,000-note vault indexes in roughly 30 minutes on first run, with incremental updates on subsequent opens.
Search queries go through the same embedding pipeline. Your query string is embedded to a 384-dimensional vector, and cosine similarity is computed against all stored note embeddings. The top-k results are ranked by similarity score and displayed in the search panel.
The OMEGA Bridge connects vault embeddings to the broader OMEGA memory system. In HTTP mode, the plugin talks to a local OMEGA server process. In SQLite mode, it reads the database file directly. Either way, vault notes and agent memories share the same embedding space, so a search can return both a note you wrote three years ago and a memory OMEGA stored last session.
| Bridge Mode | Requires | Best For |
|---|---|---|
| HTTP | OMEGA server running (omega serve) | Active development sessions with Claude Code |
| SQLite | OMEGA installed, server optional | Browsing memories without keeping a server process open |
| Offline | Nothing (local only) | Pure vault semantic search, no OMEGA integration |
Installing via BRAT
The plugin is awaiting review in the official Obsidian community directory (PR submitted to obsidianmd/obsidian-releases). While that review is pending, install via BRAT, the standard beta installation path for Obsidian plugins.
Step 1: Install OMEGA
$ pip install omega-memory $ omega setup
This installs the OMEGA package and initializes the local SQLite database at ~/.omega/. Python 3.11+ required. The setup step downloads the ONNX embedding model used by the OMEGA server (~33MB). If you only want the Obsidian plugin in offline mode, this step is optional.
Step 2: Install BRAT in Obsidian
Open Obsidian Settings, navigate to Community Plugins, and search for BRAT (Beta Reviewers Auto-update Tool). Install and enable it. BRAT is the standard method for installing community plugins before they appear in the official directory.
Step 3: Add the OMEGA Plugin via BRAT
In BRAT settings, click "Add Beta Plugin" and enter the repository path:
omega-memory/omega-obsidian-plugin
BRAT installs the plugin and configures automatic updates. Enable the plugin in Obsidian's Community Plugins list. You will see a new OMEGA panel in the right sidebar.
Step 4: Configure the Bridge Mode
Open the OMEGA plugin settings in Obsidian. Select your bridge mode:
Bridge Mode: HTTP | SQLite | Offline HTTP: Server URL: http://localhost:8765 (start with: omega serve --http) SQLite: Database path: ~/.omega/omega.db (default, no server needed) Offline: (no OMEGA required — vault search only)
After saving settings, the plugin begins indexing your vault in the background. The status bar shows indexing progress. First-run indexing time depends on vault size: expect a few minutes for a large vault, seconds for a small one.
Step 5: Run a Semantic Search
Open the Command Palette (Cmd+P on macOS) and run "OMEGA: Semantic Search." Type a query in natural language. Results appear ranked by semantic similarity, not keyword frequency.
What Is Coming Next
The plugin is in active development. The core features (semantic search, OMEGA bridge, Resurface, Agent Memory panel, contradiction detection) are shipped and working. Several capabilities are in the pipeline:
The plugin source is public at github.com/omega-memory/omega-obsidian-plugin. Issues and feature requests welcome. The development roadmap follows what developers actually run into when using their vaults alongside Claude Code and other agentic tools.
Frequently Asked Questions
Does the plugin send my notes anywhere?
No. All embedding computation runs locally using the bge-micro-v2 ONNX model inside Obsidian's Node.js environment. In offline and SQLite modes, no network calls are made at all. In HTTP mode, the plugin communicates only with your local OMEGA server process on localhost.
What is the difference between semantic search and Obsidian's built-in search?
Obsidian's built-in search matches text strings. If the note says 'pg row-level locking' and you search for 'database concurrency', you get no results. Semantic search embeds both your query and your notes as vectors and matches by meaning. The gap between what you wrote and what you search for does not matter.
What does Resurface actually show?
Resurface shows notes you have not opened in 7 or more days that are semantically related to the note you are currently editing. It runs passively and appears in the sidebar panel. No action required. It is designed to surface knowledge you accumulated and then forgot, specifically because of the temporal gap between when you wrote something and when it becomes relevant again.
Do I need OMEGA installed for the plugin to work?
No. The plugin has an offline mode that provides semantic vault search without any OMEGA dependency. If you want the Agent Memory panel, contradiction detection with OMEGA memories, or the full bridge capabilities, you need pip install omega-memory. The core semantic search works standalone.
Is this compatible with Obsidian Sync?
Yes. The plugin stores its index data in the plugin's data folder, which Obsidian Sync handles normally. If you use multiple devices, each device maintains its own embedding index. The OMEGA database is not synced by Obsidian Sync; that requires OMEGA's own cloud sync capability.
Related reading
OMEGA is free, local-first, and Apache 2.0 licensed.