# fetchai/innovation-lab-examples architecture

> Architecture diagram of the GitHub repository fetchai/innovation-lab-examples, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-18). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fetchai/innovation-lab-examples
- Repository: https://github.com/fetchai/innovation-lab-examples

## Overview

1. This repository is a monorepo of independent agent examples rather than one unified application. The root level mainly provides repository-wide governance, contribution workflow, setup automation, CI, and documentation. The actual runtime architectures live inside many self-contained example folders.

2. The top-level structure is organized by agent framework or integration style: uAgents/Fetch.ai examples, OpenAI/Anthropic/Gemini/Google ADK examples, CrewAI/AG2, MCP agents, A2A integrations, payment-enabled agents, RAG/knowledge agents, and Web3 examples. Each subdirectory is effectively its own deployable unit with its own dependencies and entrypoint.

3. The common application pattern across most examples is a thin startup file plus domain modules. Typical entrypoints are named `agent.py`, `main.py`, `run.py`, or framework-specific variants, and they wire together prompts, tool adapters, state, and communication protocols. This makes the diagram for any single example usually “entrypoint → orchestration logic → tools/services → external APIs.”

4. A major boundary in the repo is agent orchestration versus tool execution. Many examples have dedicated orchestrators, planners, or workflow modules that decide what to do next, while separate modules handle scraping, search, extraction, rendering, or API calls. Examples include multi-agent teams, router agents, and orchestrator/worker patterns.

5. Several examples are explicitly multi-agent systems. For instance, the `fetch-hackathon-quickstarter`, `a2a-uAgents-Integration`, `Crewai-agents`, `ag2-agents`, and parts of `openai-agent-sdk/Appliance Auto Whisperer` split responsibilities across specialist agents such as research, analysis, synthesis, or task-specific workers. In diagrams, these should be shown as multiple internal agent nodes coordinated by a central planner or orchestrator.

6. Protocol and transport layers are a first-class architectural boundary in this repo. Many examples define chat, payment, or task protocols in dedicated modules such as `chat_proto.py`, `payment_proto.py`, `protocols/`, or `uagents_protocol/`. A2A examples add agent-to-agent communication contracts, while MCP examples separate agent logic from MCP server/client adapters.

7. External integrations are usually isolated behind service modules or client wrappers. Common integrations include LLM providers, search APIs, browser automation, financial/payment gateways like Stripe or Skyfire, Google services, GitHub/Gmail/Calendar via MCP, and data sources like NewsAPI, Tavily, Duffel, or BrightData. The repo favors adapters and clients rather than spreading API calls through core agent logic.

8. State management is localized per example and often persistent. Some examples use lightweight in-memory/session stores, while others use SQLite, JSON state files, or dedicated state services. When persistence matters, it is usually used for conversation/session continuity, cached results, payment/session tracking, or agent mailbox/routing metadata.

9. Several examples produce user-facing artifacts rather than just text responses. Examples include card-based news rendering, PDF or report generation, spreadsheet outputs, browser form filling, image/video/music generation, and frontend integration with a Next.js app. In those cases, the pipeline typically ends in a formatter, renderer, or response-composer module that converts internal agent output into a consumable artifact.

10. Testing and packaging are uneven but intentional where examples are more production-like. Some advanced examples include unit/integration tests, Dockerfiles, docker-compose files, and deployment scripts; simpler examples mostly rely on README-driven setup. For architecture diagrams, treat Docker and test artifacts as example-specific deployment/test boundaries, not as shared platform services.

11. The root repo tooling is oriented around contributor workflow and quality gates. GitHub workflows handle CI, label sync/bootstrap, and contributor badges; docs define template/readme standards; and `setup.sh` plus the root Docker support simplify running a chosen example. This means the repository has a strong governance layer, but no centralized runtime backend.

12. A useful mental model is: “one repository, many small agent systems.” The shared pattern is an agent entrypoint that coordinates domain logic, tool adapters, and external services, with protocols defining how agents communicate and optional state/persistence enabling continuity. Any accurate diagram should therefore be drawn at the example-folder level, not as a single repo-wide service graph.

