# Graph: Search

Search is how you find your way around a workspace that has outgrown the sidebar.

In the graph, search narrows what you see: type plain words to match titles, or stack **chips** like `type:note` and `tag:work` to filter precisely. (Ask an agent a question and it searches the same workspace by meaning, surfacing notes that are *about* what you asked even when the exact words don't match.)

Use it to answer questions like:

- "Show me notes in this project."
- "Show me canvases but not plans."
- "Find work items tagged important."
- "Focus the graph on one area."

:::note Which search is which
"Search" means a few different things in Undra. They are not variations of one feature, they answer different questions.

| Where | What it does |
| --- | --- |
| **Command palette** (`Ctrl/Cmd + K`) | Jump straight to an item by title. You leave immediately. |
| **[Search](/docs/getting-started/getting-around/)** (`Ctrl + F`) | Look through your notes, plans and canvases by their words, then filter, sort and read previews without leaving. |
| **Graph chips** (this page) | Hide and show nodes already on the map. A filter, not a finder. |
| **[Connected folders](/docs/workspace/folder-portals/)** | Find files inside a folder you connected, by meaning rather than exact words. The only way to find a document. |

The CLI [`undra search`](/docs/reference/cli/) is the same meaning-based engine as the last row, pointed at your workspace from the terminal.
:::

## Simple version

Type normal words to search. Add chips like `type:note` or `tag:work` when you want more control.

## Reference

Graph search uses **chips** (small tokens). Press **Enter** to commit a chip.

:::tip Quick rules
- **AND** is the default: multiple chips mean "match all" (each chip you add makes the query more specific)
- **OR** only works inside a single chip using `|` (example: `tag:work|personal`)
- **NOT** uses `-` or `NOT` (example: `-tag:deprecated`)
:::

This Quick rules block is the canonical explanation of chip grammar for the whole graph. The [Groups & Presets](/docs/graph/groups-and-presets/) page reuses the exact same rules for its group queries and links back here.

## Facets {#facets}

| Facet | Meaning | Example |
|-------|---------|---------|
| `tag` | Match tag | `tag:work` |
| `type` | Match type | `type:note` |
| `path` | Folder contains | `path:projects/2026` |
| `source` | Source contains | `source:web` |
| `id` | Exact ID | `id:plan-123` |

## Operators {#operators}

| Operator | Meaning | Example |
|----------|---------|---------|
| **AND** | Multiple chips mean "match all" | `tag:work type:note` |
| **OR** | Only works inside a single chip using a pipe | `tag:work\|personal` |
| **NOT** | Prefix with `-` or `NOT ` | `-tag:deprecated`, `NOT type:canvas` |
| **Quoted phrase** | Match phrase in name or ID | `"project alpha"` |

## OR lives inside one chip {#or-scope}

This is the rule people trip over, so it gets its own section: **OR (`|`) only joins values *within a single facet*.** It cannot join two different chips, and it cannot join two different facets.

The pipe lives next to a chip's value, so it can only ever offer alternatives *for that one facet*. There is no "either this chip or that chip" operator across chips, because separate chips are always combined with AND.

**This works** (one chip, two values for the same `tag` facet, ORed):

```
tag:work|personal
```

**This does not do what you expect** (looks like "work tags OR notes," but it isn't):

```
tag:work | type:note
```

There is no way to say "either a work tag or a note" in one query. Written as two chips (`tag:work` and `type:note`), the space between them means **AND**, so you get only items that are *both* tagged work *and* of type note. Written as one run-together token (`tag:work|type:note`), the pipe stays inside the `tag` facet, so both halves (`work` and `type:note`) are matched as tag values: nothing is tagged literally `type:note`, so that half matches nothing. Either way, you never get the cross-facet "or" you were reaching for.

The takeaway: keep `|` glued to one facet's values (`tag:a|b|c`, `type:note|canvas`, `source:web|github`). The moment you want to mix *different* facets, AND is your only combiner, so narrow with it instead.

## Examples {#examples}

Here are real-world queries you can use.

**Work notes that aren't deprecated:**

```
tag:work type:note -tag:deprecated
```

**Web or GitHub sources related to rendering:**

```
source:web|github "render"
```

**Anything in 2026 projects folder:**

```
path:projects/2026
```

**Important work items:**

```
tag:work tag:important
```

**Notes or canvases (not plans):**

```
type:note|canvas -type:plan
```

**Items with specific ID pattern:**

```
id:plan-123
```

**Recent items from multiple sources:**

```
source:web|github|email
```

**Exclude archived items:**

```
-tag:archived -path:archive
```
