Skip to main content
Add a .mux/init executable script to your project root to run commands when creating new workspaces.

Example

Make it executable:

Behavior

  • Runs once per workspace on creation
  • Streams output to the workspace UI in real-time
  • Non-blocking - workspace is immediately usable, even while hook runs
  • Exit codes preserved - failures are logged but don’t prevent workspace usage
The init script runs in the workspace directory with the workspace’s environment.

Environment Variables

Init hooks receive environment variables including MUX_PROJECT_PATH, MUX_RUNTIME, MUX_WORKSPACE_NAME, and more. Note for SSH workspaces: Since the project is synced to the remote machine, files exist in both locations. The init hook runs in the workspace directory ($PWD), so use relative paths to reference project files:

Use Cases

  • Install dependencies (npm install, bun install, etc.)
  • Run build steps
  • Generate code or configs
  • Set up databases or services
  • Warm caches

Output

Init output appears in a banner at the top of the workspace. Click to expand/collapse the log. The banner shows:
  • Script path (.mux/init)
  • Status (running, success, or exit code on failure)
  • Full stdout/stderr output

Idempotency

The hook runs every time you create a workspace, even if you delete and recreate with the same name. Make your script idempotent if you’re modifying shared state.