# Set up a team on WeMachines

> A guide for an AI agent helping a person set up their team on WeMachines, with the team's work brought along. People can read it too, at https://wemachines.com/setup.

WeMachines is one workspace for a team's chat, tasks, docs and calls, with machines: AI teammates that work with the team. You are setting the team up there and bringing its work along. Go one step at a time, in plain words, and keep each message short and light.

## Ground rules

- Only read the old tools. Never change, move, archive or delete anything in them.
- Bring the work across word for word: the same titles, descriptions and pages. Don't summarise or rewrite them.
- Show the person what you will bring across, and wait for their yes before you write anything into WeMachines.
- Never put a password, API key or token into a task or a page.
- If something can't come across, say so plainly.
- Install and connect nothing until you know you are in the right folder (step 2). Never the home folder.

## 1. Ask two things

In one message, ask:

1. Which tools does the team use today? For example Linear, Jira, Notion, Slack, Trello, Asana, ClickUp, monday.com, GitHub Issues or a spreadsheet.
2. Is there a WeMachines team yet? If not, they make one at https://app.wemachines.com. It takes a team name.

## 2. Check the folder, then connect

Where you connect from matters. From the wrong folder, the setup lands in the wrong place and causes trouble later, so check first and ask.

### In a coding agent (Claude Code, Codex, Cursor)

1. Before you install or connect anything, see where you are: run `pwd` and `git rev-parse --show-toplevel`.
2. Ask the person, and wait for the answer: "I'm in <folder>. Is this your team's code repository, the one to set WeMachines up in?"
3. Then:
   - **Yes, and it has a `.wemachines/` folder:** it is set up already. The person only logs in (below).
   - **Yes, with no `.wemachines/` yet:** run the installer here: `curl -fsSL https://wemachines.com/install | sh`. It connects this repository and nothing else, with the team's workflow and a guard that keeps WeMachines writes inside it. The person commits the files it adds, so everyone who clones the repository gets the same setup. Then they log in.
   - **No, or it is the home folder, Desktop, Downloads or a folder outside git:** install and connect nothing here. Ask for the path of the team's repository, and have the person open you again inside it (`cd` into it, then start the agent with the same sentence).
   - **The team has no code repository:** connect nothing. Steps 3 and 4 all work in the browser.

To log in:

| Agent | How |
| --- | --- |
| Claude Code | It reads the installer's `.mcp.json` when it starts, so the person restarts Claude Code in the repository and approves wemachines when asked. Then they type `/mcp`, pick wemachines and log in. |
| Codex | Run `codex mcp add wemachines --url https://app.wemachines.com/api/mcp`, then `codex mcp login wemachines`. |
| Cursor | Add `{ "mcpServers": { "wemachines": { "url": "https://app.wemachines.com/api/mcp" } } }` to `.cursor/mcp.json` in the repository, not the global `~/.cursor/mcp.json`. |

In Claude Code and Cursor, keep WeMachines in the repository's own config, never the one for every folder (`claude mcp add --scope user`, `~/.cursor/mcp.json`): the repository is where the team's work happens.

### In a chat app (Claude, ChatGPT)

There is no folder to check. Connecting is optional here: it lets you look up the team's address. The person adds a custom connector with the address https://app.wemachines.com/api/mcp, in Settings → Connectors in Claude or Settings → Apps in ChatGPT. Outside a set-up repository WeMachines asks agents only to read through the connection, which is all this needs: the work comes across through the importer in step 3.

### The team's address

When the login page asks, the person picks the team. Connected? Call `get_workspace`: its `slug` is the team's address, `https://app.wemachines.com/<slug>`. Not connected? Ask the person for the address. More on every client: https://wemachines.com/mcp

## 3. Bring the work across

### Tasks and docs: the importer

WeMachines has an importer that reads each tool's own export as it is, with statuses, priorities, labels, people and page trees. The person sees every task and page before anything is saved. It works for any amount of work, so use it first.

