---
title: "Search"
description: "Find what was actually said. On this machine. No model required."
---

Every captured sitting, searchable by text. Dashboard → **Search**, or:

```bash
assay search "the words you remember"
```

Nothing leaves the machine. No model is required. The index lives inside the store.

## What you type

| You type | What happens | Badge |
|---|---|---|
| Words you remember | Matched literally | **exact** |
| A typo, a plural, a near-miss | Nearest word the corpus knows | related, lower weight |
| A topic (two or more known words) | Expanded into words **your** corpus uses around it | **related** |

**`exact` always ranks above `related`.** Your own words come first. The badge tells you which you are looking at.

Click a result and you land on that turn in its session, even deep in a long sitting.

## What is not indexed

**Tool calls and their output are out.** They are most of the rows and most of the characters — dumps, diffs, command output — and they bury the sentence you meant.

Search covers **messages and agent reasoning**. The page says so above every result set.

Change it with `search.kinds` in config if you disagree. The cost is yours.

## How it matches (short)

- **Exact** — standard ranking over an inverted index.
- **Near-misses** — compare an unknown word to the vocabulary this corpus actually has. No stemmer.
- **Concepts** — look at the first hits, take words distinctive to them, ask again. Two or more known words only. One word is a lookup (an error code, a name).

Rankings are fused so the two scores never have to share a unit.

## When it is built

At capture, in the same call that records the turn. A turn is searchable when it exists. There is no batch job to go stale.

`transcripts prune` and `shred` reach the index in the same act as the turns.

## Maintenance

```bash
assay search backfill     # sittings captured before search existed
assay search compact
assay search stats
```

The dashboard never writes the index.

## Needs two things

The Search tab needs the index tables **and** the content key on this machine. Missing either: a sentence naming which. Not an empty box.
