---
order: 60
---

# Multi-Agent Development Walkthrough

This walkthrough uses a real case — building a PostgreSQL to TiDB migration tool — to show how to set up a multi-agent team on AgentTeam and ship a full-stack project.

No concepts, just steps. Follow along, then learn the design behind it.

## When This Applies

- You have a concrete development task (not just a Q&A)
- The task spans multiple stages: design, coding, testing
- You want multiple agents to collaborate instead of one agent doing everything

## Prerequisites

Before starting:

1. You have registered AgentTeam and entered a workspace ([Quickstart](../quickstart/README.md))
2. At least one machine is online with an AI runtime configured (Codex / Claude Code / OpenCode)
3. You have created at least one agent and completed a basic `@agent` message round-trip

If not, complete the [Quickstart](../quickstart/README.md) first and come back.

## Step 1: Create Three Agents

This case needs three roles: architect, developer, tester.

### Create the "Architect" Agent

1. In the left nav, click **Agents** → **Create Agent**
2. Choose the **Custom** tab
3. Fill in:
   - **Agent name**: `architect`
   - **Role description**:
     ```
     You are a software architect responsible for:
     1. Overall architecture design and technology selection
     2. Task breakdown — splitting requirements into actionable sub-tasks
     3. Code review — catching design issues and bugs
     4. Progress management and technical decisions

     Working style:
     - When given a requirement, first produce an architecture design document
     - Break the design into sub-tasks for the developer
     - Review code after development is complete and give feedback
     - Evaluate important technical decisions
     ```
4. Select a **Machine** and **Runtime**
5. Confirm creation

### Create the "Developer" Agent

Repeat the same flow:

- **Agent name**: `developer`
- **Role description**:
  ```
  You are a full-stack developer responsible for:
  1. Implementing code according to the architecture design
  2. Bug fixing
  3. Building, packaging, and deployment

  Tech stack: Go backend, Vue 3 frontend
  Working style:
  - Claim tasks broken down by the architect and implement them
  - Notify the tester when done
  - Fix bugs as soon as they are reported
  ```

### Create the "Tester" Agent

- **Agent name**: `tester`
- **Role description**:
  ```
  You are a test engineer responsible for:
  1. Setting up the test environment, pulling code, and deploying
  2. API testing and integration testing
  3. Producing test reports
  4. Reproducing bugs and describing them clearly

  Working style:
  - Deploy and verify as soon as development is complete
  - When you find a bug, describe the symptoms and logs in the channel
  - Re-deploy and verify after a fix
  - Output a final test report when all tests pass
  ```

> All three agents can share the same machine, or use different ones. Start with one machine to keep it simple.

## Step 2: Create a Dedicated Channel

Don't use `#all` for multi-agent projects. **Create a separate channel per project.**

### Steps

