ProductsPrivacyLibraryDocsPricingGitHubAdd to ChromeDownload for Mac

// MAC APP

Background indexer

The background indexer is what makes Omna fast. While you work, it quietly processes every file in your watched folders and writes a compact set of search artifacts to disk — so when you later drop one of those files on the capsule, Omna walks the pre-built index instead of embedding from scratch, returning a slice in well under a second.

3 min readPre-indexing for instant slicing

It runs at low macOS scheduler priority and caps its CPU use, so foreground apps stay snappy and fanless MacBooks stay cool.

What the indexer builds

For each supported file, the indexer creates a subfolder under ~/Library/Application Support/Omna/index/ and writes five artifacts:

ArtifactWhat it stores
index.bm25Keyword index — each row's term frequencies for fast keyword matching
index.embedA 768-number semantic embedding (vector fingerprint) for every row, enabling meaning-based search
index.hnsw.segsA segmented HNSW graph over the embeddings, so queries jump to nearby vectors in O(log N) instead of scoring every row
index.rowsA memory-mapped row-text store so slicing reads only the rows that matched, not the whole file
index.fingerprintA content hash of the source file; Omna compares it before every run and skips files whose bytes haven't changed

The default disk cap across all index subfolders is 50 GB. When it's reached, Omna evicts the least-recently-queried file's subfolder (LRU).

When it runs — and when it pauses

The indexer runs continuously whenever Omna is open, but pauses automatically to respect your Mac's resources.

Note: Indexing pauses when your Mac is on battery, when system CPU is above 70%, or when Omna detects an active Zoom, Google Meet, or Microsoft Teams call. It resumes automatically when the condition clears.

By default it caps itself at half your Mac's CPU cores. Low-power mode (menu bar → Low-power mode) drops that to 30% of cores. In both modes, work is scheduled at background QoS, which steers it to the efficiency cores on Apple Silicon.

Performance

  • Small indexed files (a few thousand rows): sub-second on every query.
  • Large indexed files (e.g. a 4-million-row Parquet): about 20 seconds on the first query after Omna starts (loading the graph from disk), then sub-second for the rest of the session.
  • Unindexed files: 15–45 seconds on first drop, after which the indexer builds the index so the next drop is instant.

How large files are handled

A multi-million-row file can take hours to fully index. During partial indexing, already-indexed rows take the fast path and the rest fall through to live embedding — you still get a result. Progress shows in the menu bar, e.g. "NYC Taxi indexing… 2.1M / 3.95M rows · 53%." Quit mid-index and Omna resumes where it left off — it never restarts from row 1.

Watched folders

  1. Add a folder — click the O menu-bar icon → Add files or folders… (⌘O), pick a file or folder, and Omna starts indexing immediately.
  2. Remove a folderO icon → Preferences… (⌘,), remove it from the list. Omna stops watching it and deletes its index artifacts.

What's next