#Dock

O Dock permite adicionar controles de terminal e navegador à barra lateral direita. Os controles de terminal executam comandos em seções baseadas no Ghostty, enquanto os controles de navegador incorporam páginas da web. Use para feeds, logs, filas, status do git, servidores de desenvolvimento, painéis ou páginas de referência que sua equipe queira manter perto de cada workspace.

#Configuração

O cmux procura a configuração do Dock nesta ordem:

  1. .cmux/dock.json para o repositório atual, o projeto pai mais próximo e diretórios de projetos aninhados.
  2. ~/.config/cmux/dock.json para seu Dock pessoal padrão ou quando não houver repositório.
Se existirem uma configuração de projeto e uma global, a configuração de projeto vence. Configurações de projetos aninhados se aplicam à sua árvore de diretórios. Se não houver configuração de projeto, o Dock usa a configuração global. Se nenhum arquivo existir, o Dock abre vazio.
Configurações de Dock do projeto podem iniciar comandos. O cmux pede que você confie na configuração do projeto antes de iniciar seus controles.

#Exemplo de dock.json

Um arquivo Dock é um objeto JSON com um array controls. Faça commit dos controles de projeto em .cmux/dock.json quando quiser que colegas compartilhem o mesmo Dock. Substitua os comandos de exemplo por ferramentas que o repositório realmente tenha.

.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
    }
  ]
}

#Campos

CampoDescrição
idIdentificador único e estável do controle. Mantenha curto e não reutilize para outro comando.
titleRótulo exibido no cabeçalho do Dock.
commandComando a ser executado no terminal do Dock. Obrigatório para controles de terminal e iniciado no shell de login.
typeTipo de controle opcional: terminal (padrão) ou browser.
urlPágina a ser aberta. Obrigatória para controles de navegador.
chromeVisibilidade opcional da interface do navegador. O padrão é true; false oculta a barra de endereço e a barra de ferramentas, faz com que Focar a barra de endereço não tenha efeito nesse painel e mantém cmux browser goto/reload disponíveis.
cwdDiretório de trabalho opcional. Caminhos relativos são resolvidos a partir da raiz do projeto para configurações de projeto ou do diretório home para configurações globais.
heightAltura opcional do controle. Controles sem height compartilham o espaço restante.
envVariáveis de ambiente opcionais passadas apenas para esse controle.

#Compartilhando com uma equipe

O Dock foi feito para ser compartilhado via controle de código-fonte quando os comandos pertencem ao repositório.

  • Coloque controles específicos do repositório em .cmux/dock.json e faça commit do arquivo.
  • Coloque controles pessoais em ~/.config/cmux/dock.json, especialmente fora de um repositório, e mantenha esse arquivo fora do controle de código-fonte compartilhado.
  • Não coloque segredos em dock.json. Leia segredos do seu shell, de um arquivo env local ou das ferramentas de desenvolvimento existentes.

#Peça para um agente configurar

Use este prompt quando quiser que um agente de código crie controles Dock. Ele instrui o agente a executar `cmux docs dock`, inspecionar o projeto e perguntar antes de adivinhar.

Prompt do agente
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.