Main entry points: [`openai-agent-sdk/Appliance Auto Whisperer/app/orchestration/coordinator.py`](https://github.com/fetchai/innovation-lab-examples/blob/HEAD/openai-agent-sdk/Appliance%20Auto%20Whisperer/app/orchestration/coordinator.py) (Whisperer), [`duffel-agent/agent.py`](https://github.com/fetchai/innovation-lab-examples/blob/main/duffel-agent/agent.py) (Duffel Agent), [`a2a-uAgents-Integration/a2a-Inbound-Communication/Multiagent-Planner/host_agent/routing_agent.py`](https://github.com/fetchai/innovation-lab-examples/blob/main/a2a-uAgents-Integration/a2a-Inbound-Communication/Multiagent-Planner/host_agent/routing_agent.py) (A2A Host), [`Browser-based-agents/playwright/job-application-agent/orchestrator-agent/agent.py`](https://github.com/fetchai/innovation-lab-examples/blob/main/Browser-based-agents/playwright/job-application-agent/orchestrator-agent/agent.py) (Job Agent)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_governance["Governance"]
  node_repo_ci["Repo CI<br/>governance<br/>[ci.yml]"]
  node_repo_setup["Setup<br/>bootstrap<br/>[setup.sh]"]
  node_repo_docs["Docs"]
end

subgraph group_browser["Browser Agents"]
  node_browser_job["Job Agent<br/>browser-orchestrated<br/>[agent.py]"]
  node_browser_nike["Nike Agent<br/>browser-scrape<br/>[agent.py]"]
end

subgraph group_sdk["Framework SDKs"]
  node_anthropic_router["Router Agent<br/>multi-agent-router<br/>[router_agent.py]"]
  node_openai_whisperer["Whisperer<br/>multi-agent-app<br/>[coordinator.py]"]
  node_google_subagents["Sub Agents<br/>team-workflow<br/>[runner.py]"]
  node_crew_trip["Trip Planner<br/>crew-ai<br/>[trip_agents.py]"]
  node_ag2_payment["Payment Team<br/>ag2-workflow"]
end

subgraph group_protocols["Protocols & Payments"]
  node_a2a_host["A2A Host<br/>agent-router<br/>[routing_agent.py]"]
  node_mcp_ticketlens["TicketLens<br/>mcp-client<br/>[mcp_client.py]"]
  node_duffel_agent["Duffel Agent<br/>protocol-payments<br/>[agent.py]"]
  node_stripe_expenses["Expense Agent<br/>payment-workflow<br/>[agent.py]"]
end

subgraph group_domain["Domain Apps"]
  node_rag_ango["RAG Agent<br/>retrieval-app<br/>[agent.py]"]
  node_frontend_app["Frontend App<br/>ui-integration<br/>[frontend_app.py]"]
  node_news_cards["News Cards<br/>artifact-rendering<br/>[agent.py]"]
  node_security_scan["Security Scanner<br/>analysis-agent<br/>[agent.py]"]
  node_google_trends["Trends Agent<br/>service-agent<br/>[agent.py]"]
end

subgraph group_web3["Web3"]
  node_web3_ic["IC Agent<br/>web3-app<br/>[index.ts]"]
  node_web3_metta["Metta Agent<br/>web3-rag<br/>[agent.py]"]
end

subgraph group_research["Research Teams"]
  node_research_team["Research Team<br/>multi-agent-team<br/>[planner.py]"]
  node_fetch_quickstarter["Fetch Quickstart<br/>multi-agent-team"]
end

node_repo_ci -->|"supports"| node_repo_setup
node_repo_docs -->|"guides"| node_repo_ci
node_repo_setup -->|"launches"| node_fetch_quickstarter
node_browser_job -->|"same pattern"| node_browser_nike
node_anthropic_router -->|"orchestrates"| node_openai_whisperer
node_openai_whisperer -->|"teams"| node_google_subagents
node_google_subagents -->|"specializes"| node_crew_trip
node_crew_trip -->|"routes"| node_ag2_payment
node_a2a_host -->|"protocols"| node_mcp_ticketlens
node_duffel_agent -->|"payments"| node_stripe_expenses
node_duffel_agent -->|"communicates"| node_a2a_host
node_rag_ango -->|"renders"| node_news_cards
node_frontend_app -->|"integrates"| node_news_cards
node_security_scan -->|"analyzes"| node_rag_ango
node_google_trends -->|"serves"| node_frontend_app
node_web3_ic -->|"web3 stack"| node_web3_metta
node_research_team -->|"shared shape"| node_fetch_quickstarter
node_research_team -->|"task routing"| node_a2a_host
node_openai_whisperer -->|"stateful flow"| node_duffel_agent
node_browser_job -->|"payments"| node_stripe_expenses

click node_repo_ci "https://github.com/fetchai/innovation-lab-examples/blob/main/.github/workflows/ci.yml"
click node_repo_setup "https://github.com/fetchai/innovation-lab-examples/blob/main/setup.sh"
click node_repo_docs "https://github.com/fetchai/innovation-lab-examples/blob/main/docs/AGENT_README_TEMPLATE.md"
click node_browser_job "https://github.com/fetchai/innovation-lab-examples/blob/main/Browser-based-agents/playwright/job-application-agent/orchestrator-agent/agent.py"
click node_browser_nike "https://github.com/fetchai/innovation-lab-examples/blob/main/Browser-based-agents/Notte-labs-agent/Nike-products-agent/agent.py"
click node_anthropic_router "https://github.com/fetchai/innovation-lab-examples/blob/main/anthropic-quickstart/05-multi-agent-system/router_agent.py"
click node_openai_whisperer "https://github.com/fetchai/innovation-lab-examples/blob/main/openai-agent-sdk/Appliance Auto Whisperer/app/orchestration/coordinator.py"
click node_google_subagents "https://github.com/fetchai/innovation-lab-examples/blob/main/google-adk/sub-agents/shared/runner.py"
click node_crew_trip "https://github.com/fetchai/innovation-lab-examples/blob/main/Crewai-agents/trip_planner/trip_agents.py"
click node_ag2_payment "https://github.com/fetchai/innovation-lab-examples/blob/main/ag2-agents/payment-approval/payment_workflow.py"
click node_a2a_host "https://github.com/fetchai/innovation-lab-examples/blob/main/a2a-uAgents-Integration/a2a-Inbound-Communication/Multiagent-Planner/host_agent/routing_agent.py"
click node_mcp_ticketlens "https://github.com/fetchai/innovation-lab-examples/blob/main/mcp-agents/ticketlens-agent/mcp_client.py"
click node_duffel_agent "https://github.com/fetchai/innovation-lab-examples/blob/main/duffel-agent/agent.py"
click node_stripe_expenses "https://github.com/fetchai/innovation-lab-examples/blob/main/stripe-payment-agents/expense-calculator-group/agent.py"
click node_rag_ango "https://github.com/fetchai/innovation-lab-examples/blob/main/Rag-agent/ango/agent.py"
click node_frontend_app "https://github.com/fetchai/innovation-lab-examples/blob/main/frontend-integration/frontend_app.py"
click node_news_cards "https://github.com/fetchai/innovation-lab-examples/blob/main/news-card-agent/agent.py"
click node_security_scan "https://github.com/fetchai/innovation-lab-examples/blob/main/security-scanner-agent/agent.py"
click node_google_trends "https://github.com/fetchai/innovation-lab-examples/blob/main/google-adk/google-trends-agent/agent.py"
click node_web3_ic "https://github.com/fetchai/innovation-lab-examples/blob/main/web3/internet-computer/ic/src/backend/index.ts"
click node_web3_metta "https://github.com/fetchai/innovation-lab-examples/blob/main/web3/singularity-net-metta/agent.py"
click node_research_team "https://github.com/fetchai/innovation-lab-examples/blob/main/openclaw/fetchai-openclaw-orchestrator/orchestrator/planner.py"
click node_fetch_quickstarter "https://github.com/fetchai/innovation-lab-examples/blob/main/fetch-hackathon-quickstarter/agents/orchestrator/orchestrator_fetchai_wrapped_agent.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_repo_ci,node_repo_setup,node_repo_docs,node_research_team,node_fetch_quickstarter toneBlue
class node_browser_job,node_browser_nike toneAmber
class node_anthropic_router,node_openai_whisperer,node_google_subagents,node_crew_trip,node_ag2_payment toneMint
class node_a2a_host,node_mcp_ticketlens,node_duffel_agent,node_stripe_expenses toneRose
class node_rag_ango,node_frontend_app,node_news_cards,node_security_scan,node_google_trends toneIndigo
class node_web3_ic,node_web3_metta toneTeal
```

## Components

### Governance

Repo-wide setup, contribution, and CI

- [Repo CI](https://github.com/fetchai/innovation-lab-examples/blob/main/.github/workflows/ci.yml): governance · GitHub workflows and automation for quality gates · `.github/workflows/ci.yml`
- [Setup](https://github.com/fetchai/innovation-lab-examples/blob/main/setup.sh): bootstrap · Root-level startup helper for choosing examples · `setup.sh`
- [Docs](https://github.com/fetchai/innovation-lab-examples/blob/main/docs/AGENT_README_TEMPLATE.md): docs · Shared contributor and agent-readme guidance · `docs/AGENT_README_TEMPLATE.md`

### Browser Agents

Playwright and web scraping examples

- [Job Agent](https://github.com/fetchai/innovation-lab-examples/blob/main/Browser-based-agents/playwright/job-application-agent/orchestrator-agent/agent.py): browser-orchestrated · Playwright-driven application filler with payment and form rendering · `Browser-based-agents/playwright/job-application-agent/orchestrator-agent/agent.py`
- [Nike Agent](https://github.com/fetchai/innovation-lab-examples/blob/main/Browser-based-agents/Notte-labs-agent/Nike-products-agent/agent.py): browser-scrape · Thin entrypoint around product scraping and chat protocol · `Browser-based-agents/Notte-labs-agent/Nike-products-agent/agent.py`

### Framework SDKs

OpenAI, Anthropic, Google ADK, CrewAI, AG2 examples

- [Router Agent](https://github.com/fetchai/innovation-lab-examples/blob/main/anthropic-quickstart/05-multi-agent-system/router_agent.py): multi-agent-router · Anthropic quickstart multi-agent coordination example · `anthropic-quickstart/05-multi-agent-system/router_agent.py`
- [Whisperer](https://github.com/fetchai/innovation-lab-examples/blob/HEAD/openai-agent-sdk/Appliance%20Auto%20Whisperer/app/orchestration/coordinator.py): multi-agent-app · OpenAI agent-sdk app with orchestrator, specialists, and services · `openai-agent-sdk/Appliance Auto Whisperer/app/orchestration/coordinator.py`
- [Sub Agents](https://github.com/fetchai/innovation-lab-examples/blob/main/google-adk/sub-agents/shared/runner.py): team-workflow · Google ADK team built from shared runner and specialist agents · `google-adk/sub-agents/shared/runner.py`
- [Trip Planner](https://github.com/fetchai/innovation-lab-examples/blob/main/Crewai-agents/trip_planner/trip_agents.py): crew-ai · CrewAI trip planning example with tools and tasks · `Crewai-agents/trip_planner/trip_agents.py`
- [Payment Team](https://github.com/fetchai/innovation-lab-examples/blob/main/ag2-agents/payment-approval/payment_workflow.py): ag2-workflow · AG2 payment approval flow with executor and workflow · `ag2-agents/payment-approval/payment_workflow.py`

### Protocols & Payments

A2A, MCP, chat/payment contracts, and billing flows

- [A2A Host](https://github.com/fetchai/innovation-lab-examples/blob/main/a2a-uAgents-Integration/a2a-Inbound-Communication/Multiagent-Planner/host_agent/routing_agent.py): agent-router · Inbound A2A planner that routes to specialist agents · `a2a-uAgents-Integration/a2a-Inbound-Communication/Multiagent-Planner/host_agent/routing_agent.py`
- [TicketLens](https://github.com/fetchai/innovation-lab-examples/blob/main/mcp-agents/ticketlens-agent/mcp_client.py): mcp-client · MCP consumer with chat protocol and client adapter · `mcp-agents/ticketlens-agent/mcp_client.py`
- [Duffel Agent](https://github.com/fetchai/innovation-lab-examples/blob/main/duffel-agent/agent.py): protocol-payments · Travel agent with chat and payment protocols plus state · `duffel-agent/agent.py`
- [Expense Agent](https://github.com/fetchai/innovation-lab-examples/blob/main/stripe-payment-agents/expense-calculator-group/agent.py): payment-workflow · Stripe-enabled receipt and expense processing pipeline · `stripe-payment-agents/expense-calculator-group/agent.py`

### Domain Apps

RAG, search, frontend, and specialized vertical agents

- [RAG Agent](https://github.com/fetchai/innovation-lab-examples/blob/main/Rag-agent/ango/agent.py): retrieval-app · Document Q&A agent centered on retrieval and prompting · `Rag-agent/ango/agent.py`
- [Frontend App](https://github.com/fetchai/innovation-lab-examples/blob/main/frontend-integration/frontend_app.py): ui-integration · Python backend plus Next.js frontend integration example · `frontend-integration/frontend_app.py`
- [News Cards](https://github.com/fetchai/innovation-lab-examples/blob/main/news-card-agent/agent.py): artifact-rendering · News summarization pipeline that outputs card-based artifacts · `news-card-agent/agent.py`
- [Security Scanner](https://github.com/fetchai/innovation-lab-examples/blob/main/security-scanner-agent/agent.py): analysis-agent · Security scanning agent with model-backed analysis · `security-scanner-agent/agent.py`
- [Trends Agent](https://github.com/fetchai/innovation-lab-examples/blob/main/google-adk/google-trends-agent/agent.py): service-agent · Google ADK agent using handlers, state, and payments · `google-adk/google-trends-agent/agent.py`

### Web3

Internet Computer and SingularityNET examples

- [IC Agent](https://github.com/fetchai/innovation-lab-examples/blob/main/web3/internet-computer/ic/src/backend/index.ts): web3-app · Internet Computer frontend/backend example with fetch agent · `web3/internet-computer/ic/src/backend/index.ts`
- [Metta Agent](https://github.com/fetchai/innovation-lab-examples/blob/main/web3/singularity-net-metta/agent.py): web3-rag · SingularityNET/MeTTa knowledge and RAG examples · `web3/singularity-net-metta/agent.py`

### Research Teams

Orchestrated multi-agent research and synthesis systems

- [Research Team](https://github.com/fetchai/innovation-lab-examples/blob/main/openclaw/fetchai-openclaw-orchestrator/orchestrator/planner.py): multi-agent-team · OpenClaw orchestrator plus planner, policy, and connector flows · `openclaw/fetchai-openclaw-orchestrator/orchestrator/planner.py`
- [Fetch Quickstart](https://github.com/fetchai/innovation-lab-examples/blob/main/fetch-hackathon-quickstarter/agents/orchestrator/orchestrator_fetchai_wrapped_agent.py): multi-agent-team · Fetch.ai starter with orchestrator, workers, and state service · `fetch-hackathon-quickstarter/agents/orchestrator/orchestrator_fetchai_wrapped_agent.py`

## Connections

- Repo CI → Setup: supports · Automation and setup shape contributor workflow
- Docs → Repo CI: guides · Docs and templates support repo governance
- Setup → Fetch Quickstart: launches · Bootstrap points users at a chosen example
- Job Agent → Nike Agent: same pattern · Both use thin entrypoints around browser/tool execution
- Router Agent → Whisperer: orchestrates · Representative multi-agent orchestration across SDK examples
- Whisperer → Sub Agents: teams · Central planner coordinating specialist workers
- Sub Agents → Trip Planner: specializes · Framework-specific agent teams and task wiring
- Trip Planner → Payment Team: routes · Crew and AG2 examples both separate planner and execution
- A2A Host → TicketLens: protocols · Agent-to-agent and MCP examples isolate transport adapters
- Duffel Agent → Expense Agent: payments · Payment-enabled agents share protocol and billing boundaries
- Duffel Agent → A2A Host: communicates · Both center on structured inter-agent contracts
- RAG Agent → News Cards: renders · User-facing artifact pipelines end in a formatter or renderer
- Frontend App → News Cards: integrates · Frontend-backed agent output becomes consumable UI content
- Security Scanner → RAG Agent: analyzes · Domain agents often pair LLM reasoning with retrieval or scanning
- Trends Agent → Frontend App: serves · Service-backed agents expose results through app boundaries
- IC Agent → Metta Agent: web3 stack · Web3 examples split app runtime from knowledge/RAG logic
- Research Team → Fetch Quickstart: shared shape · Both are orchestrator-led multi-agent systems with specialist workers
- Research Team → A2A Host: task routing · Orchestration patterns recur across agent-to-agent examples
- Whisperer → Duffel Agent: stateful flow · Examples combine orchestration with persistent session state
- Job Agent → Expense Agent: payments · Some browser workflows include payment and fulfillment steps
