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

# Tabs

> Open tabs, position them relative to one another, and manage split layouts.

The [Quickstart](/docs/quickstart) creates a first split in three commands. This
guide covers the complete tab and split controls.

Radius commands print stable `tab_...` IDs. Save those IDs when a later command
needs to address the same tab.

<Tip>
  Need to find an existing tab ID? Run `radius tab list` to show the tabs in the
  selected Radius window and their `tab_...` IDs. See the
  [Tabs command reference](/docs/radius-cli/commands#tabs) for window and group filters.
</Tip>

## Open ordinary tabs

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
docs="$(radius tab open "https://developer.mozilla.org")"
chat="$(radius tab open "radius://chat")"
```

Each command always creates a new tab and prints that new tab's ID.

Pass the project explicitly when opening a new project-aware chat, Radius diff
viewer, or project terminal:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
chat="$(radius tab open "radius://chat/" \
  --project-path "$RADIUS_WORKSPACE_PATH")"

radius tab open "radius://diffs" \
  --project-path "$RADIUS_WORKSPACE_PATH" \
  --right-of "$RADIUS_TAB_ID"

radius tab open "radius://terminal" \
  --project-path "$RADIUS_WORKSPACE_PATH" \
  --background
```

`--project-path` keeps filesystem paths out of internal page URLs. An anchor tab
controls placement only; it does not select the project. A project-aware chat
is born with the project's metadata and in its canonical pinned project group;
it does not open as a scratch chat and move afterward. When splitting a new
project-aware chat, the anchor must already belong to that same project group.
`--project-path` applies only to a new `radius://chat/`; it cannot rebind an
existing `radius://chat/?id=...` conversation to another project.

<Tip>
  Add `--json` when a program needs a structured result. These shell examples
  omit it because `tab open` then prints only the new tab ID, which is easy to
  save in a variable.
</Tip>

<video controls muted playsInline src="https://mintcdn.com/inspector-12805d8f/XifxWshzhd_l_q9V/videos/tabs-open-ordinary.mp4?fit=max&auto=format&n=XifxWshzhd_l_q9V&q=85&s=df612194905a3b2f5a17ec9c2f223206" data-path="videos/tabs-open-ordinary.mp4" />

## Open a new tab in a split

Use an existing tab ID as the anchor:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
preview="$(radius tab open "https://example.com" --right-of "$docs")"
```

The new page opens beside `docs` in the same tab row. Available directions are:

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
--left-of <anchor-tab-id>
--right-of <anchor-tab-id>
--above <anchor-tab-id>
--below <anchor-tab-id>
```

<video controls muted playsInline src="https://mintcdn.com/inspector-12805d8f/XifxWshzhd_l_q9V/videos/tabs-open-split.mp4?fit=max&auto=format&n=XifxWshzhd_l_q9V&q=85&s=34da06d75ba064cd7328e969bf820162" data-path="videos/tabs-open-split.mp4" />

## Control the split size

`--size` sets the new pane's share as a fraction or percentage:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
radius tab open "radius://chat" --right-of "$docs" --size 0.4
radius tab open "radius://chat" --right-of "$docs" --size 40%
```

Both commands give the new pane 40% of the split.

By default, the new pane receives focus. Keep focus on the anchor with:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
radius tab open "radius://chat" --right-of "$docs" --keep-anchor-active
```

## Split tabs that are already open

Open two tabs and then combine them:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
page="$(radius tab open "https://example.com")"
reference="$(radius tab open "https://developer.mozilla.org" --background)"
radius tab split "$page" --right "$reference" --size 40%
```

If the tabs belong to different groups, allow the target tab to move explicitly:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
radius tab split "$page" --right "$reference" --move-between-groups
```

`reference` leaves its original group and joins `page`'s group. The resulting
split occupies `page`'s existing position in the tab order; it does not remain
at `reference`'s previous index. `--right` places `reference` in the right pane,
and `reference` receives focus by default. Add `--keep-anchor-active` to keep
`page` focused instead.

<video controls muted playsInline src="https://mintcdn.com/inspector-12805d8f/XifxWshzhd_l_q9V/videos/tabs-split-existing.mp4?fit=max&auto=format&n=XifxWshzhd_l_q9V&q=85&s=b4c3958fa07f4b4852162d73358e1608" data-path="videos/tabs-split-existing.mp4" />

## Remove a tab from a split

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
radius tab separate "$reference"
```

`reference` remains in the same group, keeps its position in the tab order, and
receives focus. In this example, it becomes an ordinary tab row immediately
after `page`. Because this is a two-pane split, `page` also returns to an
ordinary tab row.

## Wait for a tab

Wait until a page finishes loading before the next command runs:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
radius tab wait "$preview" --load --timeout-ms 30000
```

You can also wait for the tab's URL to contain a value:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
radius tab wait "$preview" --url "/dashboard" --timeout-ms 30000
```

If the condition is not met before the timeout, Radius returns
`COMMAND_TIMEOUT`.

See [Groups](/docs/radius-cli/groups) to organize ordinary tabs and complete split
layouts into named collections.
