From 101c505290edf8d1a75dc0d0398da123109c6907 Mon Sep 17 00:00:00 2001 From: staverm Date: Mon, 2 Mar 2026 22:18:04 +0100 Subject: [PATCH] Add amber manifest --- README.md | 9 ++++++--- amber-manifest.json5 | 45 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 amber-manifest.json5 diff --git a/README.md b/README.md index fd73ec9..50ed235 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 an agent using this template, see this [draft PR](https://github.com/RDI-Foundation/agent-template/pull/8). diff --git a/amber-manifest.json5 b/amber-manifest.json5 new file mode 100644 index 0000000..1f1a836 --- /dev/null +++ b/amber-manifest.json5 @@ -0,0 +1,45 @@ +{ + 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 9010", + + // TODO: Pass config values as environment variables + env: { + MY_API_KEY: "${config.my_api_key}", + }, + + network: { + endpoints: [ + { name: "a2a_endpoint", port: 9010 }, // 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" }, +}