Dock

Dock lar deg legge til TUI-kontroller i høyre sidepanel. Hver kontroll er en kommando fra JSON og vises i sin egen Ghostty-baserte terminalseksjon. Bruk det til feeder, logger, køer, git-status, utviklingsservere eller en hvilken som helst TUI teamet vil ha ved siden av hvert workspace.

Konfigurasjon

cmux ser etter Dock-konfigurasjon i denne rekkefølgen:

  1. .cmux/dock.json for gjeldende repo, nærmeste overordnede prosjekt og nestede prosjektmapper.
  2. ~/.config/cmux/dock.json for din personlige standard-Dock eller når det ikke finnes et repo.
Hvis både prosjektkonfigurasjon og global konfigurasjon finnes, vinner prosjektkonfigurasjonen. Nestede prosjektkonfigurasjoner gjelder for sitt katalogtre. Hvis det ikke finnes prosjektkonfigurasjon, bruker Dock den globale konfigurasjonen. Hvis ingen filer finnes, åpnes Dock tom.
Dock-konfigurasjoner for prosjekter kan starte kommandoer. cmux ber deg stole på en prosjektkonfigurasjon før kontrollene startes.

Eksempel på dock.json

En Dock-fil er et JSON-objekt med en controls-array. Commit prosjektkontroller til .cmux/dock.json når lagkamerater skal dele samme Dock. Bytt ut eksempelkommandoene med verktøy repoet faktisk har.

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

Felter

FeltBeskrivelse
idStabil unik identifikator for kontrollen. Hold den kort og ikke bruk den på nytt for en annen kommando.
titleEtikett som vises i Dock-headeren.
commandKommando som kjøres i Dock-terminalen. Den starter i innloggingsskallet ditt.
cwdValgfri arbeidskatalog. Relative stier løses fra prosjektroten for prosjektkonfigurasjoner eller fra hjemmekatalogen for globale konfigurasjoner.
heightValgfri ønsket terminalhøyde i punkter. Kontroller uten height deler den gjenværende plassen.
envValgfrie miljøvariabler som bare sendes til den kontrollen.

Deling med team

Dock er laget for å deles via source control når kommandoene hører til repoet.

  • Legg repo-spesifikke kontroller i .cmux/dock.json og commit filen.
  • Legg personlige kontroller i ~/.config/cmux/dock.json, spesielt utenfor et repo, og hold filen utenfor delt kildekontroll.
  • Ikke legg hemmeligheter i dock.json. Les hemmeligheter fra skallet ditt, en lokal env-fil eller eksisterende utviklingsverktøy.

Be en agent sette det opp

Bruk denne prompten når du vil at en coding-agent skal lage Dock-kontroller. Den ber agenten kjøre `cmux docs dock`, inspisere prosjektet og spørre før den gjetter.

Agent-prompt
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 control area. A Dock config is JSON with a top-level `controls` array. Each control runs a command in its own Ghostty-backed terminal section using the user's login shell. Controls are useful for project dashboards, git/status views, dev server or build status, test watchers, log tails, queues, local services, or a custom TUI such as `cmux feed tui --opentui` when that feed is useful.

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

Rules:
- Keep ids stable, lowercase, and unique.
- 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.