> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tatara.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Bases

> The base format: a live saved view over the other documents in your brain, with filters, typed columns, and tabbed views.

A base is a saved view over the other documents in your brain. Its rows are documents, queried live every time the view is opened. Ask your agent for a view — "a base of our competitor profiles", "an index of research notes nobody has touched in 30 days" — and it creates the document in the base format. See [Document formats](/formats/overview).

A base holds no data of its own. The document stores only the question; the answer is whatever documents currently match. Add a matching document tomorrow and it appears in the base without anyone editing the base.

<Note>
  This is the whole difference between a base and a [table](/formats/table). A table's rows are values kept in its own body. A base's rows are other documents. Both render as a grid, so choose by what a row means: a record you are keeping, or a document that already exists.
</Note>

## What a base can express

* **Filters** select which documents appear: by type, folder, tags, or any key in a document's frontmatter — "type is competitor", "in the research folder", "last reviewed more than 30 days ago".
* **Columns** come from the properties every document carries (title, description, type, tags, folder, created, updated) plus any frontmatter key. A column can be typed — number, date, select — which drives how it sorts and what can be summarized.
* **Views** are tabs. One base can hold several views over the same pool of documents, each with its own extra filters, column order, sorting, grouping, and per-column summaries such as counts, sums, averages, and date ranges.

Under the hood, all of that is stored as one fenced block of configuration in the document body:

````markdown theme={null}
```base
filters:
  and:
    - 'type == "competitor"'
properties:
  tier:
    type: select
    options:
      - leader
      - challenger
      - niche
  arr:
    type: number
    displayName: Est. ARR ($M)
views:
  - type: table
    name: All competitors
    order:
      - title
      - tier
      - arr
      - updated
    sort:
      - property: arr
        direction: DESC
    summaries:
      arr: Sum
  - type: table
    name: Needs review
    filters:
      and:
        - 'updated < now() - "30 days"'
```
````

Your agent writes and maintains that block. In the app, you work with the rendered view.

## Working with a base in the app

The rows you see are read live from the current state of the brain, not from anything stored in the base.

A base with more than one view shows a tab per view, plus a count of results. The toolbar carries `Sort`, `Filter`, a `Columns` control for visibility, a grouping control, and a control for adding a row.

Clicking a row opens that document.

Editing a cell writes to the document in that row, not to the base: it sets either one of that document's universal fields or one of its frontmatter keys. If the write fails, the cell reverts and the app tells you.

Adding a row creates a real document, pre-filled to match the view it was created in: its folder, type, tags, and frontmatter are set so that it satisfies the view's filters and therefore appears in it.

A base document has no properties rail and no width control, and its title is read-only on the document page. Rename it from the sidebar.

<Columns cols={2}>
  <Card title="Data tables" icon="table" href="/formats/table">
    A grid whose rows are values kept in the document itself.
  </Card>

  <Card title="Agent skills" icon="code" href="/skills">
    Install the skill that teaches your agent the base grammar.
  </Card>
</Columns>
