Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ src/
└─ messenger.py # A2A messaging utilities
tests/
└─ test_agent.py # Agent tests
Dockerfile # Docker configuration
pyproject.toml # Python dependencies
Dockerfile # Docker configuration
pyproject.toml # Python dependencies
amber-manifest.json5 # Amber manifest
.github/
└─ workflows/
└─ test-and-publish.yml # CI workflow
Expand All @@ -27,7 +28,9 @@ pyproject.toml # Python dependencies

3. **Configure your agent card** - Fill in your agent's metadata (name, skills, description) in [`src/server.py`](src/server.py)

4. **Write your tests** - Add custom tests for your agent in [`tests/test_agent.py`](tests/test_agent.py)
4. **Fill out your [Amber](https://github.com/RDI-Foundation/amber) manifest** - Update [`amber-manifest.json5`](amber-manifest.json5) to use your agent in Amber scenarios

5. **Write your tests** - Add custom tests for your agent in [`tests/test_agent.py`](tests/test_agent.py)

For a concrete example of implementing a green agent using this template, see this [draft PR](https://github.com/RDI-Foundation/green-agent-template/pull/3).

Expand Down
51 changes: 51 additions & 0 deletions amber-manifest.json5
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{
manifest_version: "0.1.0",

// TODO: Declare all config your agent needs from the deployer
// Use secret: true for sensitive values like API keys
config_schema: {
type: "object",
properties: {
my_api_key: { type: "string", secret: true },
},
required: ["my_api_key"],
additionalProperties: false,
},

// External services this agent uses
slots: {
proxy: { kind: "a2a", optional: true },
},

// Runtime configuration
program: {
// TODO: Replace with your docker image
image: "ghcr.io/<your-username>/<your-repo-name>:latest",
entrypoint: "uv run python src/server.py --host 0.0.0.0 --port 9009",

// TODO: Pass config values as environment variables
env: {
MY_API_KEY: "${config.my_api_key}",
},

network: {
endpoints: [
{ name: "a2a_endpoint", port: 9009 }, // ensure port matches your entrypoint
],
},
},

// Capabilities provided by this agent
provides: {
a2a: { kind: "a2a", endpoint: "a2a_endpoint" },
},

// Capabilities exposed to the scenario
exports: { a2a: "a2a" },

// TODO: Describe the assessment request your green agent receives
metadata: {
assessment_config: {}, // replace with your default assessment parameters, e.g. {"num_rounds": 2}
participant_roles: [], // list the roles your green agent expects, e.g. ["pro_debater", "con_debater"]
},
}