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

# The Runs Table

> Organize the runs table — columns, grouping, visibility, deleting, filtering, sorting, search, and preset views.

The runs table — the panel on the left of a project — is where you find, organize, and select the runs you want to work with. It supports extensive customization to help you cut through a project with many experiments.

<img src="https://mintcdn.com/trainy/Q1p3R0pB-6vWZ8VS/images/pluto/run-table.png?fit=max&auto=format&n=Q1p3R0pB-6vWZ8VS&q=85&s=96bc68deafe3017368dcba26dfdd2a89" alt="Run table with columns" width="2040" height="1616" data-path="images/pluto/run-table.png" />

## Column Header Menus

Right-click or click the menu icon on any column header to access options:

* **Sort** ascending or descending
* **Rename** the column display name
* **Set column color** for visual grouping
* **Pin column** to the left or right side of the table to keep it visible during horizontal scrolling. The **Select**, **Status**, and **Name** columns are pinned by default.

<img src="https://mintcdn.com/trainy/l_Z-YzGUiwLATp8A/images/pluto/column-pin-menu.png?fit=max&auto=format&n=l_Z-YzGUiwLATp8A&q=85&s=918581eee8b49590da946dc6659d1b18" alt="Column pin menu" width="225" height="280" data-path="images/pluto/column-pin-menu.png" />

You can also **drag and drop** column headers to reorder them.

## Column Picker

Click the **Columns** button to choose which columns are visible in the runs table. The default columns are Status, Name, Id, Created, Duration, Owner, Tags, and Notes, but you can add or remove any column.

<img src="https://mintcdn.com/trainy/ck7WI5896eYTYADa/images/pluto/column-picker.png?fit=max&auto=format&n=ck7WI5896eYTYADa&q=85&s=e30f9947a3cfe09e96b03b0dce00c1f7" alt="Column picker" style={{ maxWidth: '400px' }} width="780" height="810" data-path="images/pluto/column-picker.png" />

## Grouping Runs

Group the runs table into a **bucket tree** by any field the runs already carry.

<Note>
  Grouping runs is currently in alpha. Please send any feedback to [founders@trainy.ai](mailto:founders@trainy.ai)
</Note>

### Grouping by a field

Click the **Group** button in the toolbar (between **Filter** and **Columns**) to open the *Group runs by* picker, then add a field. You can group by:

* **System** — a run's `Status`, `Name`, or `Owner`.
* **Tag-derived** — the `Group` field, which buckets runs by the value of their `group:` tag. A run tagged `group:resnet-sweep` lands in the `Group: resnet-sweep` bucket.
* **Config** — any value from a run's logged config (e.g. `batch_size`, `optimizer`). The picker lists the 100 most recent config keys; type in the search box to reach others.
* **System metadata** — any value from a run's system metadata (e.g. `gpu_count`), also searchable beyond the recent 100.

<img src="https://mintcdn.com/trainy/ck7WI5896eYTYADa/images/pluto/grouping-field-picker.png?fit=max&auto=format&n=ck7WI5896eYTYADa&q=85&s=1fc69e2c830cd1006e0102c203c57da7" alt="The Group runs by field picker, showing System, Tag-derived, Config, and System metadata fields" style={{ maxWidth: '380px' }} width="704" height="716" data-path="images/pluto/grouping-field-picker.png" />

Once grouping is active the **Group** button shows a badge with the number of grouping levels, and a **Clear** button in the picker removes them all.

### Multi-level grouping

Grouping is a stack of fields. Click **Add grouping field** to add another level (up to **5**). The first field is the outermost bucket and each subsequent field nests inside it. Reorder levels with the up/down arrows on a chip, swap a level's field by clicking it, or remove a level with its ✕.

<img src="https://mintcdn.com/trainy/ck7WI5896eYTYADa/images/pluto/grouping-multilevel.png?fit=max&auto=format&n=ck7WI5896eYTYADa&q=85&s=937d212ab1f1f85ff3ae3f2ea95ddac6" alt="Group runs by picker with two stacked levels: optimizer, then model" style={{ maxWidth: '440px' }} width="832" height="362" data-path="images/pluto/grouping-multilevel.png" />

Grouped mode replaces the flat run list with a tree of buckets. Expand one to reveal its sub-buckets and, at the deepest level, the runs themselves.

<img src="https://mintcdn.com/trainy/ck7WI5896eYTYADa/images/pluto/grouping-buckets.png?fit=max&auto=format&n=ck7WI5896eYTYADa&q=85&s=c10b73017df77e318ac51c59ffdd9b76" alt="Runs grouped by optimizer, then model, with the adamw › resnet50 bucket expanded to its run rows" style={{ maxWidth: '440px' }} width="980" height="910" data-path="images/pluto/grouping-buckets.png" />

## Run Visibility

**Select a run** — check its box in the leftmost column — to plot it on the charts. The selected set is also what bulk actions like delete operate on. You can select up to 100 runs at once.

* The header checkbox selects or clears every run on the current page.
* **Shift-click** a checkbox to select the whole range between it and the last box you clicked.