1. Get the export.
   - If you can make it yourself, do. GitHub Issues: in the repository, run `gh issue list --state all --limit 1000 --json number,title,body,state,labels,assignees,milestone,createdAt,url > issues.json`. A tool you are connected to and can read in full: write one CSV per project with the columns `Title, Description, Status, Priority, Labels, Assignee, Created` (Assignee as an email), and each doc as its own Markdown file. Tell the person where the files are.
   - Otherwise, give the person the steps for their tool below.
2. Send them to `https://app.wemachines.com/<slug>/migrate` (Settings → Import) to drop the files. They check the review and press Import.

#### Linear

1. Settings → Workspace → Import / Export.
2. Click “Export CSV”. Linear emails you a download link.

Drop the CSV. Comes across: Issues with their descriptions, statuses, priorities, labels, projects and assignees.

#### Notion

1. Open the page or workspace → ⋯ (top right) → Export.
2. Choose “Markdown & CSV” and include subpages.

Drop the .zip, as it is. Comes across: Pages in their tree, with images. Databases as tasks or as pages.

#### Trello

1. Open the board → ⋯ Menu → Print, export and share.
2. Choose “Export as JSON”.

Drop the .json. Comes across: Cards in list order, with descriptions, checklists, labels and members.

#### Jira

1. Open a filter or search that shows the issues.
2. Export → “Export Excel CSV (all fields)”.

Drop the CSV. Comes across: Issues with their descriptions, statuses, priorities, labels and assignees.

#### Asana

1. Open the project → the ⌄ beside its name → Export / Print.
2. Choose CSV.

Drop the CSV. Comes across: Tasks with notes, sections, completion, tags, assignees and custom fields.

#### ClickUp

1. Settings → Import / Export → Task Export.
2. Export as CSV.

Drop the CSV. Comes across: Tasks with their content, statuses, priorities, tags, lists and assignees.

#### monday.com

1. Open the board → ⋯ menu → “Export board to Excel”.

Drop the .xlsx. Comes across: Items with their groups, statuses, people and every other column.

#### GitHub Issues

1. In the repository, with the GitHub CLI signed in, run:

```sh
gh issue list --state all --limit 1000 --json number,title,body,state,labels,assignees,milestone,createdAt,url > issues.json
```

Drop issues.json. Comes across: Issues with their bodies, state, labels, milestones and assignees.

#### Anything else

A CSV, Excel, JSON, Markdown or HTML file, or a .zip of them, works too. Rows from a spreadsheet can be pasted straight in.

### A few items: copy them yourself

Running in the team's set-up repository (it has a `.wemachines/` folder), connected to the old tool and to WeMachines, with fewer than about 50 open items? You can copy them yourself. Anywhere else, WeMachines asks agents only to read, so use the importer.

1. Read the team's people, statuses and labels: `list_members`, then `list_statuses` and `list_labels` through `workspace_read`.
2. List what you will bring across for the person, and wait for their yes.
3. `create_task` for each task: the same title and description, the closest status and priority, its labels. Assign people already in the team; leave the rest unassigned (`assignee_ids: []`) and name the original owner in the description. End each description with a link to the original.
4. `create_page` for each doc, in Markdown.
5. Tell the person the codes you made (T-…, P-…).

### Chat: connect it, don't copy it

WeMachines doesn't copy old chat history into its rooms. For Slack, an admin presses Connect Slack at `https://app.wemachines.com/<slug>/integrations/slack`: the team's machines read the biggest public channels' last month and remember what was decided there. Private channels and direct messages are never kept. More at https://wemachines.com/slack. For other chat tools, look in Integrations; what isn't there stays where it is.

## 4. Bring the people

An admin invites the team by email at `https://app.wemachines.com/<slug>/settings/team` (Settings → Members). Each person gets an email with a link to join. Offer to write the short note the person sends the team with it.

Invite before the import when you can: the importer keeps a task's owner when that person is already in the team, matched by email or by name.

## 5. Finish

Tell the person, in a few lines, what came across, what didn't and why, and what is left for them to do. Then they open WeMachines and ask a machine what to pick up first.
