Skip to content

Get Started

Migrate from Conductor

Move your Conductor workspaces, chats, scripts and agents to Codz, keeping your branches and uncommitted changes where they are.

Conductor is joining Meta and winding down. This guide moves your work to Codz. Your branches, uncommitted changes, agent chats and agent subscriptions all come with you.

The local Conductor app keeps getting new models and critical fixes until early 2027, so you can move at your own pace.

Both apps work the same way: one Git worktree and one branch per task, with an agent working inside it. Most of the move is pointing Codz at the same folders and turning one config file into Codz scripts.

What maps to what

ConductorCodz
WorkspaceA chat in a worktree, on its own branch
~/conductor/workspaces/<repo>/<workspace>Conductor’s folders open as they are. New worktrees go in ~/Library/Application Support/Codz/Worktrees, on a codz/task-… branch
conductor.json or .conductor/settings.toml.codz/scripts.json, the shared scripts committed with your repository
Setup scriptA shared script, or the project’s Setup environment command
Run scriptA dev server in the Run panel, or the run button’s script
Named actionsScripts, pinned to the chat header
Archive scriptA shared script you run before removing the worktree
Archive workspaceDelete the chat, then remove its checkout in Settings ▸ History
CONDUCTOR_ROOT_PATHCODZ_PROJECT_DIR
CONDUCTOR_WORKSPACE_PATHCODZ_WORKSPACE_DIR
CONDUCTOR_WORKSPACE_NAMENo equivalent. Use $(basename "$CODZ_WORKSPACE_DIR")
CONDUCTOR_PORTNo equivalent. Codz finds the ports your servers use instead of assigning them
Diff viewer and checksThe Git panel and Reviewing changes
Change model (⌘/)The same key, ⌘/
iOS appCodz Remote on iPhone and iPad
APIThe codz CLI and MCP server

1. Install Codz and add your repositories

Install Codz, then make a project for each repository you used in Conductor: File ▸ New Project… (⌘⇧N), Add folder, Use an existing folder….

Add the same folder Conductor used, not a new clone. Conductor’s workspaces are worktrees of that checkout, so it is the repository they share. If you added the repository to Conductor from a URL, Conductor cloned it into ~/conductor/repos/; add that folder.

2. Open your Conductor workspaces

Each Conductor workspace is an ordinary Git worktree, so Codz can work in it where it is. Nothing is copied or moved.

  1. Open the project’s … menu and choose Edit project.
  2. Click Add folder, then Use an existing folder…, and pick a workspace under ~/conductor/workspaces/<repo>/.
  3. Repeat for each workspace you still use, then click Save changes.

The project keeps the repository as its Primary folder, so new chats start there. To work in a Conductor workspace, pick its folder from the composer’s project button before you send. The chat runs in that folder, on its branch, with its uncommitted changes, and the Git panel, Terminal and Run panel all work there.

For a single workspace, the composer’s project button also has Choose folder…, which opens a folder without adding it to a project.

These chats run Local, in Conductor’s folder. Only worktrees Codz creates itself are Isolated. See Git & worktrees.

3. Convert your scripts

Move your scripts from conductor.json or .conductor/settings.toml into .codz/scripts.json at the repository root.

A conductor.json like this:

{
  "scripts": {
    "setup": "bun install && cp \"$CONDUCTOR_ROOT_PATH/.env\" .env",
    "run": "bun dev --port $CONDUCTOR_PORT",
    "archive": "docker compose down"
  }
}

becomes:

{
  "version": 1,
  "scripts": [
    { "id": "setup", "name": "Setup", "icon": "wrench", "command": "bun install && cp \"$CODZ_PROJECT_DIR/.env\" .env" },
    { "id": "dev", "name": "Dev server", "icon": "globe", "command": "bun dev" },
    { "id": "teardown", "name": "Tear down", "icon": "bolt", "command": "docker compose down" }
  ]
}

