The team file

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.

Note

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.

Example#

json
{
  "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": []
    }
  ]
}

Fields#

Top level#

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.

Each bot#

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.

Validation#

Peridot never trusts the file blindly. When it loads a team it silently:

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.

Version control#

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.

Safety#

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.

← The graph and activity Patterns and tips →