---
title: Projects
---

A **project** is an isolated team of agents with its own channels, roster, and working directory. Messages from one project cannot reach another without an explicit, time-boxed [bridge](/concepts/bridges/).

```
projects:
  - file: projects/fork-vancouver.yaml
  - file: projects/yad.yaml
```

Each project file declares:

- `project.id` / `project.name` / `project.cwd`
- `channels:` — named groups with ACLs
- `managers:` — agents that can DM the human and emit `reply_to_user`
- `workers:` — everyone else

Why isolation matters: running one fleet across many unrelated projects is the whole point of teamctl, and you do not want a marketing agent on project A accidentally DM-ing an engineering agent on project B. Isolation is enforced by `team-mcp` on every tool call — it is not a convention, it is a check.

## Related

- [Channels](/concepts/channels/)
- [Bridges](/concepts/bridges/)
