Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Customer Support Copilot

A standalone C++20 tutorial for A2A delegation backed by an OAuth-protected MCP resource.

support_client -> A2A coordinator -> A2A specialist -> MCP -> ContextForge
                                                ^
                                                |
                                         Keycloak token

The tutorial is intentionally MCP-only: the client sends a ticket_resource URI, and the specialist always retrieves the ticket through ContextForge. There is no file-input fallback.

Run individually with Docker Compose

Docker Compose 2.20.3 or newer is required. From the repository root:

docker compose -f examples/tutorials/customer_support_copilot/compose.yaml -f examples/tutorials/customer_support_copilot/compose.contextforge.yaml up --build --attach support-specialist --attach support-coordinator --attach support-smoke support-smoke

Compose streams only the specialist, coordinator, and smoke-client logs; Keycloak and ContextForge remain available without flooding the tutorial output. The flow generates ephemeral secrets and certificates, bootstraps a least-privilege MCP principal and ticket resource, verifies OAuth-protected MCP 2025-11-25 resources/read, and runs the A2A client.

After the smoke client completes, press Ctrl+C and clean up:

docker compose -f examples/tutorials/customer_support_copilot/compose.yaml -f examples/tutorials/customer_support_copilot/compose.contextforge.yaml down --volumes --remove-orphans

For a one-shot automated run:

docker compose -f examples/tutorials/customer_support_copilot/compose.yaml -f examples/tutorials/customer_support_copilot/compose.contextforge.yaml run --build --rm support-smoke

See the production tutorials guide for optional model configuration.

Troubleshooting Docker

To include infrastructure logs while debugging:

docker compose -f examples/tutorials/customer_support_copilot/compose.yaml -f examples/tutorials/customer_support_copilot/compose.contextforge.yaml logs