AGENT PACK DOCUMENTATION

Make a team your friend can import.

Put one agent in each subfolder. Add a small JSON file and the Markdown instructions for that agent. Relay Console can create the full set, its Direct Chats, its Team Chats, and its built-in avatars in one import.

Share one folder

The person who receives it unzips it and selects the parent folder.

Create up to 100 agents

Each immediate subfolder describes one Hermes or OpenClaw agent.

Prepare their chats

Agent files name Direct Chats. One root file can define Team Chats.

01

Start with one parent folder

Give the pack a clear name. Put every agent folder directly inside it. Relay Console reads only the immediate subfolders as agents. The root README is for people and does not affect the import.

Folder structureReference
My Agent Pack/
|-- agent-pack.json
|-- README.md
|-- Maya Research/
|   |-- agent.json
|   |-- SOUL.md
|   |-- AGENTS.md
|   `-- USER.md
`-- Theo Review/
    |-- agent.json
    |-- SOUL.md
    `-- AGENTS.md
02

Describe each agent in agent.json

Each agent subfolder needs one agent.json file. The name and agentType fields are required. Use the other fields only when the agent needs them.

Maya Research/agent.jsonReference
{
  "name": "Maya Research",
  "role": "Research analyst",
  "model": "gpt-5.6-sol",
  "avatarIdentifier": "avatars/illustrated/illustrated-black-female-02.png",
  "agentType": "hermes",
  "placement": "none",
  "directChats": [
    "Agent Introduction",
    "Research Desk"
  ]
}
nameRequiredThe agent name, up to 120 characters. Use a different name for each agent of the same type.
agentTypeRequiredUse "hermes" or "openclaw".
roleOptionalA description of the agent's job, up to 1,000 characters.
modelOptionalThe model Relay Console selects when it creates the agent, up to 200 characters.
avatarIdentifierOptionalA built-in avatar path copied from the Avatar Catalogue, up to 500 characters.
placementOptionalUse "none", "personal", "family", or "business". The default is "none".
familyLabelWhen neededRequired when placement is "family".
companyIdWhen neededRequired when placement is "business".
departmentIdOptionalThe existing Relay Console department ID.
teamIdOptionalThe existing Relay Console team ID.
directChatsOptionalA list of up to 20 different Direct Chat names. Each name can use up to 160 characters.
03

Copy the avatar identifier

The pack does not need to contain an image. Relay Console looks up the avatarIdentifier in its built-in avatar library. The import stops if the identifier does not exist.

  1. 1

    Open the Avatar Catalogue

    Find the avatar that you want to use.

  2. 2

    Select Copy JSON

    The catalogue copies the complete avatarIdentifier field.

  3. 3

    Paste it into agent.json

    Keep the avatars/category/file.png path exactly as copied.

Open the Avatar Catalogue

Paste this field inside the agent object.

"avatarIdentifier": "avatars/illustrated/illustrated-black-female-02.png"
04

Add the agent's Markdown files

Relay Console imports Markdown files from each agent subfolder. Use UTF-8 text. You can include only the files that the agent needs.

SOUL.md

The agent's character, working style, and limits.

AGENTS.md

Instructions for how the agent works in this folder.

IDENTITY.md

Identity details that the runtime can read.

USER.md

Facts and preferences about the person the agent helps.

MEMORY.md

Starting memory for the agent.

HEARTBEAT.md

Optional recurring-work instructions.

Other Markdown files

Workflows, reference notes, skills, or other instructions.

Hermes treats SOUL.md, USER.md, MEMORY.md, skills/, and memories/ as profile files. Put a file in a workspace/ subfolder when you want it in the agent workspace. OpenClaw puts its Markdown in the agent workspace and removes an optional workspace/prefix.
05

Add applications and Team Chats

This step is optional. Add agent-pack.json to the parent folder when you want Relay Console to assign connected Composio applications or prepare Team Chats.

agent-pack.jsonReference
{
  "version": 2,
  "applications": [
    {
      "provider": "composio",
      "toolkit": "notion",
      "account": "Acme workspace",
      "assignments": [
        { "agent": "Maya Research", "authority": "standard" },
        { "agent": "Theo Review", "authority": "direct_rights" }
      ]
    }
  ],
  "teamChats": [
    {
      "title": "Project Review",
      "agents": ["Maya Research", "Theo Review"],
      "manager": "Maya Research",
      "relayReplyLimit": 16
    }
  ]
}
version

Use 2 when the pack contains applications. Version 1 remains valid for Team Chats only.

provider

Use "composio". The user must connect Composio and the application before import.

toolkit

Use the Composio toolkit ID, such as notion.

account

Optional when one toolkit account is connected. When several are connected, use the exact account alias shown in Relay Console.

assignments

List each new agent and its authority. The agent name must match agent.json.

authority

Use "standard" to require approval for every inspected provider action. Use "direct_rights" to allow every inspected provider action without approval.

title

Give each Team Chat a different title of up to 160 characters.

agents

List agent names exactly as they appear in agent.json.

manager

Optional. The manager must also appear in the agents list.

relayReplyLimit

Optional. Use a whole number from 1 to 100,000.

The pack does not contain credentials and does not connect an application account. Connect every required application in the Relay Console Applications marketplace first. Relay Console checks all declared connections before it creates agents. An import that contains Direct Rights shows one warning before it makes changes.
06

Check, zip, and share the pack

Test the unzipped folder in a blank Local Mac workspace before you send it. A successful import creates the agents and the chats, then reports the result.

Confirm that every immediate subfolder has agent.json.

Confirm that each agent has a different name for its agent type.

Check every avatarIdentifier against the Avatar Catalogue.

Connect every Composio application and check each account alias before import.

Check that every Team Chat agent name matches agent.json exactly.

Remove secrets and personal data, then compress the parent folder as a ZIP.

Unzip your own copy and import it once before you share it.

07

Tell the recipient how to import it

Relay Console imports folders, not ZIP files. Include these instructions in the README at the root of your pack.

  1. 01

    Unzip

    Open the ZIP and keep all agent subfolders inside the parent folder.

  2. 02

    Open Agents

    In a Local Mac workspace, open Agents and select New agent.

  3. 03

    Start import

    Select Import Agents from Folder.

  4. 04

    Choose the parent

    Select the unzipped parent folder and wait for the result.

Relay Console does not replace an existing agent with the same agent type and generated agent ID. It uses that agent for named chats and Team Chats, but it does not install the pack's Markdown or avatar over that agent, and it does not change that agent's application assignments. Use a blank workspace when you want a clean copy of the pack.
08

Know the limits

These limits keep an import small and safe. Relay Console rejects the full scan when a folder does not meet them.

100

agents in one import

300

Markdown files for each agent

500 KB

for one Markdown file

10 MB

of Markdown for each agent

20

Direct Chats for each agent

20

Team Chats in one pack

100

applications in one pack

500

application assignments in one pack

256 KB

for agent.json or agent-pack.json

8

nested Markdown folder levels

Use the demo pack as your reference

It is a working six-agent pack with identity files, named Direct Chats, built-in avatars, and one managed Team Chat.

Download example