Differences to know:

  • Nothing runs by itself. Codz has no lifecycle hooks: a new worktree doesn’t run Setup, and removing one doesn’t run Tear down. Run them from the Scripts panel (⌘⇧9), or pin them to the chat header.
  • Shared scripts ask first. Each checkout reviews a shared script’s exact command and folder before its first run, and again after it changes.
  • The Run panel finds your dev server. It suggests the first dev, start, backend, api or web script in each package.json, so you often need no run entry at all. See Run & previews.
  • Scripts run in zsh without your shell startup files, and Codz loads no .env for them. See Commands and context.
  • Personal commands stay out of the repository. Save them as Just me · this project, which also reaches the project’s worktrees, or put them in the project’s environment commands.

Keep scripts that read CONDUCTOR_*

If your setup is a shell script that reads CONDUCTOR_* variables, you can keep it unchanged at first. Pass the Codz values under the old names:

{
  "version": 1,
  "scripts": [
    {
      "id": "setup",
      "name": "Setup",
      "icon": "wrench",
      "command": "CONDUCTOR_ROOT_PATH=\"$CODZ_PROJECT_DIR\" CONDUCTOR_WORKSPACE_PATH=\"$CODZ_WORKSPACE_DIR\" CONDUCTOR_WORKSPACE_NAME=\"$(basename \"$CODZ_WORKSPACE_DIR\")\" ./scripts/conductor-setup.sh"
    }
  ]
}

Replace CONDUCTOR_PORT

Codz does not reserve ports for each workspace. It finds the ports each project’s servers listen on and lists them on the Ports page, where you can open, copy or stop them.

Most dev servers pick a free port by themselves, so remove --port $CONDUCTOR_PORT. When a server needs a port you choose, the Ports page’s Next free button copies the first free port from 3000 to 3999 as PORT=3001, and codz ports lists what is in use.

Let an agent do it

Start a chat in the repository with this prompt:

Convert this repo's Conductor config (conductor.json or .conductor/settings.toml)
into .codz/scripts.json. Read codz.com/docs/workspace/scripts and
codz.com/docs/get-started/migrate-from-conductor first. Map CONDUCTOR_* variables
to CODZ_* variables, and replace CONDUCTOR_PORT as the migration guide describes.

Commit .codz/scripts.json so your team gets the same scripts.

4. Pick up your agents and chats

Claude Code, Codex, Cursor and OpenCode all run in Codz on your existing subscriptions and logins. See Providers & logins for the full list and setup.

Conductor runs the agents’ own CLIs, and they save each chat under the folder it ran in. Codz reads those records, so a Conductor chat appears in the sidebar under its project as long as its workspace folder still exists. Open it to read it, and send a message to continue it. See Imported history.

A chat Conductor didn’t save where the CLI keeps its history won’t be listed. Give the agent the context again, or keep a copy with Conductor’s Settings ▸ Account ▸ Export data.

5. Learn the daily loop

TaskIn Codz
Start a task in its own worktree⌘N, choose New worktree above the composer, then type a prompt and send
Try a task several waysChat options ▸ Run parallel attempts…
Change model⌘/
Review a diffThe Git panel (⌘⇧2), or the turn’s Review button
Commit, push, open a pull requestThe Git panel, or Create pull request in the Session rail
Check CI and review threadsMore Git actions ▸ Pull Requests…
Preview your appThe Browser (⌘⇧5) and Run (⌘⇧7) panels
Finish a taskDelete the chat, then remove its checkout in Settings ▸ History ▸ Retained checkouts

The Quickstart walks through a first chat end to end, and Keyboard shortcuts lists every key.

6. Remove Conductor

When your workspaces are in Codz:

  • Quit Conductor and move it to the Trash.
  • Keep ~/conductor/workspaces/ while you still work in folders from it. They are ordinary worktrees, and deleting the folder deletes your work. Keep ~/conductor/repos/ too if a project’s primary folder is there.
  • When you finish with a Conductor workspace, remove its folder from the project with Edit project, then run git worktree remove <path> in the repository.
  • After the last one is gone, run git worktree prune in each repository and delete ~/conductor/.

Worktrees Codz creates are cleaned up in Codz: see Remove a worktree.

Get help

Stuck on a step? See Troubleshooting.