Amplifier Architecture

Context at Every Level

Active A2A — Agent-to-Agent Protocol

How Amplifier's directory-aware context and A2A (Agent-to-Agent — a protocol for autonomous inter-agent communication) combine to create focused, collaborative multi-agent workspaces.

One project. Many agents. Each with the right context — and a way to talk to each other.

February 2026

The Big Idea
"One project. Many agents.
Each with the right context."

Amplifier lets you run agents in different subdirectories of the same project — and each one gets its own tailored context. Not a compromise. A feature.

🌲
Run from /project
Loads project-wide skills, AGENTS.md, and bundle. The top-level orchestrator with full workspace awareness.
📁
Run from /github-local
Loads github-local-specific skills, bundle, and AGENTS.md. A specialist that knows only what it needs.
Same workspace
Completely different agent personalities and capabilities — wired together via A2A protocol.
Context Layers in Practice

"The workspace has layers."

The self-improvement workspace, annotated:

# Each directory is an independent agent "zone" ~/repos/self-improvement/ ← root agent: self-improvement-agent .amplifier/bundle.md ← project-wide bundle, tools, persona AGENTS.md ← project context for ALL agents .amplifier/settings.yaml ← A2A port 8222, known_agents github-local/ ← subdir agent: github-local-agent .amplifier/bundle.md ← github-local specific bundle AGENTS.md ← github-local specific context .amplifier/settings.yaml ← A2A port 8223 amplifier-resolve/ ← can have its own .amplifier/ too issues-to-brief/

Each directory pushes down only what's relevant: skills specific to that service, the right architectural context in AGENTS.md, and modules tuned for that workload.

Why This Is Powerful

"Stop polluting your context. Scope it."

In a complex AI workspace, context pollution is real:

The Problem Without Scoping
⚠️ Root-level context knows about the whole pipeline
⚠️ github-local agent shouldn't need CXDB internals
⚠️ amplifier-resolve needs Docker + GitHub, not storage abstractions
The Solution: Directory-Scoped Context
  • Each agent stays focused on its domain
  • Smaller, cheaper, more accurate LLM calls
  • AGENTS.md evolves independently per service
  • Skills pushed down only where needed
  • No monolithic "do everything" context window
Context Can Still Flow

"Subdirectory ≠ Isolation."

Context pipelines connect everything — via A2A (Agent-to-Agent) communication.

📥 Pattern 1: Parent → Child
Root Agent
Child Agent

Root holds the high-level plan and project state. Child is delegated a scoped task — parent passes relevant context in the delegation message.

↔ Pattern 2: Parallel A2A
self-improvement-agent
:8222
github-local-agent
:8223

Agents on the same machine, different directories, communicate over A2A. Each maintains its own identity and context — but can query each other.

Result: Deep domain focus AND cross-agent awareness — without compromising either.

A2A in Action

"Two agents. Two ports. One machine. And they talk."

In the self-improvement workspace, cross-directory A2A is wired and live:

self-improvement-agent github-local-agent (port 8222) (port 8223) /repos/self-improvement/ /repos/self-improvement/github-local/ .amplifier/bundle.md .amplifier/bundle.md | | | ← A2A message ────────────── | | "What repos do you have?" | | ← autonomous response ───── | └───────────────────────────────┘
Autonomous
The root agent queries the github-local agent without human intervention — fully automated pipeline.
No Context Duplication
Each agent keeps its own identity. No shared state leakage, no monolithic context blob.
Cross-Directory Awareness
Root can ask github-local about its APIs, repos, capabilities — on demand, asynchronously.
The Trust Tier Breakthrough

"known vs. trusted: the key to autonomous pipelines."

A2A has a trust system that controls whether messages need human approval or respond autonomously:

🔒 known tier

Message is queued → session enters INPUT_REQUIRED state → a human must review and respond before the pipeline continues.

Pre-registered agents in known_agents start here by default.

→ A2A message received
⏸ INPUT_REQUIRED (blocked)
👤 Human reviews & responds
→ Pipeline resumes
trusted tier

An autonomous child session is spawned immediately → the agent responds without any human in the loop.

Upgrade via a2a trust or direct contacts.json edit.

→ A2A message received
⚡ Child session spawned
🤖 Responds autonomously
→ Pipeline continues

Once trusted: the github-local-agent responds autonomously. Zero human intervention. Full pipeline automation.

What We Learned

"Issues encountered — and what comes next."

⚠️
known_agents in bundle.md only accepts {name, url} — no tier parameter supported. Pre-registered agents always land at "known" tier, requiring a separate manual step to elevate before autonomous communication works.
🔁
First autonomous communication required a manual trust tier upgrade before the pipeline could run hands-free. One-time setup, but not yet declarative.
A2A timeout sensitivity — slow LLM responses in subdirectory agents can cause parent-side timeouts during pipeline runs.
Fix #1 — Direct contacts.json Edit

One-time setup, persistent across all sessions. Best for stable trusted peers.

# ~/.amplifier/a2a/contacts.json { "tier": "trusted" } // was: "known"
Fix #2 — Runtime a2a trust

Programmatic, works across machines, scriptable. Best for CI or dynamic environments.

# At session startup: a2a(operation="trust", agent="self-improvement-agent", tier="trusted")

The ideal future: known_agents in bundle.md should support a tier field — trust levels declared once, versioned with your bundle, applied automatically at startup.

The Pattern

"Directory-aware context. Pipeline-connected agents."

Project Root ├── .amplifier/ ← whole-project context │ ├── service-a/ │ └── .amplifier/ ← only what service-a needs │ └── service-b/ └── .amplifier/ ← only what service-b needs │ └── A2A ──→ Can still talk to root or service-a agents
🎯 Domain Expertise
Every agent is a specialist, not a generalist. Context is exactly what that agent needs — nothing more.
🔗 Still Connected
A2A protocol means specialists can query each other without duplicating context or requiring human relay.
📐 Architecture Primitive
Directory resolution isn't a quirk — it's a first-class design for building focused agent teams that coordinate seamlessly.

The takeaway: In complex workspaces, Amplifier's directory resolution is the difference between one overloaded agent and a focused team of specialists that still coordinate seamlessly. Scope your context. Connect your agents. Ship faster.

1 / 9
More Amplifier Stories