<img src="https://mintcdn.com/trainy/RSBzmM6c9FBJXx6L/images/pluto/run-selection.png?fit=max&auto=format&n=RSBzmM6c9FBJXx6L&q=85&s=2dc387038bbf798e134d01c251d315eb" alt="Selecting runs with the checkbox column" width="1360" height="480" data-path="images/pluto/run-selection.png" />

Once a run is selected, an **eye icon** appears next to its checkbox to toggle whether it's drawn on the charts — without deselecting it:

* **Hide from charts** — click the eye on a visible run to mute it on the charts while keeping it selected. Useful when a noisy run is obscuring the trends you're comparing.
* **Show on charts** — click the eye-off icon on a hidden run to draw it again.

<img src="https://mintcdn.com/trainy/RSBzmM6c9FBJXx6L/images/pluto/run-hide-show.png?fit=max&auto=format&n=RSBzmM6c9FBJXx6L&q=85&s=6d23dfb70b3156644651b7a7a6fa3975" alt="A hidden run shown with the eye-off icon and a muted row, alongside visible selected runs" width="1360" height="480" data-path="images/pluto/run-hide-show.png" />

Hidden runs keep their assigned color so you can toggle them back quickly. The selected set persists in the URL as `?runs=` and hidden runs as `?hidden=`, so links are shareable.

To manage the whole selection at once, use the **Visibility options** dropdown above the table:

<img src="https://mintcdn.com/trainy/RSBzmM6c9FBJXx6L/images/pluto/visibility-options.png?fit=max&auto=format&n=RSBzmM6c9FBJXx6L&q=85&s=ee7d2c3168b00a2c228b373b4dc9b1c0" alt="The Visibility options dropdown" style={{ maxWidth: '320px' }} width="592" height="1004" data-path="images/pluto/visibility-options.png" />

* **Show all selected on charts** / **Hide all selected from charts** — mute or restore every selected run at once.
* **Display only selected** — hide unselected runs from the table.
* **Pin selected to top** — float the selected runs above the rest.
* **Auto-select first N** — select the top N runs in one click.
* **Deselect all**, plus **color palette** and **shuffle colors** controls.

## Deleting Runs

To prune failed or junk runs, select them and click the **trash icon** next to the search box. It stays disabled until at least one run is checked, and its tooltip tells you how many will go.

Deletion is **permanent**: it removes the runs along with all of their metrics, logs, and files, and it cannot be undone. Pluto previews the runs you're about to remove and asks you to type `delete` to confirm. Once deleted, the runs are dropped from your selection and disappear from the charts.

<img src="https://mintcdn.com/trainy/ck7WI5896eYTYADa/images/pluto/delete-runs-dialog.png?fit=max&auto=format&n=ck7WI5896eYTYADa&q=85&s=65e781c14a5da735f199c4e2516802f7" alt="The delete confirmation dialog, previewing the runs and requiring you to type delete" width="3400" height="772" data-path="images/pluto/delete-runs-dialog.png" />

Runs [forked](/pluto/forking) from a deleted run are **not** deleted — they simply lose their fork parent.

<Warning>
  Organization **owners** and **admins** can delete any run in the org. **Members** can only delete runs they created — if the batch includes a run created by someone else, the entire delete is rejected.
</Warning>

### Deleting a whole project

To remove an entire project rather than individual runs, go to the **projects list**, hover the project's row, and click its **trash icon**. Deleting a project is **owner/admin only** and wipes *every* run in it — including runs created by other members — along with all their metrics, logs, files, and saved dashboards. As with runs, it's permanent and asks you to type the project's name to confirm.

## Filtering and Sorting

Click the **Filter** button to open the filter dropdown. The filter system is type-aware, offering different operators depending on the column type.

<img src="https://mintcdn.com/trainy/ck7WI5896eYTYADa/images/pluto/filter-dropdown.png?fit=max&auto=format&n=ck7WI5896eYTYADa&q=85&s=94d704cdfa02a4e90b1bd8edd6d96d7e" alt="Filter dropdown" style={{ maxWidth: '400px' }} width="702" height="722" data-path="images/pluto/filter-dropdown.png" />

You can chain multiple conditions together with AND logic.

<img src="https://mintcdn.com/trainy/UWUvH-32rxkx62eZ/images/pluto/filter-conditions.png?fit=max&auto=format&n=UWUvH-32rxkx62eZ&q=85&s=29c7c54859eda5ae44e7ec8463e82af9" alt="Filter conditions" style={{ width:"52%" }} width="658" height="578" data-path="images/pluto/filter-conditions.png" />

Active filters appear as chips below the toolbar. Click a chip to edit or remove the filter.

Sorting can be applied from a **column header menu** — hover a column, open its menu, and choose **Sort ascending** or **Sort descending** — or by clicking a column header directly. This works for any column, including metric columns, so you can rank runs by a logged value.

<img src="https://mintcdn.com/trainy/ck7WI5896eYTYADa/images/pluto/column-sort-menu.png?fit=max&auto=format&n=ck7WI5896eYTYADa&q=85&s=6eff77f5dd9a94d66b035f2cf450ee54" alt="The Name column header menu, with Sort ascending and Sort descending options" style={{ maxWidth: '480px' }} width="1428" height="452" data-path="images/pluto/column-sort-menu.png" />

The **Status** column header has its own menu — click the filter icon on the header to sort by state or filter the table to specific run states: **Running**, **Completed**, **Failed**, **Terminated**, or **Cancelled**. These state filters share the same filter set as the Filter button, so the two stay in sync.

<img src="https://mintcdn.com/trainy/RSBzmM6c9FBJXx6L/images/pluto/status-filter-menu.png?fit=max&auto=format&n=RSBzmM6c9FBJXx6L&q=85&s=64cb1186be13cd15ec45e177e0a536e4" alt="Status column sort and filter-by-state menu" style={{ maxWidth: '440px' }} width="400" height="556" data-path="images/pluto/status-filter-menu.png" />

## Searching Runs

The **Search by name or ID** box above the table works in two ways, depending on whether your view is constrained.

### Plain search

When nothing is hiding runs — no filter, and the whole table is on show — typing simply narrows the list to the rows that match your query.

<img src="https://mintcdn.com/trainy/RSBzmM6c9FBJXx6L/images/pluto/search-normal.png?fit=max&auto=format&n=RSBzmM6c9FBJXx6L&q=85&s=fa49bf8b6897639d78d31aa291c164a5" alt="Searching 10k-1 narrows the runs table to matching rows" style={{ maxWidth: '440px' }} width="980" height="1104" data-path="images/pluto/search-normal.png" />

### Finding runs outside the current view

The moment your view is constrained, a plain narrow-down would silently miss any match your own view is hiding. So when the table is constrained by **any** of:

* an active **filter**
* **Display only selected**
* **Pin selected to top**

…the search *also* surfaces an **Other matches — outside current view** dropdown beneath the box, listing the matches your view is hiding. You can pull one into your selection without tearing down the view you built.

For example, filter the table to **Failed** runs (left), then search for one that finished successfully. It's outside your filter, so the table doesn't list it — but it turns up in the **Other matches** dropdown, ready to add (right):

<div style={{ display: 'flex', gap: '1rem', flexWrap: 'wrap', alignItems: 'flex-start' }}>
  <img src="https://mintcdn.com/trainy/RSBzmM6c9FBJXx6L/images/pluto/search-filter-view.png?fit=max&auto=format&n=RSBzmM6c9FBJXx6L&q=85&s=69c9d14d25e045df17671b42ea4c3154" alt="The runs table filtered to Failed runs, with the Filter badge showing 1 active filter" style={{ width: '48%', minWidth: '280px', borderRadius: '8px' }} width="980" height="964" data-path="images/pluto/search-filter-view.png" />

  <img src="https://mintcdn.com/trainy/RSBzmM6c9FBJXx6L/images/pluto/search-filter-dropdown.png?fit=max&auto=format&n=RSBzmM6c9FBJXx6L&q=85&s=e3f88c1c1a977079b3aa7076db3d05f8" alt="Searching while the Failed filter is active surfaces the Completed runs it hides in the Other matches dropdown" style={{ width: '48%', minWidth: '280px', borderRadius: '8px' }} width="820" height="752" data-path="images/pluto/search-filter-dropdown.png" />
</div>

Each row shows the run's name, its display ID (e.g. `UPD-57`), status, and creation time.

* **Click an out-of-view run** to add it to your selection. The dropdown stays open and keeps your query, so you can pick several in a row.
* A run that's already showing in the table appears grayed with an **In table** badge. If it's currently selected, though, it stays clickable — click it again to deselect it.
* Press **Esc** or click outside to dismiss the dropdown. Your typed query is kept, so clicking back into the search box brings the results straight back.

When there are more matches than fit, a footer reads *Showing top results — refine your search to see more.*

## Preset Views

Save your table configuration (visible columns, column order, filters, and sort settings) as a named **preset view**. This is useful for creating reusable perspectives on your data, such as "Training Metrics Only" or "Best Runs".

<img src="https://mintcdn.com/trainy/UWUvH-32rxkx62eZ/images/pluto/preset-views.png?fit=max&auto=format&n=UWUvH-32rxkx62eZ&q=85&s=e60f05759d2c6c41cb86bd9397bb69c3" alt="Preset views dropdown" width="1776" height="766" data-path="images/pluto/preset-views.png" />

To create a preset:

1. Configure the table with the columns, filters, and sort order you want
2. Click the view selector dropdown (shows "Default" by default)
3. Select **Save to new view preset**
4. Enter a name for the preset

Preset views are saved per-project and shared across your organization. Switch between presets using the dropdown at any time.

## Pagination

The runs table paginates when there are more runs than fit on a single page. Use the page size dropdown to choose how many runs to display per page (default: 20).

The page indicator (e.g., `1 / 9`) is an **editable input** — click on the current page number and type a page number directly to jump to any page without clicking through next/previous.
