Skip to content
Terminal > Windows, tabs & panes

Tab configs

Reusable .toml recipes that open a tab with layout, directories, and startup commands.


Tab configs are TOML recipes that describe how a new tab opens: its name, its pane layout (including splits), each pane's working directory, and startup commands. They live in ~/.mel/tab_configs/ — plain files you (or the Mel agent) can edit — and every valid config appears in the titlebar + menu automatically.

A simple config

name = "New Claude session"

[[panes]]
id = "main"
type = "terminal"
directory = "~"
commands = ["claude"]

Open the + menu, pick the config, and you get a tab whose pane starts in ~ and launches the claude CLI. Multiple commands entries are chained with &&.

Split layouts

[[panes]] is a flat list; the first entry is the root. A node is either a leaf (has type) or a split (has split + children naming other pane ids):

name = "Agent + local server"

[[panes]]
id = "root"
split = "horizontal"      # side by side; "vertical" = stacked
children = ["agent", "server"]

[[panes]]
id = "agent"
type = "terminal"
directory = "~"
commands = ["claude"]
is_focused = true

[[panes]]
id = "server"
type = "terminal"
directory = "~"
commands = []

Splits nest to any depth. Exactly one leaf may set is_focused = true; otherwise the first leaf gets focus. directory supports ~, relative paths (resolved against your current pane's cwd), and {{param}} placeholders.

Parameters

Declare [params.NAME] and reference {{NAME}} anywhere — in directory, commands, or title. Opening the config pops a small modal to collect values first:

name = "Claude in repo"

[[panes]]
id = "main"
type = "terminal"
directory = "{{project}}"
commands = ["claude"]

[params.project]
type = "repo"
description = "Repository to open Claude in"

Param type is text (free field, optional default), branch (a git branch dropdown), or repo (a dropdown of your tracked repositories).

Top-level fields

FieldPurpose
nameDisplay name in the + menu
titleOptional tab title template (params substituted)
colorOptional tab color preset (0–5)
[[panes]]The pane list described above
[params.*]Parameter definitions

Making one the default

Right-click a config in the + menu and choose make-default (★). From then on, plain ctrl+T opens that config instead of a blank tab. The choice is stored in ~/.mel/default_tab_config; right-click again to clear it.

Authoring

"New Tab Config" in the + menu writes a stub file and opens it in Mel's built-in editor. Files with parse errors are skipped at load, and Mel seeds a few examples on first run. Since configs are just files, they version-control nicely — see Settings files.