> ## Documentation Index
> Fetch the complete documentation index at: https://wonder.design/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Move from Conductor by hand

> Copy a Conductor workspace into Wonder yourself, with Terminal commands. Most people can ask an agent instead.

These steps copy one workspace at a time. [Asking an agent](https://wonder.design/docs/migrate-from-conductor.md#let-your-agent-move-it) moves all your recent workspaces at once. The copy steps only read Conductor's folders.

**Before you start** · Desktop app · Free plan

Wonder is an independent product from Aquila Labs, Inc. It isn't affiliated with, sponsored by or endorsed by Conductor or Meta. Conductor, Claude Code, Codex, Cursor and OpenCode are names that belong to their owners. We use them only to say which apps this guide works with.

## Copy a workspace

Replace `REPO` and `WORKSPACE` with your own. Conductor adds a symlink next to a workspace when it renames its branch; use the real folder.

**1. Clone the repository**

In your Terminal, make a clone that belongs to Wonder, and bring your branch into it. This only reads from the workspace.

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
export GIT_OPTIONAL_LOCKS=0
WORKSPACE=~/conductor/workspaces/REPO/WORKSPACE
LOCAL=$(git -C "$WORKSPACE" branch --show-current)
BRANCH=$(git -C "$WORKSPACE" rev-parse --abbrev-ref '@{u}' 2>/dev/null | sed 's#^origin/##')
BRANCH=${BRANCH:-$LOCAL}
CLONE=~/code/REPO
if [ -e "$CLONE" ]; then
  echo "$CLONE already exists. Change CLONE and run this again."
else
  git clone "$(git -C "$WORKSPACE" remote get-url origin)" "$CLONE" &&
    echo ".context/" >> "$CLONE/.git/info/exclude" &&
    git -C "$CLONE" fetch "$WORKSPACE" "${LOCAL}:refs/heads/${BRANCH}" &&
    echo "$BRANCH"
fi
```

`BRANCH` is the branch on your remote, so your pull request carries on. Conductor names a workspace's own branch `NAME-v1` when you start it from an existing branch. The block prints the name to pick in **Create from**. The `.context/` line keeps Conductor's notes out of your changes.

Don't use a folder inside `~/conductor`. To bring in another workspace from the same repository, set its `WORKSPACE`, `LOCAL` and `BRANCH`, and run only the `git -C "$CLONE" fetch` line.

If your workspace is on the default branch, such as `main`, Git refuses, because the new clone has that branch checked out. Bring it in under the workspace's folder name, which is the name `/resume` looks for, and pick that name in the next steps. Your work then goes up as a new branch.

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
git -C "$CLONE" fetch "$WORKSPACE" "${LOCAL}:refs/heads/NEW_BRANCH"
```

If two workspaces track the same remote branch, the second fetch fails with `non-fast-forward`. Bring that one in under its own name, and pick that name in **Create from**:

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
git -C "$CLONE" fetch "$WORKSPACE" "${LOCAL}:refs/heads/${LOCAL}"
git -C "$CLONE" branch --set-upstream-to="origin/${BRANCH}" "$LOCAL"
```

Both worktrees then push to the same remote branch, so pull one's commits into the other before you push. `/resume` still lists its chats.

**2. Add it to Wonder**

In the sidebar, click **Add repository**, choose **Start from local folder**, and pick `~/code/REPO`. If Wonder shows **Set up REPO**, keep **A new worktree** and click **Start chat**; **Cancel** removes the repository again. Wonder also makes a first worktree, which you can archive.

![The Add repository menu next to Repositories in the sidebar, with Create new repository, Start from GitHub and Start from local folder](https://mintcdn.com/wonder-0722b0f6/Q8n4gj6ARZGhn88V/images/migrate-from-conductor/add-repository-menu.webp?fit=max\&auto=format\&n=Q8n4gj6ARZGhn88V\&q=85\&s=d4ba481e1917ab76f8a04d68c9338495)

**3. Open your branch**

Open the repository's **⋯** menu and choose **Create from**. Click **Branches**, then pick the branch the first step printed.

![A repository's ⋯ menu in the sidebar, with New worktree, Create from, Show in Finder, Rename, Repository settings and Remove repository](https://mintcdn.com/wonder-0722b0f6/Q8n4gj6ARZGhn88V/images/migrate-from-conductor/repository-menu.webp?fit=max\&auto=format\&n=Q8n4gj6ARZGhn88V\&q=85\&s=850ab4540dd9d42567a459f58beb768a)

![The Create from dialog on Branches, listing sam/checkout-redesign twice: first with a wifi icon, then with a laptop icon](https://mintcdn.com/wonder-0722b0f6/Q8n4gj6ARZGhn88V/images/migrate-from-conductor/create-from-branches.webp?fit=max\&auto=format\&n=Q8n4gj6ARZGhn88V\&q=85\&s=cf2d65ac8eb32e534a3c080051b7802e)

**Pick the right row.** A branch you've pushed is listed twice. Pick the wifi icon, the branch on your remote: Wonder follows it and keeps your unpushed commits. If someone has pushed since, pull their commits in before you push. The laptop icon follows no remote branch, so a plain `git push` fails. A branch you've never pushed has only the laptop row, and Wonder's **Push** publishes it.

**4. Copy your unfinished work**

Open the new worktree's terminal and check it's on your workspace's commit:

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
export GIT_OPTIONAL_LOCKS=0
WORKSPACE=~/conductor/workspaces/REPO/WORKSPACE
COMMIT=$(git -C "$WORKSPACE" rev-parse HEAD)
[ "$(git rev-parse HEAD)" = "$COMMIT" ] && echo same
```

If it prints `same`, go on. If not, the wifi row may have moved a branch that's behind your remote up to the newest commit, so move it back:

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
git merge-base --is-ancestor "$COMMIT" HEAD && [ -z "$(git status --porcelain)" ] && git reset --hard "$COMMIT"
```

If that prints `HEAD is now at`, your branch is behind your remote, so pull before you push. If it prints nothing, stop and [contact support](https://wonder.design/docs/support.md).

Then copy your work:

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
git -C "$WORKSPACE" diff HEAD --binary | git apply --allow-empty
git -C "$WORKSPACE" ls-files -z --others --exclude-standard | tar -C "$WORKSPACE" --null -T - -cf - | tar xf -
for item in .env .env.local .context; do [ -e "$WORKSPACE/$item" ] && cp -R "$WORKSPACE/$item" .; done
```

To check the copy, run this. It should list only `node_modules` and other files you chose not to copy:

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
diff -rq --exclude=.git "$WORKSPACE" .
```

Your work now shows in the **Changes** panel, with the usual next-step button. The copy is a snapshot: anything you do later in Conductor stays there.

Next, [continue your chats](https://wonder.design/docs/migrate-from-conductor.md#continue-a-claude-code-chat) and [set up your scripts](https://wonder.design/docs/migrate-from-conductor.md#set-up-your-scripts).

## If `/resume` misses a chat

[If a chat is missing](https://wonder.design/docs/migrate-from-conductor.md#if-a-chat-is-missing) lists when that happens. Find the chat's ID yourself: it's the file name without `.jsonl`, newest first.

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
ls -t ~/.claude/projects/$(realpath ~/conductor/workspaces/REPO/WORKSPACE | sed 's/[^a-zA-Z0-9]/-/g')/*.jsonl | head -3
```

## Copy your scripts

Wonder reads scripts from the repository's main folder. Copy an uncommitted `.conductor/settings.toml` from a workspace to `~/code/REPO/.conductor/`, using the newest if your workspaces' copies differ, and `.conductor/settings.local.toml` from Conductor's main folder to the same place. That folder is the first line of `git -C ~/conductor/workspaces/REPO/WORKSPACE worktree list`. Until you accept the setup script, the repository's first new worktree shows a notice that it didn't run, with **Open repository settings**.

## If something goes wrong

* **`fatal: couldn't find remote ref`:** check the branch name.
* **Create from lists your branch once, ending in `-v1`:** fetch it again under the remote branch's name, as the first step shows.
* **`refusing to fetch into branch 'refs/heads/main' checked out`:** your workspace is on the default branch. Fetch it under a new name, as the first step shows.
* **`non-fast-forward` when you fetch:** two workspaces track the same remote branch. Bring the second in under its own name, as the first step shows.
* **`git push` says the branch has no upstream:** you picked the laptop row for a branch that's on your remote. In the worktree's terminal, run `git branch --set-upstream-to=origin/BRANCH`. Wonder then follows that branch, as if you'd picked the wifi row.
* **New worktrees won't create:** an entry in **Files to copy** matches nothing. Fix or remove it in **Repository settings**.
* **"This branch is already checked out":** you added Conductor's own clone. Add the clone from the first step instead.

Still stuck? [Contact Wonder support](https://wonder.design/docs/support.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.