---
title: PM Search Integration
---

# PM Search Integration

PM items are discoverable through the global search (Ctrl+K) alongside
sessions, SMS, Slack, Telegram, RSS, and webhook results -- via both
text search and semantic embedding similarity.

## What it is

PM items appear in global search results with a KanbanSquare icon, showing
status, assignee, and due date in the snippet. Clicking navigates to the
Mission Control virtual project. A **"Use as context"** action in the item
drawer copies the item's full context (fields, subitems, updates) to
clipboard for pasting into a session.

A `PM_SUGGEST_ITEMS` IPC channel returns semantically similar PM items for
a text query.

When a session is linked to a PM item, the global search deduplicates: the
standalone PM result is removed and the session result represents both.

## Where to find it

Open the global search anywhere in Omniscio with Ctrl+K and type; PM items come
back alongside the other result kinds, each labelled with its status, assignee
and due date. Selecting one navigates to the Mission Control virtual project,
and from the item drawer the **"Use as context"** action is where you copy an
item's full context for pasting into a session.

## How it behaves

### Embeddings

Embeddings are stored in `pm_item_embeddings` as 384-dimensional float32
blobs (1536 bytes each). Source text combines the item name with all column
value texts. The embedding model runs in a `utilityProcess` child.

Key behaviors:

- Re-embedding is debounced (500ms) after item changes
- After board sync, all synced items are scheduled for re-embedding
- Backfill processes items without embeddings in batches of 50
- Semantic search uses brute-force cosine similarity (capped at 10k
  embeddings, threshold 0.4)
- All operations check `getEmbeddingModelStatus() === 'ready'` first

### Settings

All PM search stages are gated on `missionControlEnabled`. The "Use as
context" action only copies text -- it never spawns a session.

## For agents

### IPC channels and CLI routes

- Global search (`SEARCH_ALL`) includes PM text-search and semantic stages
- `PM_SUGGEST_ITEMS` -- semantic item suggestions
- CLI: `GET /pm/search?q=&boardId=&assignee=&status=` for board-scoped and
  cross-board search with filters

The feature's obligations are pinned in `pm-search-integration-contract.md` under
`.claude/memory/contracts/`.

## Related

The results themselves come from the boards, so [mission-control.md](mission-control.md) is the
parent feature. [global-search.md](global-search.md) covers the search surface these results
appear in, and [semantic-search.md](semantic-search.md) covers the embedding-based matching PM
items share with the other content types.
