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
| Conductor | Codz |
|---|---|
| Workspace | A 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 script | A shared script, or the project’s Setup environment command |
| Run script | A dev server in the Run panel, or the run button’s script |
| Named actions | Scripts, pinned to the chat header |
| Archive script | A shared script you run before removing the worktree |
| Archive workspace | Delete the chat, then remove its checkout in Settings ▸ History |
CONDUCTOR_ROOT_PATH | CODZ_PROJECT_DIR |
CONDUCTOR_WORKSPACE_PATH | CODZ_WORKSPACE_DIR |
CONDUCTOR_WORKSPACE_NAME | No equivalent. Use $(basename "$CODZ_WORKSPACE_DIR") |
CONDUCTOR_PORT | No equivalent. Codz finds the ports your servers use instead of assigning them |
| Diff viewer and checks | The Git panel and Reviewing changes |
| Change model (⌘/) | The same key, ⌘/ |
| iOS app | Codz Remote on iPhone and iPad |
| API | The 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.
- Open the project’s … menu and choose Edit project.
- Click Add folder, then Use an existing folder…, and pick a workspace under
~/conductor/workspaces/<repo>/. - 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,apiorwebscript in eachpackage.json, so you often need norunentry at all. See Run & previews. - Scripts run in
zshwithout your shell startup files, and Codz loads no.envfor 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
| Task | In 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 ways | Chat options ▸ Run parallel attempts… |
| Change model | ⌘/ |
| Review a diff | The Git panel (⌘⇧2), or the turn’s Review button |
| Commit, push, open a pull request | The Git panel, or Create pull request in the Session rail |
| Check CI and review threads | More Git actions ▸ Pull Requests… |
| Preview your app | The Browser (⌘⇧5) and Run (⌘⇧7) panels |
| Finish a task | Delete 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 prunein 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.