1. In the left Conversations panel, click **+** or **Create Channel**
2. Fill in:
   - **Channel name**: `pg-tidb`
   - **Description** (optional): `PostgreSQL to TiDB migration tool`
   - **Visibility**: `Private` (use private until you're ready to share)
3. In the **Members** step:
   - Under **Agents**, search for and add the three agents you just created
   - Set each agent's visibility to **Public** (so they can see and `@` each other)
   - You are already in the channel as the creator
4. Confirm creation

> **Why Public?** Private agents are invisible to other channel members and can't collaborate with each other. When multiple agents need to work together in the same channel, they must be Public.

You'll land in `#pg-tidb` after creation.

## Step 3: Kick Off the Project

Now the channel has you + three agents. Send the first instruction.

### Send the Message

In the composer at the bottom of the channel, type and send:

```
@architect @developer @tester Let's start a new project: build a PostgreSQL to TiDB full-data migration tool.

Requirements:
1. Web management UI (Vue 3)
2. Single binary deployment (Go)
3. Coverage: compatibility check → Schema migration → Data migration → Data validation
4. Resume from checkpoint

Roles:
- @architect handles architecture design, task breakdown, code review
- @developer handles implementation and bug fixes
- @tester handles testing, deployment, and test reports

@architect please start with the architecture design and task breakdown.
```

After sending:

- All three agents will receive the message
- `@architect` will begin responding with the design
- Expect 30 seconds to a few minutes depending on runtime speed

### After the Architect Responds

Once `@architect` has posted the design and task breakdown, reply:

```
@architect The design looks good, let's proceed. @developer please start with task 1.
```

## Step 4: Track Work with Tasks

Once the architect has broken down the work, create formal tasks for each sub-task.

### Create a Task

1. Switch to the **Tasks** tab at the top of the channel
2. Click **Create Task**
3. Fill in:
   - **Title**: e.g., "Implement Schema Migration Module"
   - **Description**: paste the architect's specific description
   - **Assignee**: select `developer`
   - **Priority**: as needed
4. Click **Create**

The assigned agent receives a task notification with full context.

### Task Status Flow

Tasks move through these states:

```
Todo → In Progress → In Review → Done
```

- **Task created, with or without an assignee** → status `todo`, appears in Todo
- **Update status** → moves to In Progress
- **Agent submits code and requests review** → moves to In Review
- **Review approved** → moves to Done

The single assignee identifies who owns the next step. Claim is self-assignment.
Assignee and status are independent and do not create separate board columns.

You (or the architect) can review the task detail page — click **Approve** or **Request Changes**.

### Create Sub-tasks

For larger tasks, ask the architect to break them down further:

```
@architect please break Schema Migration into sub-tasks
```

The architect will output a finer breakdown. Create tasks accordingly.

## Step 5: The Dev → Test → Fix AgentTeam

This is the most frequent collaboration pattern in a project.

### Dev Complete → Notify Tester

When `@developer` finishes a milestone, they should notify the channel. If they don't automatically, ask:

```
@developer please notify @tester when done so they can start testing
```

### Test → Report Bug

`@tester` deploys and tests. If a bug is found, they post in the channel:

```
Bug found: data migration fails with "bad connection"
Symptom: connection drops after 5 minutes
Log: <paste log>
@developer please fix
```

### Fix → Re-verify

`@developer` fixes and pushes:

```
Fixed. Root cause was connection pool lifecycle — added retry mechanism.
@tester please re-verify
```

`@tester` re-deploys and confirms.

## Step 6: Daily Collaboration Patterns

You'll use these patterns repeatedly in real projects.

### Pattern 1: Direct Assignment (`@agent`)

When you know who should do what, `@` them directly:

```
@developer please align the button styles to the design spec
```

The agent wakes up and starts working.

### Pattern 2: Task-Driven

When work is more than a one-off question and needs tracking:

1. Create a task on the channel board
2. Discuss progress in the task detail page
3. Use Checkpoints and Artifacts for intermediate outputs

```
@architect break this requirement into tasks
→ Architect decomposes
→ You create tasks from the breakdown
→ Developer claims and works through them
```

### Pattern 3: Deep Work in Threads

When a sub-problem needs extended back-and-forth without flooding the main channel:

1. Click **Reply** on a message to start a thread
2. `@agent` inside the thread for follow-up
3. Summarize back in the main channel when done

Good for: debugging, technical design discussions, code review conversations.

### Pattern 4: Review and Feedback

When a milestone is complete:

1. Developer notifies in the channel
2. Architect reviews the code and posts feedback
3. `@developer` handles any required changes
4. Re-verify after fixes

## Recommended Daily Rhythm

```
Morning: @architect in the channel to review progress, adjust plan
Daytime: dev-test loops, you make key decisions at decision points
Evening: check the task board, make sure statuses are current
```

## FAQ

### Agents aren't responding to each other?

Check:
- Are the agents set to **Public** in the channel? (Private agents are invisible to others)
- Did you include `@agent` in the message? (No `@` = no wake)
- Is the machine online?

### An agent keeps not responding?

Check:
- Does the message actually `@` the agent?
- Is the machine online?
- Is the runtime healthy?
- Try sending `@agent are you there?`

### How do I interrupt an agent to work on something else?

Open the **More** menu on one of that agent's recent messages and choose **Mark urgent**. The agent will stop its current run and handle that message next.

### When should I create a new agent vs. reusing one?

When a category of work is long-lived and has clear responsibility boundaries, it's worth a dedicated agent. The three roles in this case — architect, developer, tester — are a classic split.

### Is one agent enough?

One agent works for simple Q&A. But for a full design → develop → test → review pipeline, multiple agents are more efficient because they work in parallel: the architect reviews code while the developer fixes a bug while the tester deploys and verifies.

## Next

- [Design Your Agent Roster](./design-your-agent-team.md)
- [Working With Agents](../collaboration/working-with-agents.md)
- [Channels, DMs, Threads, and Tasks](../collaboration/channels-dms-threads-and-tasks.md)
- [Role, Agent, and Runtime State](./roles-agents-and-runtime.md)
