Skip to content

Configuration

devmux is configured via a devmux.config.json file in your project root.

{
"project": "myapp",
"services": {
"api": {
"command": "pnpm dev",
"cwd": "./api",
"port": 8787
},
"web": {
"command": "pnpm dev",
"cwd": "./web",
"port": 3000
}
}
}

The project name used in tmux session naming. Sessions are named omo-{project}-{service}.

{
"project": "waypoint"
}

This creates sessions like omo-waypoint-api, omo-waypoint-web.

A map of service names to their configurations.

{
"services": {
"api": { ... },
"web": { ... },
"worker": { ... }
}
}

The command to run when starting the service.

{
"command": "pnpm dev"
}

For complex commands, you can use shell syntax:

{
"command": "DATABASE_URL=postgres://localhost/dev pnpm dev"
}

Working directory for the command, relative to the config file location.

{
"cwd": "./packages/api"
}

If not specified, defaults to the project root.

The port the service listens on. Used for health checks.

{
"port": 8787
}

When specified, devmux ensure will wait for this port to be available before returning.

Custom health check configuration.

{
"healthCheck": {
"type": "http",
"path": "/health",
"timeout": 30000
}
}

Options:

  • type: "port" (default) or "http"
  • path: HTTP path to check (for http type)
  • timeout: Maximum wait time in milliseconds (default: 30000)

Here’s a complete configuration for a typical monorepo:

{
"project": "acme",
"services": {
"api": {
"command": "pnpm dev",
"cwd": "./apps/api",
"port": 8787,
"healthCheck": {
"type": "http",
"path": "/health",
"timeout": 60000
}
},
"web": {
"command": "pnpm dev",
"cwd": "./apps/web",
"port": 3000
},
"docs": {
"command": "pnpm dev",
"cwd": "./apps/docs",
"port": 3001
},
"worker": {
"command": "pnpm dev",
"cwd": "./apps/worker"
}
}
}

You can create environment-specific configurations:

  • devmux.config.json - Default
  • devmux.config.local.json - Local overrides (add to .gitignore)

The local config is merged on top of the default config.

If you use Turborepo, generate config automatically:

Terminal window
devmux discover turbo

This scans your turbo.json for dev tasks and creates the config.

Create a basic config interactively:

Terminal window
devmux init

This prints a template you can customize.

devmux validates your config on startup. Common errors:

ErrorCauseFix
Missing project nameNo project fieldAdd "project": "myapp"
No services definedEmpty services objectAdd at least one service
Invalid portPort is not a numberUse a number like 8787