Skip to main content
To get the most out of Conductor, you can automate repeated actions using scripts. Conductor lets you define three scripts:
  1. Setup script: runs each time you create a workspace
  2. Run script: runs when you click the “Run” button in the bottom-right corner of the screen
  3. Archive script: runs when you archive a workspace
Your scripts are stored in a conductor.json file in the root of your workspace.

Getting started

To configure these scripts, create a conductor.json file in the root of your workspace. For example:
{
    "scripts": {
        "setup": "npm install; cp $CONDUCTOR_ROOT_PATH/.env .env",
        "run": "npm run dev"
    }
}
In setup scripts, as in the terminal, you can use any of the Conductor environment variables. The scripts run using zshell. Scripts are the trickiest part of Conductor. If you’re having trouble, reach out to us at humans@conductor.build.

Setup script

When Conductor creates a workspace, it copies in all your git files. Use the setup script to set up any files that aren’t tracked in git: for instance, you might install dependencies or copy .env files. The setup script will run inside the newly-created workspace directory. If your app uses a .env file, we recommend these steps:
  1. Go to the repository settings page (click the repo name in the left sidebar)
  2. Choose “Open In” to open the repository root directory in Finder or an IDE
  3. If your .env file isn’t already in the repository root, copy it there
  4. In your setup script, symlink .env into the workspace with ln -s "$CONDUCTOR_ROOT_PATH/.env" .env

Run script

Use the run script to easily launch your web server, app, or unit tests from a button in Conductor. Example: python3 -m http.server --port $CONDUCTOR_PORT

Run script mode

If you can’t run multiple dev servers at once, use nonconcurrent mode. In this mode, whenever you click the run button, Conductor will kill any in-progress run scripts before starting the new one.
{
    "scripts": {
        "run": "echo Running..."
    },
    "runScriptMode": "nonconcurrent"
}

Archive script

When you archive a workspace, Conductor deletes the workspace directory. Use the archive script to clean up any resources that live outside this directory. For example, our archive script cleans up the Application Support directory:
{
    "scripts": {
        "archive": "rm -rf \"$HOME/Library/Application Support/com.conductor.app.dev.$CONDUCTOR_WORKSPACE_NAME\""
    }
}