# Knowledge bases

| Command | Purpose |
|---|---|
| `vatio kb [list]` | List knowledge bases and references |
| `vatio kb show NAME` | Inspect a base and its entries |
| `vatio kb create NAME` / `vatio kb rm NAME` | Create or delete an unreferenced base |
| `vatio kb write BASE ENTRY [FILE]` | Write an entry, from a file or stdin |
| `vatio kb cat BASE ENTRY [--version N]` | Print an entry's stored Markdown, or one of its versions |
| `vatio kb rm-entry BASE ENTRY` | Delete one entry |
| `vatio kb status BASE` | What this environment changed that live does not have, and any conflicts |
| `vatio kb publish BASE` | Take this environment's changes to the base live, without the agent |
| `vatio kb history BASE` | Every version that reached live, newest first |

`write` reads stdin when no file is given, which is what makes the edit loop
one line:

```bash
vatio kb cat docs refunds | edit | vatio kb write docs refunds
```

`show` is the one that answers "why is it not answering from this": it reports
which entries are ready to be searched.

**Entry commands work in one environment.** `show`, `write`, `cat`,
`rm-entry`, `status` and `publish` take `--env preview` or `--env live`, and
default to `preview`. A write there is answered from in preview only, and goes
live with `vatio publish`. `--env live` reads and writes live directly. See
[Knowledge bases](https://vatio.ai/docs/knowledge).
