{"id":31884324,"url":"https://github.com/copilotkit/a2a-travel","last_synced_at":"2025-10-13T03:57:56.297Z","repository":{"id":318693810,"uuid":"1069249806","full_name":"CopilotKit/a2a-travel","owner":"CopilotKit","description":null,"archived":false,"fork":false,"pushed_at":"2025-10-08T16:44:51.000Z","size":1412,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-08T18:35:50.763Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://a2a-travel.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CopilotKit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-03T16:22:25.000Z","updated_at":"2025-10-08T16:44:54.000Z","dependencies_parsed_at":"2025-10-08T18:36:11.404Z","dependency_job_id":null,"html_url":"https://github.com/CopilotKit/a2a-travel","commit_stats":null,"previous_names":["copilotkit/a2a-travel"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/CopilotKit/a2a-travel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CopilotKit%2Fa2a-travel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CopilotKit%2Fa2a-travel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CopilotKit%2Fa2a-travel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CopilotKit%2Fa2a-travel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CopilotKit","download_url":"https://codeload.github.com/CopilotKit/a2a-travel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CopilotKit%2Fa2a-travel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279013508,"owners_count":26085369,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-13T03:57:54.490Z","updated_at":"2025-10-13T03:57:56.289Z","avatar_url":"https://github.com/CopilotKit.png","language":"TypeScript","readme":"# AG-UI + A2A Multi-Agent Communication Demo\n\n\u003cimg width=\"1600\" height=\"1040\" alt=\"How to Make Agents Talk to Each Other (and Your App) Using A2A + AG-UI (6)\" src=\"https://github.com/user-attachments/assets/1bb698a1-d187-4666-b2c1-b558323de2c4\" /\u003e\n\nA demonstration of Agent-to-Agent (A2A) communication between different AI agent frameworks using the AG-UI Protocol and A2A Middleware.\n\n\n## Quick Start\n\n### Prerequisites\n\n- Node.js 18+\n- Python 3.10+\n- [Google API Key](https://aistudio.google.com/app/apikey)\n- [OpenAI API Key](https://platform.openai.com/api-keys)\n\n### Setup\n\n1. Install frontend dependencies:\n\n```bash\nnpm install\n```\n\n2. Install Python dependencies:\n\n```bash\ncd agents\npython -m venv .venv\nsource .venv/bin/activate  # On Windows: .venv\\Scripts\\activate\npip install -r requirements.txt\n```\n\n3. Configure environment variables:\n\n```bash\ncp .env.example .env\n# Edit .env and add your GOOGLE_API_KEY and OPENAI_API_KEY\n```\n\n4. Start all services:\n\n```bash\nnpm run dev\n```\n\nThis starts:\n\n- UI on `http://localhost:3000`\n- Orchestrator on `http://localhost:9000`\n- Itinerary Agent on `http://localhost:9001`\n- Budget Agent on `http://localhost:9002`\n- Restaurant Agent on `http://localhost:9003`\n- Weather Agent on `http://localhost:9005`\n\n## Usage\n\nTry asking: \"Plan a 3-day trip to Tokyo\" or \"I want to visit New York for 5 days\"\n\nThe orchestrator will coordinate the agents to:\n\n1. Collect trip requirements (destination, days, people, budget level)\n2. Generate an itinerary\n3. Provide weather forecast\n4. Recommend restaurants for each day\n5. Estimate budget and request approval\n\nAgent interactions are visible in the UI with message flow visualization.\n\n## What This Demonstrates\n\nThis demo shows how specialized agents built with different frameworks can communicate via the A2A protocol:\n\n### LangGraph Agents (Python + OpenAI)\n\n- **Itinerary Agent** (Port 9001) - Creates day-by-day travel itineraries\n- **Restaurant Agent** (Port 9003) - Recommends meal plans\n\n### ADK Agents (Python + Gemini)\n\n- **Budget Agent** (Port 9002) - Estimates travel costs\n- **Weather Agent** (Port 9005) - Provides weather forecasts\n\n### Orchestrator\n\n- **Orchestrator Agent** (Port 9000) - Coordinates all agents via A2A middleware\n\nThe demo includes multi-framework integration, structured JSON outputs, generative UI components, human-in-the-loop workflows, and real-time message visualization\n\n## Architecture\n\n```\n┌──────────────────────────────────────────┐\n│ Next.js UI (CopilotKit)                  │\n└────────────┬─────────────────────────────┘\n             │ AG-UI Protocol\n┌────────────┴─────────────────────────────┐\n│ A2A Middleware                            │\n│ - Routes messages between agents          │\n└──────┬───────────────────────────────────┘\n       │ A2A Protocol\n       │\n       ├─────► LangGraph Agents (OpenAI)\n       │       ├── Itinerary (9001)\n       │       └── Restaurant (9003)\n       │\n       └─────► ADK Agents (Gemini)\n               ├── Budget (9002)\n               └── Weather (9005)\n       ▲\n       │\n┌──────┴──────────┐\n│ Orchestrator    │\n│ (Port 9000)     │\n└─────────────────┘\n```\n\n## Project Structure\n\n```\nag-ui-a2a-demo/\n├── app/\n│   ├── api/copilotkit/route.ts       # A2A middleware setup\n│   └── page.tsx                      # Main UI\n│\n├── components/\n│   ├── a2a/                          # A2A message components\n│   ├── travel-chat.tsx               # Chat orchestration\n│   └── [other UI components]\n│\n├── agents/                           # Python agents\n│   ├── orchestrator.py               # Orchestrator (9000)\n│   ├── itinerary_agent.py            # LangGraph (9001)\n│   ├── budget_agent.py               # ADK (9002)\n│   ├── restaurant_agent.py           # LangGraph (9003)\n│   └── weather_agent.py              # ADK (9005)\n│\n└── .env.example\n```\n\n## Technologies\n\n- **Frontend**: Next.js, CopilotKit, AG-UI Client, Tailwind CSS\n- **Backend**: Google ADK (Gemini), LangGraph (OpenAI), FastAPI\n- **Protocols**: A2A (agent-to-agent), AG-UI (agent-UI)\n- **Middleware**: @ag-ui/a2a-middleware\n\n## Troubleshooting\n\n**Agents not connecting?**\nVerify all services are running by checking `http://localhost:9000-9005`\n\n**Missing API keys?**\nEnsure `.env` contains `GOOGLE_API_KEY` and `OPENAI_API_KEY`\n\n**Python issues?**\nActivate the virtual environment: `cd agents \u0026\u0026 source .venv/bin/activate`\n\n## Learn More\n\n- [AG-UI Protocol](https://docs.ag-ui.com)\n- [A2A Protocol](https://github.com/agent-matrix/a2a)\n- [Google ADK](https://google.github.io/adk-docs/)\n- [LangGraph](https://langchain-ai.github.io/langgraph/)\n- [CopilotKit](https://docs.copilotkit.ai)\n\n## License\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcopilotkit%2Fa2a-travel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcopilotkit%2Fa2a-travel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcopilotkit%2Fa2a-travel/lists"}