Skip to content

Commit f5bf90a

Browse files
committed
Add amber manifest
1 parent 5910fd2 commit f5bf90a

2 files changed

Lines changed: 54 additions & 1 deletion

File tree

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ pyproject.toml # Python dependencies
2727

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

30-
4. **Write your tests** - Add custom tests for your agent in [`tests/test_agent.py`](tests/test_agent.py)
30+
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
31+
32+
5. **Write your tests** - Add custom tests for your agent in [`tests/test_agent.py`](tests/test_agent.py)
3133

3234
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).
3335

amber-manifest.json5

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
{
2+
manifest_version: "0.1.0",
3+
4+
// TODO: Declare all config your agent needs from the deployer.
5+
// Use secret: true for sensitive values like API keys.
6+
config_schema: {
7+
type: "object",
8+
properties: {
9+
my_api_key: { type: "string", secret: true },
10+
},
11+
required: ["my_api_key"],
12+
additionalProperties: false,
13+
},
14+
15+
// External services this agent uses
16+
slots: {
17+
proxy: { kind: "a2a", optional: true },
18+
},
19+
20+
// Runtime configuration
21+
program: {
22+
// TODO: Replace with your docker image
23+
image: "ghcr.io/<your-username>/<your-repo-name>:latest",
24+
entrypoint: "uv run python src/server.py --host 0.0.0.0 --port 9009",
25+
26+
// TODO: Pass config values as environment variables.
27+
env: {
28+
MY_API_KEY: "${config.my_api_key}",
29+
PROXY_URL: "${slots.proxy.url}", // keep even if your agent doesn't use it directly
30+
},
31+
network: {
32+
endpoints: [
33+
{ name: "a2a_endpoint", port: 9009 }, // ensure port matches your entrypoint
34+
],
35+
},
36+
},
37+
38+
// Capabilities provided by this agent
39+
provides: {
40+
a2a: { kind: "a2a", endpoint: "a2a_endpoint" },
41+
},
42+
43+
// Capabilities exposed to the scenario
44+
exports: { a2a: "a2a" },
45+
46+
// TODO: Describe the assessment request your green agent receives
47+
metadata: {
48+
assessment_config: {}, // replace with your default assessment parameters, e.g. {"num_rounds": 2}
49+
participant_roles: [], // list the roles your green agent expects, e.g. ["pro_debater", "con_debater"]
50+
},
51+
}

0 commit comments

Comments
 (0)