diff --git a/README.md b/README.md index 4b51ba6..4b41bfe 100644 --- a/README.md +++ b/README.md @@ -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 @@ -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). diff --git a/amber-manifest.json5 b/amber-manifest.json5 new file mode 100644 index 0000000..be17151 --- /dev/null +++ b/amber-manifest.json5 @@ -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//: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"] + }, +}