#Dock

Dock позволяет добавлять элементы управления терминалом и браузером в правую боковую панель. Элементы терминала запускают команды в секциях на базе Ghostty, а элементы браузера встраивают веб-страницы. Используйте Dock для лент, логов, очередей, статуса git, dev-серверов, панелей мониторинга или справочных страниц, которые команда хочет видеть рядом с каждым workspace.

#Конфигурация

cmux ищет конфигурацию Dock в таком порядке:

  1. .cmux/dock.json для текущего репозитория, ближайшего родительского проекта и вложенных каталогов проектов.
  2. ~/.config/cmux/dock.json для личного Dock по умолчанию или для случаев, когда репозитория нет.
Если существуют и проектная, и глобальная конфигурации, приоритет имеет проектная. Конфигурации вложенных проектов применяются к своему дереву каталогов. Если проектной конфигурации нет, Dock использует глобальную. Если ни одного файла нет, Dock открывается пустым.
Проектные конфигурации Dock могут запускать команды. cmux просит доверять проектной конфигурации перед запуском ее элементов управления.

#Пример dock.json

Файл Dock это JSON-объект с массивом controls. Добавляйте проектные элементы управления в .cmux/dock.json и коммитьте файл, когда хотите поделиться тем же Dock с командой. Замените примеры команд инструментами, которые действительно есть в репозитории.

.cmux/dock.json
{
  "controls": [
    {
      "id": "git",
      "title": "Git",
      "command": "lazygit",
      "height": 300
    },
    {
      "id": "logs",
      "title": "Logs",
      "command": "tail -f ./logs/development.log",
      "cwd": "."
    },
    {
      "id": "feed",
      "title": "Feed",
      "command": "cmux feed tui --opentui",
      "height": 320
    },
    {
      "id": "dashboard",
      "title": "Dashboard",
      "type": "browser",
      "url": "http://127.0.0.1:8877/sidebar",
      "chrome": false
    }
  ]
}

#Поля

ПолеОписание
idСтабильный уникальный идентификатор элемента управления. Держите его коротким и не используйте повторно для другой команды.
titleМетка, показанная в заголовке Dock.
commandКоманда, запускаемая в терминале Dock. Обязательна для элементов управления терминалом и запускается в login shell.
typeНеобязательный тип элемента управления: terminal (по умолчанию) или browser.
urlСтраница для открытия. Обязательна для элементов управления браузером.
chromeНеобязательное отображение элементов браузера. По умолчанию true; false скрывает адресную строку и панель инструментов, отключает действие «Фокус на адресной строке» для этой панели, при этом cmux browser goto/reload остаются доступны.
cwdНеобязательный рабочий каталог. Относительные пути разрешаются от корня проекта для проектных конфигураций или от домашнего каталога для глобальных конфигураций.
heightНеобязательная высота элемента управления. Элементы без height делят оставшееся пространство.
envНеобязательные переменные окружения, передаваемые только этому элементу управления.

#Совместное использование в команде

Dock рассчитан на совместное использование через source control, когда команды относятся к репозиторию.

  • Поместите элементы управления для репозитория в .cmux/dock.json и закоммитьте файл.
  • Помещайте личные элементы управления в ~/.config/cmux/dock.json, особенно вне репозитория, и не добавляйте этот файл в общий контроль версий.
  • Не помещайте секреты в dock.json. Читайте секреты из shell, локального env-файла или существующих инструментов разработки.

#Попросите агента настроить это

Используйте этот промпт, когда хотите, чтобы coding agent создал элементы Dock. Он просит агента выполнить `cmux docs dock`, изучить проект и спросить перед тем, как что-либо предполагать.

Промпт агента
Set up cmux Dock controls for the current context.

First, learn the feature before editing:
1. Run `cmux docs dock` if the cmux CLI is available. If it is not, read https://cmux.com/docs/dock.
2. Inspect the repository or current directory to understand the project type, scripts, package manager, dev servers, logs, task runners, test commands, and any existing TUI tools.
3. If the desired Dock is ambiguous, ask the user what they want monitored or controlled before writing files.

Dock is cmux's right-sidebar terminal and browser control area. A Dock config is JSON with a top-level `controls` array. Terminal controls run commands in Ghostty-backed sections using the user's login shell; browser controls embed URLs. Controls are useful for project dashboards, git/status views, dev server or build status, test watchers, log tails, queues, local services, or fixed web dashboards.

Choose where to write the config:
- In a repository or project directory, create or edit `.cmux/dock.json` so teammates can share it.
- For a personal default outside a repo, create or edit `~/.config/cmux/dock.json`.
- If both exist, project `.cmux/dock.json` is more specific for that project. Nested project configs apply to that directory tree; use the nearest relevant project config instead of writing unrelated controls globally.
- If there is no repo and no clear project root, use the global config only after confirming the user wants a personal Dock.

Schema:
{
  "controls": [
    {
      "id": "short-stable-id",
      "title": "Human label",
      "command": "safe command to run",
      "cwd": "optional/path",
      "height": 220,
      "env": { "NAME": "value" }
    },
    {
      "id": "dashboard",
      "title": "Dashboard",
      "type": "browser",
      "url": "http://127.0.0.1:3000",
      "chrome": false
    }
  ]
}

Rules:
- Keep ids stable, lowercase, and unique.
- `type` is optional: `terminal` is the default, or use `browser`.
- Terminal controls require `command`; browser controls require `url`.
- Browser controls default to `chrome: true`. Set `chrome: false` to hide browser chrome, including the address bar and toolbar; Focus Address Bar then does nothing for that pane, while `cmux browser goto` and `cmux browser reload` remain available.
- Use `cwd` for subdirectories; relative paths resolve from the config base.
- Use `height` only when a control needs a fixed amount of vertical space.
- Use `env` only for non-secret values needed by one control.
- Do not put secrets, tokens, or machine-specific private paths in a shared project config.
- Prefer commands that are safe to start repeatedly and make sense in a terminal.
- Do not invent unavailable scripts. Read package files, Makefiles, Procfiles, README docs, config files, and existing tooling first.
- Keep shared project Docks portable for teammates. Put personal or machine-specific controls in the global Dock.

Deliverable:
- Create or update the appropriate dock.json.
- Preserve existing useful controls unless the user asked to replace them.
- Validate that the JSON parses.
- Summarize what each control does and any commands the user should review before trusting the Dock config.