A Next.js web application powered by Google ADK (Agent Development Kit) and CopilotKit that demonstrates how a coordinated set of AI productivity agents can assist with travel planning, scheduling, focus management, and more. The project features a modern React frontend integrated with multiple specialized Python agents running on Google's Gemini models.
- Interactive Web UI: Built with Next.js 15, React 19, and CopilotKit for seamless AI chat interactions
- Multi-Agent Architecture: Specialized agents for different productivity domains
- Graceful Fallbacks: Agents work with or without third-party API keys
- Real-time Integration: Live data from Google Maps, Amadeus flights, and more
- Developer Tools: Built-in linting, testing, and documentation agents for development workflow
├── src/ # Next.js frontend application
│ ├── app/ # Next.js app router pages
│ │ ├── api/ # API routes (CopilotKit integration)
│ │ ├── page.tsx # Main chat interface
│ │ └── layout.tsx # Root layout
│ └── ...
├── agent/ # Python agent backend
│ ├── agent.py # Main agent orchestrator
│ ├── requirements.txt # Python dependencies
│ └── root_agent/ # Root agent implementation
│ ├── dev_agent/ # Development workflow agents
│ │ ├── doc_agent/ # Documentation generator
│ │ ├── linter_agent/# Code quality checker
│ │ └── testing_agent/# Test automation
│ └── sub_agents/ # Domain-specific agents
│ ├── calendar_agent/ # Calendar & scheduling
│ ├── commute_agent/ # Travel time estimates
│ ├── critic_agent/ # Quality assurance
│ ├── email_agent/ # Email drafting
│ ├── flight_agent/ # Flight search (Amadeus)
│ ├── focus_agent/ # Deep work management
│ ├── knowledge_agent/ # Q&A and context
│ ├── memory_agent/ # Long-term memory
│ ├── notification_agent/# Alert management
│ ├── planner_agent/ # Itinerary planning
│ └── wellness_agent/ # Health reminders
├── scripts/ # Setup and run scripts
├── package.json # Node.js dependencies
└── README.md
Frontend:
- Next.js 15 with Turbopack
- React 19
- CopilotKit (AI chat integration)
- TypeScript
- Tailwind CSS 4
Backend:
- Python 3.10+
- Google ADK (Agent Development Kit)
- Google Gemini AI models
- Optional: Google Maps API, Amadeus API
- Python 3.10 or newer
- Google ADK CLI (
pip install google-adk) - Optional SDKs per agent:
python-dotenvfor automatic.envloading (otherwise we parse manually)googlemapsforcommute_agentamadeusforflight_agent
Install missing packages inside your virtualenv, for example:
pip install python-dotenv googlemaps amadeusCreate .env at the repository root (already checked in for convenience) and populate the keys you have access to:
GOOGLE_API_KEY=... # Required for Gemini 2.5 Flash
MAPS_PLACE_API_KEY=... # Needed for live commute estimates (optional)
AMADEUS_API_KEY=...
AMADEUS_API_SECRET=...
All agent modules call _ensure_env_loaded() during import, so running the ADK CLI/W UI inherits these variables automatically. If you prefer exporting variables manually, source .env before launching the agents.
cd /Users/<you>/Dev/knight-hacks-25
source .venv/bin/activate # optional but recommended
source .env # if you want to push vars into your shell
adk web planner_agent # replace with any other agent folder nameRepeat the last command with calendar_agent, flight_agent, etc. The ADK UI will display the agent description, and every prompt you send is routed through that agent’s run_ops tool. For example:
commute_agent: ask “from New York to Boston” to trigger a Distance Matrix call or fallback guidance.flight_agent: ask “Flight from MCO to DXB on 2025-12-01” to try the Amadeus API.
If the required SDK or API key is missing, the agent returns an informative fallback message instead of failing.
main.py shows the earlier orchestrated productivity simulation that wires multiple domain agents together. It depends on an ops package that lives outside this repository snapshot, so treat it as illustrative unless you restore those modules.
- Import "amadeus" could not be resolved: install
amadeusinside the same virtualenv you use for the ADK CLI. - Google Maps quota or auth errors: confirm
MAPS_PLACE_API_KEY(orGOOGLE_MAPS_API_KEY) is present in.envand valid for Distance Matrix. - Agent not shown in ADK web: ensure the folder’s
__init__.pyre-exportsroot_agent(already configured) and that you invokeadk web <folder>from the repo root.
- Add additional tools to each agent, e.g., calendar CRUD, email send, or focus analytics.
- Wire the agents back into a shared orchestrator once their standalone behaviors are proven.
- Capture integration secrets with a proper secrets manager instead of a plain
.envfile when moving toward production.