New! The Agentic Review : A podcast on AI adoption, trust, and governance in engineering
→ Listen

PR-Agent Joined the MOSAICO Agent Community over A2A

AI coding tools are getting more capable every month. The frontier now is coordination: letting specialized agents discover one another, delegate subtasks, share context, and operate under policies that keep their collective output reliable. A developer might want one agent to write code, a second to review it, and a third to generate tests, all working together through a common protocol with a full record of who did what and why.

MOSAICO is the research project building that infrastructure. Qodo joined it and contributed PR-Agent, the open source PR reviewer Qodo sponsors, wrapped as an A2A solution agent so the community can delegate code review to it. This post walks through what MOSAICO is, what the Agent2Agent protocol asks of a participating tool, and how we wrapped PR-Agent as a fully compliant agent while leaving every existing source file untouched.

A community of agents for software engineering

MOSAICO stands for Management, Orchestration and Supervision of AI agent communities for reliable AI in software engineering. It is a Horizon Europe research project, spanning 12 partners across 9 countries and coordinated by Prof. Massimo Tisi at IMT Atlantique. The mission is a coordination layer for AI in software engineering: an infrastructure that lets specialized agents find each other, agree on who does what, and stay accountable for the quality of their output.

The platform rests on four pillars:

  • AISP, the AI agent server protocol: a vendor neutral communication standard built as a profile of Google’s open source Agent2Agent (A2A) protocol, extended with software engineering specific capabilities for observability, transparency, and consensus. It runs as JSON over HTTP with Server Sent Events for streaming.
  • The MOSAICO Repository: a searchable registry of agents, classified by an AgentWare taxonomy and scored by an AgentSLA quality model that extends the ISO 25010 software quality standard. When a task arrives, the platform queries this registry and finds the best-fit agent through vector search.
  • The MOSAICO Orchestrator: designed to coordinate multi agent workflows on a Belief Desire Intention model adapted for LLM based agents, with SysML v2 as the language for collaboration patterns.
  • The Decision Engine: a governance layer that encodes policies such as Voting, Majority, and Consensus to supervise agent communities at runtime.

PR-Agent, the open source PR reviewer

PR-Agent is the first publicly available PR reviewer, an open-source project sponsored by Qodo and developed openly at https://github.com/The-PR-Agent/pr-agent. It is used by a large and active developer community. It reads a pull request or a supplied diff, runs a structured review, and returns findings: key issues, a security assessment, an effort estimate, inline suggestions, and answers to questions about the change. It does this across GitHub, GitLab, Bitbucket, and Azure DevOps.

The opportunity in MOSAICO was to make that same review capability available to the agent community, so a reference agent could delegate a review task to PR-Agent and receive fully traced results.

The A2A protocol, and what an agent does to join

A2A is a JSON over HTTP protocol for agents to call one another. Joining the community comes down to three obligations. An agent serves an agent card at a well-known URL that advertises its identity, skills, and capabilities. It accepts work over a message/send endpoint. It reports liveness over a health check. The reference agent reads the card to decide who can do what, sends the task as an A2A message, and observes the result.

An agent that cannot speak A2A is invisible to the community. The engineering question for Qodo was clear: how do we make PR-Agent speak A2A v0.3.x, serve a proper card, and return review output the platform can route and observe, while protecting every existing user of the tool?

Qodo’s contribution: a strictly additive solution agent

The governing constraint we set for ourselves was simple. The MOSAICO integration must keep the behavior of PR-Agent identical for every existing user. A developer who has never heard of MOSAICO should pull the same image and see exactly what they expect.

The entire integration lives in a single new package, pr_agent/mosaico/. No existing Python source file was edited. The package activates only on the presence of MOSAICO specific environment variables. With those absent, it stays inert.

The environment bridge is where the two worlds meet. MOSAICO’s operator contract supplies API_BASE, API_KEY, MODEL_NAME, and Langfuse tracing keys, and the bridge maps these onto PR-Agent’s existing settings layer at startup. Every mapping is a conditional assignment: when a variable is absent, nothing happens and existing configuration stays untouched.

Per request isolation follows the same philosophy. Each incoming A2A message/send call gets a deep copy of the global settings, scoped to a per-request context. This is the same concurrency-isolation pattern that PR-Agent already uses internally, so the A2A boundary inherits a guarantee that the core team validated. Concurrent requests from different MOSAICO agents stay fully isolated from each other and from the shared configuration

A final layer captures output in memory on every request, so the review markdown returns to the calling agent. Reading the result from the tool’s own data layer with graceful fallbacks keeps the review text flowing correctly through the existing pipeline. The seam is clean, and the integration adds capability without touching anything that already works.

The A2A surface

The agent runs an in-process A2A server with three endpoints: the agent card at /.well-known/agent-card.json, the A2A message/send endpoint at POST /, and a /health probe that runs a live LLM connectivity check. The card advertises the name PR-Agent Solution Agent, version 0.36.0, four skills (review, improve, describe, ask), and the MOSAICO observability extension.

Inbound text routes three ways. A pull request URL triggers a review through the real git provider. A supplied unified diff goes to an in-memory diff provider. Free text lacking both gets honest guidance on what the agent needs. The agent also emits traces to Langfuse, so each review nests inside the calling task’s trace and stays visible across the community.

Validating it end to end

We verified the agent from a clean state: a fresh pull of the public image, a container boot, a valid agent card, a healthy /health check against a live LLM key, and an A2A message/send that returned a genuine review reasoning over a supplied diff from the real reviewer pipeline. We also ran it inside the full MOSAICO demonstrator, where it registered cleanly, stayed healthy, and ranked at the top for review queries. Eleven dedicated test files cover the A2A round trip, concurrency isolation, the health probe, and routing, and the suite runs green in CI.

What this means for teams building on agent ecosystems

Three takeaways carry beyond this one project.

First, the real payoff: a proven tool becomes composable. Speaking A2A turns PR-Agent from a standalone reviewer into a service that any agent in the community can discover and delegate to, with full tracing on every review. The capability users already trust is now available to the entire agent ecosystem, and the additive approach delivers that reach without putting any existing user at risk.

Second, gate the new behavior behind its own environment variables, so existing users are never affected. When those variables are absent, the integration does nothing and the tool runs exactly as it always has. The new capability switches on only when an operator opts in, which lets you add reach without asking your current users to accept any change.

Third, reuse the isolation your tool already trusts. A new protocol endpoint means many requests share the tool’s configuration at once, so each incoming request gets its own private copy of the settings. PR-Agent already used that pattern internally, and applying it at the A2A boundary keeps concurrent requests fully isolated while inheriting a guarantee the core tool already proves.

Protocol based agent ecosystems are operational today. The registry, the protocol, and real solution agents are running, and a production tool can join the community without rewriting any of its core. PR-Agent speaks A2A today, shipped as a public Docker image (pragent/pr-agent:mosaico_agent, available on Docker Hub), and the same additive pattern is available to any team that wants to bring a proven tool into the agent web.

Get started with Qodo for AI Code Review

Get Started
Share this post

More from our blog

Check out our musings on generative AI, code integrity, and other geeky stuff: