Reference for .peridot/team.json, the file a team is saved in.
A team is stored in .peridot/team.json inside the project folder it belongs to. The app writes it for you, but it is plain JSON: you can read it, edit it in your editor, review it in a pull request and share it through version control.
The file is read fresh every time you send a message and whenever the Your AI team page opens. Edits take effect from the next message. Runs that are already in progress are not affected.
{
"version": 1,
"lead": {
"delegates": ["researcher", "reviewer", "tester"]
},
"bots": [
{
"id": "researcher",
"name": "Researcher",
"role": "Explores the codebase and answers questions about how things work. Read-only.",
"prompt": "You investigate the codebase. Find the relevant files, read only what you need, and report exactly what you found with file paths and line numbers. Do not change anything.",
"model": "",
"tools": ["list_files", "read_file", "search"],
"delegates": [],
"x": -142,
"y": 96
},
{
"id": "reviewer",
"name": "Reviewer",
"role": "Reviews changes for bugs and security problems. Read-only.",
"prompt": "You are a strict code reviewer. Report findings as file:line, what is wrong, how to fix it.",
"model": "claude-opus-5-5",
"tools": ["list_files", "read_file", "search"],
"delegates": ["researcher"]
},
{
"id": "tester",
"name": "Tester",
"role": "Runs the build and tests.",
"prompt": "Run the tests, report what fails and why.",
"model": "",
"tools": ["list_files", "read_file", "search", "run_command"],
"delegates": []
}
]
}| Field | Type | Description |
|---|---|---|
version |
number | Format version. Currently 1. |
lead.delegates |
string[] | Ids of the bots the lead may hand work to. |
bots |
object[] | The bots, at most 12. |
| Field | Type | Limit | Description |
|---|---|---|---|
id |
string | a-z, 0-9 and -; starts with a letter or digit; max 30 characters; not lead; unique |
Stable identifier used by links. Do not change it after creating a bot. |
name |
string | 40 characters | Shown in the graph, chat and activity. If empty, the id is used. |
role |
string | 200 characters | The one line the lead reads to decide when to use the bot. |
prompt |
string | 4000 characters | The bot's instructions. |
model |
string | 80 characters | A model id such as claude-sonnet-5-5, or "" for the chat's model. |
tools |
string[] | see below | The tools the bot may use. |
delegates |
string[] | Ids of the bots this bot may hand work to. | |
x, y |
number | optional | Position in the graph, set when you drag a dot. |
The valid tool names are list_files, read_file, search, write_file, edit_file and run_command. See Tools and approvals. The three reading tools are always included, whatever you write.
Peridot never trusts the file blindly. When it loads a team it silently:
lead) id, and anything beyond 12 bots,If the file is not valid JSON, is larger than 200 KB, or cannot be read, the project simply starts with an empty team. Fix the file (or delete it) and reopen the page. The server validates the team again on every request, so the same rules hold no matter what a client sends.
Commit .peridot/team.json to share the team with your colleagues, or add .peridot/ to .gitignore to keep it personal. The positions (x, y) change when you move dots, so teams that are committed produce small diffs when someone rearranges the graph.
The file lives inside your project, so the agent could edit it like any other file. Doing so asks for your approval, as every edit does. Writing and reading the file is confined to the project folder, and a .peridot folder that is a symbolic link pointing outside the project is refused.