release · coffeeAgntcy · 0.5.0 · 2026-11-06
0.5.0
Lungo and Corto move to **SLIM 2.2**, **A2A 1.x**, and **App SDK 0.6.1**. The local **Directory** stack moves to **v1.8.0** (OASF 1.1.0). Lungo gains the **Supply Chain Commitment** baseline: five agents, a commitment record, and a checker that can mark a clean-looking agreement as a silent failure.
# Summary
• *Breaking / migration (read first)**
<details>
<summary><strong>SLIM 2.2 and A2A 1.x</strong> - Lungo and Corto only; Recruiter stays on A2A 0.3</summary>
- Lungo and Corto now run `agntcy-app-sdk` **0.6.1**, `slim-bindings` **2.2.0**, `slima2a` **0.8.0**, and the SLIM **2.2.0** image. Corto uses `a2a-sdk` **1.1.0**. Lungo overrides `a2a-sdk` to **1.2.3** because Directory's SDK needs protobuf 7 ([#846](https://github.com/agntcy/coffeeAgntcy/pull/846), [#847](https://github.com/agntcy/coffeeAgntcy/pull/847), [#856](https://github.com/agntcy/coffeeAgntcy/pull/856)).
- `SLIM_SHARED_SECRET` must be at least 32 characters. SLIM 2.x rejects anything shorter. If it is unset, empty, or the public app-sdk placeholder, a server that builds a card exits unless `SLIM_ALLOW_PLACEHOLDER_SECRET=true`. That flag defaults to false in code. Docker Compose, `.env.example`, and the integration tests set it true for local runs. Do not enable it in a shared deployment.
- Agent cards list transports in `supported_interfaces`. The old `preferred_transport` field is gone. The Recruiter supervisor still speaks A2A 0.3, and the Lungo farms still answer v0.3 JSON-RPC for the Recruiter interviewer.
- `ioa-observe-sdk` **1.0.49** exports OTLP logs. Collectors that only had traces and metrics answered `/v1/logs` with 404. Compose and the Lungo Helm collector config now have a logs pipeline.
</details>
<details>
<summary><strong>Directory v1.8.0 and OASF 1.1.0</strong> - skill names and <code>dirctl mcp serve</code> moved</summary>
- Lungo and Recruiter compose files run `dir-apiserver` and `dir-ctl` **v1.8.0**. The API server image now has a `grpc-health-probe` healthcheck, and dependents wait for it ([#852](https://github.com/agntcy/coffeeAgntcy/pull/852)).
- `apiserver.env` drops the removed OASF schema URL and adds `DIRECTORY_SERVER_POLICY_ENFORCEMENT_*` (all `off` by default). There is no bundled `server.config.yml`. If you keep a custom env file, sync it with the [v1.8.0 apiserver.env](https://github.com/agntcy/dir/blob/v1.8.0/install/docker/apiserver.env).
- The Lungo `agntcy-dir` SDK is **1.8.1**. It needs `protobuf>=7`, which pulls `a2a-sdk` **1.2.3** and `google-adk` **2.13.0** on Lungo. Recruiter's Python lockfile is unchanged (`agntcy-dir` 1.0.0, `a2a-sdk` 0.3.20, `agntcy-app-sdk` 0.5.5).
- Bundled OASF records move to schema **1.1.0**. Skill names are rooted under their category (`retrieval_augmented_generation/retrieval_of_information` becomes `ai_ml_engineering/retrieval_augmented_generation/rag_pipeline_construction`). Searches on the old names no longer match.
- `dirctl mcp serve` is gone. Schema discovery is the [`dir-mcp`](https://github.com/agntcy/dir-mcp) binary (`ghcr.io/agntcy/dir-mcp:1.3.8-mcp.1`), copied into the `agent-with-dirctl` image as `dir-mcp`. If you run the Recruiter outside Docker, install `dir-mcp` on `PATH`.
</details>
<details>
<summary><strong>NATS, ClickHouse, and the collector images are pinned</strong></summary>
- NATS moves from the floating `nats:latest` tag to **`nats:2.15.0-alpine`** (Helm chart v2) ([#839](https://github.com/agntcy/coffeeAgntcy/pull/839)).
- ClickHouse in Compose matches the Helm chart: `bitnamilegacy/clickhouse:25.7.5-debian-12-r0`. The Bitnami image reads `CLICKHOUSE_ADMIN_USER` and `CLICKHOUSE_ADMIN_PASSWORD`, not `CLICKHOUSE_USER` and `CLICKHOUSE_PASSWORD`. The healthcheck is a bash `/dev/tcp` request to `GET /ping` ([#832](https://github.com/agntcy/coffeeAgntcy/pull/832)).
- The OpenTelemetry collector image is pinned to **0.161.0** instead of `latest`.
</details>
<details>
<summary><strong>Helm</strong> - workflow API URL, chart bumps</summary>
- `auction-supervisor`, `logistics-supervisor`, `recruiter-supervisor`, and `colombia-farm` pass `WORKFLOW_API_URL` and `WORKFLOW_API_KEY` when `config.workflowApiUrl` and `config.workflowApiKey` are set. Without them a Helm agent falls back to `http://localhost:9105` and logs a connection refused error ([#824](https://github.com/agntcy/coffeeAgntcy/pull/824)).
- `lungo-local-cluster` is **0.8.2** and `lungo-ui` is **0.1.8**. `corto-local-cluster` is **0.4.0** (SLIM chart 2.2.0). Run `helm dependency update` in each `local-cluster` chart before upgrading.
</details>
• *Migration steps**
1. Refresh env files, then set a real SLIM secret or explicitly allow the placeholder for a local demo:
cp coffeeAGNTCY/coffee_agents/lungo/.env.example coffeeAGNTCY/coffee_agents/lungo/.env
# SLIM_SHARED_SECRET must be at least 32 characters.
# Local only: SLIM_ALLOW_PLACEHOLDER_SECRET=true
2. Re-sync Python and the Lungo UI after the lockfile bumps:
cd coffeeAGNTCY/coffee_agents/lungo && uv sync
cd frontend && npm ci
3. Directory: point custom `apiserver.env` at the v1.8.0 settings, start the new images, and publish records again with `coffeeAGNTCY/coffee_agents/lungo/scripts/push_oasf_records.sh`. Outside Docker, install `dir-mcp` before starting the Recruiter.
4. Helm: upgrade to `lungo-local-cluster` **0.8.2** and `corto-local-cluster` **0.4.0**. Set `config.workflowApiUrl` (and the key) on agents that emit workflow events. The Supply Chain Buyer is NodePort **30085**.
5. Compose: recreate NATS, ClickHouse, and the collector so the pinned images and the ClickHouse admin env vars take effect. Wipe a local ClickHouse volume if the old upstream image created it.
• *Highlights**
<details>
<summary><strong>Supply Chain Commitment</strong> - baseline scenario on Lungo</summary>
- A new group of five agents (Buyer on port 9095, Suppliers A, B, and C, Logistics) negotiates one coffee shipment. The Buyer moderates over SLIM. Each party only sees its own slice of the scenario ([#856](https://github.com/agntcy/coffeeAgntcy/pull/856)).
- Every run writes a commitment record and a verdict: `PASS`, `FAIL`, or `INVALID`. A run can be a **silent failure**: everyone confirms, nobody objects, and the checker still says the plan is late, over budget, or otherwise wrong. The UI shows which kind of silent failure the case was built to produce.
- Compose profile `supply_chain`. Suggested prompts are the four baseline cases (ambiguous, explicit, infeasible, disruption). `l9_hybrid` and `l9_full` are declared and answer "not implemented". Accord and Concord are not in this release.
- How to run it: [supply_chain_commitment.md](coffeeAGNTCY/coffee_agents/lungo/docs/supply_chain_commitment.md).
</details>
<details>
<summary><strong>Corto sommelier tests</strong> - model download no longer fails the suite</summary>
- Loading the embedding model behind a broken proxy no longer aborts collection. The hf-xet downloader is disabled only for the fallback retry, and the load moved into a session fixture that skips the sommelier tests when the model is unavailable ([#860](https://github.com/agntcy/coffeeAgntcy/pull/860)).
</details>
# Dependencies
Versions that changed since **0.4.1**. Unchanged core pins are not listed (`mcp` 1.30.0, `langgraph` 1.2.11, `agntcy-identity-service-sdk` 0.0.7).
• *Lungo backend** (`lungo/uv.lock`): `agntcy-app-sdk` **0.5.5 -> 0.6.1**, `a2a-sdk` **0.3.20 -> 1.2.3**, `slim-bindings` **1.4.0 -> 2.2.0**, `slima2a` **0.3.0 -> 0.8.0**, `ioa-observe-sdk` **1.0.41 -> 1.0.49**, `agntcy-dir` **1.0.0 -> 1.8.1**, `google-adk` **2.8.0 -> 2.13.0**, `google-genai` **2.22.0 -> 2.32.0**, `protobuf` **6.33.6 -> 7.36.2**, `aiohttp` **3.14.3 -> 3.14.4**, `authlib` **1.7.2 -> 1.9.1**, `grpcio` **1.80.0 -> 1.84.0**, `opentelemetry-*` **1.42.1 -> 1.44.0** (instrumentation **0.63b1 -> 0.65b0**), `yarl` **1.24.2 -> 1.25.1**. Adds Directory and sigstore transitive packages (`agntcy-dir-grpc-python`, `sigstore`, `tuf`, `securesystemslib`). Drops `asgi-lifespan`, `langchain-classic`, `langchain-community`, `langchain-text-splitters`, and `tzlocal`.
• *Corto backend** (`corto/uv.lock`): `agntcy-app-sdk` **0.5.5 -> 0.6.1**, `a2a-sdk` **0.3.20 -> 1.1.0**, `slim-bindings` **1.4.0 -> 2.2.0**, `slima2a` **0.3.0 -> 0.8.0**, `ioa-observe-sdk` **1.0.41 -> 1.0.49**, `aiohttp` **3.14.3 -> 3.14.4**, `yarl` **1.24.5 -> 1.25.1**. Adds `json-rpc` **1.15.0**. Drops `asgi-lifespan`, `langchain-classic`, `langchain-community`, and `langchain-text-splitters`.
• *Recruiter** (`recruiter/uv.lock`): no version changes.
• *Lungo frontend** (`lungo/frontend/package-lock.json`): `vite` **6.4.3 -> 6.4.4**. Drops `@types/dompurify` and `@types/uuid` (the libraries ship their own types). Adds `fdir` **6.5.0**.
• *Corto exchange frontend** (`corto/exchange/frontend/package-lock.json`): `vite` **6.4.3 -> 6.4.4**. Drops `@types/uuid`.
• *Other:** `github.com/a2aproject/a2a-go/v2` **v2.6.0** #836• . `golang.org/x/net` **v0.60.0** #826• . NATS image **2.15.0-alpine**. OpenTelemetry collector image **0.161.0**.
# Changeset
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/821">#821</a> - @pregnor - chore: add OSSF best practices badge</summary>
- Adds the OpenSSF Best Practices badge to the project docs.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/817">#817</a> - @pregnor - chore(build,ci): add helm version bump check</summary>
- CI fails when a Helm chart's files change without a later `version` bump in that chart's `Chart.yaml`.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/822">#822</a> - @arpad-csepi - fix(renovate,uv): remove not-pending from pr creation and enforce lockfile sync</summary>
- Renovate no longer treats "not pending" as a reason to skip opening a pull request.
- Adds a task that checks each `uv.lock` is in sync with its `pyproject.toml`.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/823">#823</a> - @pregnor - chore: fix repo self-compliance issues</summary>
- Archives completed OpenSpec changes, fixes stale script and CI paths, and documents bats and Renovate in the toolchain.
- Adds the Renovate sync script, tests, and skill, and records the `read-all` workflow permissions baseline.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/826">#826</a> - @agntcy-automation[bot] - chore(deps): update module golang.org/x/net to v0.60.0 [security]</summary>
- Security bump of `golang.org/x/net` to v0.60.0 in the Go module.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/824">#824</a> - @pregnor - fix(helm): workflow API url dep in agents</summary>
- Agent charts can set `WORKFLOW_API_URL` and `WORKFLOW_API_KEY`. Without them, Helm agents were calling `localhost:9105` and failing the workflow catalog request.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/828">#828</a> - @pregnor - chore: pin local tool versions</summary>
- Pins the repo-local CLI toolchain (the tools `task setup` installs) to immutable versions.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/836">#836</a> - @agntcy-automation[bot] - chore(deps): update module github.com/a2aproject/a2a-go/v2 to v2.6.0</summary>
- Bumps the `a2a-send` Go dependency `github.com/a2aproject/a2a-go/v2` to v2.6.0.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/838">#838</a> - @agntcy-automation[bot] - chore(deps): update github actions</summary>
- Renovate bump of the GitHub Actions used by this repository's workflows.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/825">#825</a> - @arpad-csepi - chore(frontend): drop deprecated type packages</summary>
- Removes `@types/dompurify` and `@types/uuid`. `dompurify` 3.4.16 and `uuid` 11.1.1 ship their own TypeScript types.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/841">#841</a> - @pregnor - chore: tweak renovate, helm</summary>
- Renovate opens draft pull requests by default, and its config lives in `renovate.json` rather than a workflow.
- Adds Helm CLI to the local toolchain, plus chart-lock update and check tasks, and bumps the Corto local-cluster chart versions that had drifted.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/839">#839</a> - @agntcy-automation[bot] - chore(deps): update helm release nats to v2</summary>
- NATS Helm chart moves to v2. Compose pins `nats:2.15.0-alpine` to the same line as the chart, and removes dead chart code. Lungo test teardown was updated for the new server.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/834">#834</a> - @agntcy-automation[bot] - chore(deps): update dependency bats-core/bats-core to v1.14.0</summary>
- Bumps the pinned `bats-core` used for bash tests to v1.14.0.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/843">#843</a> - @agntcy-automation[bot] - chore(deps): update dependency aiohttp to v3.14.4 [security]</summary>
- Security bump of `aiohttp` from 3.14.3 to 3.14.4 in the Lungo and Corto lockfiles.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/844">#844</a> - @agntcy-automation[bot] - chore(deps): update dependency vite to v6.4.4 [security]</summary>
- Security bump of `vite` from 6.4.3 to 6.4.4 in the Lungo and Corto frontends.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/832">#832</a> - @agntcy-automation[bot] - chore(deps): update helm</summary>
- Helm dependency refresh. Compose observability images are aligned with the charts: OpenTelemetry collector **0.161.0**, and Bitnami legacy ClickHouse **25.7.5** with `CLICKHOUSE_ADMIN_USER` / `CLICKHOUSE_ADMIN_PASSWORD`.
- Grafana, ClickHouse, and the collector log at warning level. Corto's Grafana service is fixed to match.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/846">#846</a> - @misi-bp - feat(lungo): upgrade to SLIM 2.2 and A2A 1.1 (app-sdk 0.6.0)</summary>
- Lungo moves to SLIM 2.2, A2A 1.x, and App SDK 0.6.0. Cards use `supported_interfaces`. The SLIM secret must be 32 characters or longer, with `SLIM_ALLOW_PLACEHOLDER_SECRET` for local placeholders.
- The collector accepts OTLP logs from `ioa-observe-sdk` 1.0.49. Integration-test image overrides can be scoped to one of Corto, Lungo, or Recruiter. The Recruiter supervisor stays on A2A 0.3.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/847">#847</a> - @misi-bp - feat(corto): upgrade Corto to SLIM 2.2, A2A 1.1 and App SDK 0.6.0</summary>
- Corto gets the same SLIM 2.2, A2A 1.1, and App SDK 0.6.0 upgrade, including the farm chart flag for the placeholder secret and an OTLP logs pipeline in its collector.
- `corto-farm` goes to 0.3.0 and `corto-local-cluster` to 0.4.0.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/860">#860</a> - @pregnor - fix(corto): make sommelier model load robust</summary>
- The sommelier embedding download no longer uses hf-xet on the certificate-fallback retry, and a failed download skips those tests instead of breaking collection.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/852">#852</a> - @arpad-csepi - chore: bump directory version to the latest</summary>
- Directory API server and `dirctl` images move to v1.8.0, with a gRPC healthcheck. Lungo's `agntcy-dir` SDK moves to 1.8.1, which forces protobuf 7, `a2a-sdk` 1.2.3, and `google-adk` 2.13.0.
- Bundled OASF records migrate to schema 1.1.0. The Lungo UI shows Directory v1.8.0. `dir-mcp` replaces `dirctl mcp serve`.
</details>
<details>
<summary><a href="https://github.com/agntcy/coffeeAgntcy/pull/856">#856</a> - @misi-bp - feat(lungo): Add supply chain commitment use-case - baseline scenario</summary>
- Adds the Supply Chain Commitment baseline: Buyer, three suppliers, and logistics, a moderated SLIM session, a commitment record, and a deterministic checker. Silent failures are reported with a case kind on the verdict card.
- App SDK moves from 0.6.0 to **0.6.1** so closing one SLIM transport no longer drops the connection other transports in the same process still hold. A failed broadcast reports that connection as broken.
- Compose profile `supply_chain`, images and Helm charts for the three supply-chain services, Buyer NodePort 30085, and `lungo-ui` **0.1.8** / `lungo-local-cluster` **0.8.2**. `l9_hybrid` is not implemented. Suggested prompts quote the Buyer's real opening line.
</details>
# Contributors
• *Returning contributors:** thank you @arpad-csepi.
Version: 0.5.0
Date: 2026-11-06
Status: Released
Breaking: Yes
Components: Core
Authors: @types, @pregnor, @arpad, @agntcy, @misi
PRs:a34810a