By default /search ranks documents only — the historical fast path. You can extend the search to two more sources by clicking the pills above the search results:
- **Documents** — the original hybrid search (Postgres FTS + pgvector via Reciprocal Rank Fusion). Sensitivity / MIME-family filters and saved searches all bind to this source. - **Conversations** — full-text search across every agent conversation you've authored in this workspace. Hits are deduped per conversation (a long thread that mentions "smith" 30 times shows once) and ranked by ts_rank_cd. Click a hit to jump into the conversation through the agent drawer's History rail. - **Audit events** — full-text search across event types and payloads. Each hit shows the type, the actor, the timestamp, and a snippet with the matched terms highlighted; "Open in /audit →" jumps to the corresponding stream.
Toggle multiple sources to see all three sections together. The results summary at the top counts every source's hits ("47 results for ..."). The URL preserves your selection (`?sources=docs,conv,audit`) so a specific combination is shareable.
When to reach for unified search:
- "I remember asking the agent about this last week" — turn on Conversations and search a phrase you remember. - "Who deleted that document?" — turn on Audit and search the document id or display name. The events thread carries the actor + timestamp; click into /audit for the full stream. - "What changed when we onboarded that vendor?" — turn on Audit and search the vendor name. Configuration mutations, member adds, permission grants all land in the audit log.
Saved searches stay docs-only — they're built for "find me docs matching a recurring criterion", which doesn't translate cleanly to conversations or audit events. If you find yourself running the same audit-event search regularly, add a saved-search entry by hand at /audit (it has its own filter URL state that's shareable).
Snippet rendering is the same across all three sources — `ts_headline` from Postgres wraps matched terms in `<mark>` tags, and the Kodori sanitizer trusts only those tags through to the page (anything else gets escaped).