Partner Support Agents with A2A Cross-Communication: A New AI Quickstart for Multi-Agent Collaboration
When a customer opens a support case that spans two organizations — say, a telco running Red Hat OpenShift with a partner-managed application layer — resolution today means emails, escalations, and context lost at every handoff. What if AI agents from both organizations could collaborate directly, in real time, using an open standard?
That's exactly what the Partner Support Agents quickstart demonstrates: an enterprise-grade, Agent-to-Agent (A2A) multi-agent system where a Red Hat Support Agent and a Partner Agent work together — orchestrated automatically — to resolve customer issues on OpenShift.
This quickstart deploys a complete AI-powered support routing system built on four pillars:
- AAA (Authentication, Authorization, Accounting) — Users authenticate via JWT, agent access is controlled per-user, and every request is fully audited.
- RAG (Retrieval-Augmented Generation) — Specialist agents query a knowledge base of historical support tickets so responses are grounded in real data, not hallucinated.
- A2A (Agent-to-Agent) Communication — All inter-agent communication happens over direct HTTP calls using a clean, synchronous protocol. No message brokers, no event buses — just agents talking to agents.
- PatternFly Chat UI — A production-ready web interface with login, role-based agent filtering, and a full audit log.
A user describes their issue in the chat UI. The system's Orchestrator (routing agent) classifies the intent and delegates to the right specialist — a Software Support Agent or a Network Support Agent — based on the user's permissions. The specialist queries the RAG knowledge base and returns a grounded, actionable response. Every step is logged with full accounting.
The architecture consists of six services, all containerized and ready to run with a single make setup:
| Service | Role |
|---|---|
| Request Manager | AAA enforcement, A2A orchestration, chat API |
| Agent Service | LLM-based routing agent and specialist agents |
| RAG API | Semantic search over embedded support tickets (ChromaDB + Gemini embeddings) |
| PostgreSQL + pgvector | User data, sessions, full accounting logs |
| ChromaDB | Vector database for RAG |
| Web UI (nginx) | PatternFly 6 chat interface with reverse proxy |
The Request Manager acts as the orchestrator. When a message arrives:
- It invokes the routing agent via
POST /api/v1/agents/routing-agent/invoke, passing the user's permissions and conversation history in atransfer_context. - The routing agent classifies the intent and returns a routing decision (e.g.,
ROUTE:software-support). - The Request Manager checks authorization, then makes a second A2A call to the specialist agent.
- The specialist queries the RAG API, builds a prompt with the retrieved context, and returns a grounded response.
- Full accounting is written at every hop — agent identity, response content, and processing time.
This two-hop pattern is intentionally simple. There's no service mesh, no async message queue — just HTTP requests with structured context passed between agents. That simplicity is the point: teams new to A2A can read the code and understand exactly how agents discover each other, exchange tasks, and return results.
Authorization isn't just a prompt instruction — it's enforced at three independent layers:
- LLM prompt — The routing agent's system prompt only lists the user's permitted agents.
- Hard gate — The Request Manager checks
allowed_agentsbefore every specialist call, regardless of what the LLM says. - UI filtering — The frontend only shows agents the user is allowed to access.
Even if the LLM hallucinates a routing decision to an unauthorized agent, the hard gate blocks it. This defense-in-depth approach reflects how enterprise AI systems should handle authorization.
- Docker
- A Google API Key (for Gemini LLM and embeddings)
git clone https://github.com/ccamacho/agentic-partners-integration.git
cd agentic-partners-integration
export GOOGLE_API_KEY=your-key-here
make setupThat's it. The setup builds all containers, starts services, runs database migrations, creates test users, ingests the RAG knowledge base, and launches the web UI. When it finishes:
- Web UI: http://localhost:3000
- API: http://localhost:8000
Sign in as sharon@example.com / sharon123 (admin access to all agents) and try: "My app crashes with error 500" — watch it route to the software support agent with RAG-grounded context.
The quickstart also supports pluggable LLM backends — switch between Gemini, OpenAI, and Ollama (local) by changing a single environment variable.
This quickstart is the first in a planned series. Future additions include:
- Observability — Agent traces and metrics with Langfuse (see issue #40)
- Multimodal interactions — Voice-based support scenarios
- Cross-industry adaptation — The telco support scenario is intentionally representative; the same architecture applies to finance, manufacturing, and managed services
The Partner Support Agents quickstart shows that multi-agent collaboration doesn't have to be complex. With A2A over HTTP, RAG-grounded responses, and enterprise-grade AAA, you can build agent systems that work across organizational boundaries — and understand exactly how they work.
- Quickstart repo: ccamacho/agentic-partners-integration
- AI Quickstarts catalog: docs.redhat.com/en/learn/ai-quickstarts
- Suggest a quickstart: ai-quickstart-contrib