Skip to main content
One bar, two modes. The Search / Ask bar sits at the bottom of every page — a small launcher until you open it. On the workspace canvas it stays open, and Cmd/Ctrl+K focuses it. Press Tab in the empty bar to switch modes; the text you typed carries over.
  • Search finds projects, experiments, runs and papers by name. Every word you type must appear in a name or slug, in any order — sweep lora finds “LoRA rank sweep”. A complete id finds its row, and a paper is found by its title or its arXiv or DOI key.
  • Ask finds work by meaning. It is the Assistant, inline on the page; Open in Assistant continues the chat on the full page.
Search runs when you press Enter, never as you type. Editing the query hides the old results until the next Enter. Pick All, Projects, Experiments, Runs or Papers in the type menu at the right of the input.

Filter grammar

Operators are parsed deterministically. The words left over after parsing must match names and slugs. Supported operators: entity type, lifecycle status, relative dates (today, yesterday, last week, last N days), project:, owner:, tag:, after: and before:, config.<key> comparisons, and metric.<key> comparisons.

Chips

Every interpretation is shown as a removable chip, so you can correct the parse without rewriting the query. Explicit UI choices — the type menu, the workspace — take precedence over anything inferred.
Unrecognised or ambiguous wording stays as words to match, or produces an actionable validation message. It never silently invents a metric key, threshold, aggregation or owner.

Metric comparisons

A metric predicate uses the latest scalar for an exact metric key with unambiguous series dimensions. An absent or ambiguous measurement does not match — it is not treated as zero and not treated as passing. Structured predicates apply before the candidate limit, so a pure filter query enumerates matching rows deterministically.

Results

The first result is selected as soon as the answer arrives. Up and Down move the selection and Enter opens it; clicking a result opens it too. Each result shows its type, its breadcrumb and its status. Matching runs expand under their experiment, and repeated siblings collapse behind a show-more control. Rows matching every word rank first, then typo-tolerant matches on names.
A failed answer shows as an error with a retry, never as zero results. When nothing matches by name, the empty state points you to Ask rather than reporting the work as missing.

Workspace scope

Search respects the selected workspace. Choose All workspaces for cross-workspace discovery — the most common “search is broken” report is a project filed on a different shelf. Changing workspace or query aborts obsolete requests, so an answer for inputs you have left is never displayed.

The knowledge index

Ask and your agents search a wider index. Beyond entities, it covers documents: captured sessions, notes, papers, connected GitHub repositories, imported W&B and Benchling content, and artifact text. Two channels answer every query — an exact channel that matches identifiers, names and paths, and a semantic channel that matches meaning — sectioned by source with per-result provenance.
A literal identifier is the strongest query you can write. An issue number, a run slug, a file path or a hash goes straight through the exact channel. Phrasing matters much less than people expect; identifiers matter much more.
Search previews position their window on the chunk that matched the query, not on the first N characters of the document — which on many documents is a metadata header rather than anything about your question.

For agents

search was called search_knowledge until October 2026; the old name has no alias. See the MCP reference.

When the engine is off

A self-hosted install can run without the knowledge engine. Search then returns state: "partial" with SQL-exact results only — matching projects, experiments and artifacts, but not run names, and with no semantic channel. That state is reported, not hidden. See self-hosting.