Skip to content

Repository files navigation

ADKFlow

A visual flow editor for creating and managing AI agent workflows using the Google AI Development Kit (ADK). Build complex agent pipelines with an intuitive drag-and-drop interface and export them as ready-to-run Python code.

✨ Features

  • Visual Flow Editor: Drag-and-drop interface for creating agent workflows
  • Agent Types: Support for both basic LLM agents and sequential agent compositions
  • Code Generation: Export your visual flows as Python code using Google ADK
  • Tool Integration: Connect agents with various tools and capabilities
  • Real-time Preview: See your agent network in action as you build
  • Modern UI: Built with Radix UI components and Tailwind CSS
  • TypeScript: Fully typed for better development experience

🚀 Quick Start

Prerequisites

  • Node.js 18+
  • pnpm (recommended) or npm

Installation

  1. Clone the repository:
git clone https://github.com/your-username/adkflow.git
cd adkflow
  1. Install dependencies:
pnpm install
  1. Start the development server:
pnpm dev
  1. Open http://localhost:3000 in your browser.

🏗️ Tech Stack

  • Framework: Next.js 15
  • Language: TypeScript
  • Styling: Tailwind CSS
  • UI Components: Radix UI
  • Flow Editor: ReactFlow
  • Form Handling: React Hook Form + Zod
  • Icons: Lucide React
  • Package Manager: pnpm

📁 Project Structure

adkflow/
├── app/                    # Next.js app directory
│   ├── layout.tsx         # Root layout
│   ├── page.tsx           # Home page
│   └── globals.css        # Global styles
├── components/            # UI components (Atomic Design)
│   ├── atoms/            # Basic UI elements
│   ├── molecules/        # Composite components
│   ├── organisms/        # Complex components
│   ├── templates/        # Page layouts
│   └── ui/              # Shared UI components
├── lib/                  # Utility functions and configurations
├── types/               # TypeScript type definitions
├── hooks/               # Custom React hooks
├── styles/              # Additional styles
└── public/              # Static assets

🎯 Usage

Creating Your First Flow

  1. Start with an Agent: Drag a Basic Agent node onto the canvas
  2. Configure Properties: Click on the agent to edit its properties:
    • Name and description
    • Model selection (Gemini models supported)
    • Instructions and system prompts
    • Available tools
  3. Connect Agents: Create sequential workflows by connecting agents
  4. Add Tools: Enhance agents with various ADK tools
  5. Export Code: Generate production-ready Python code

Agent Types

  • Basic Agent: Individual LLM agents with specific roles and tools
  • Sequential Agent: Orchestrates multiple agents in a pipeline
  • Tool Nodes: Specialized tools that can be connected to agents

Code Export

Your visual flow automatically generates Python code using the Google ADK:

from google.adk.agents import LlmAgent, SequentialAgent
from google.adk.tools import tool1, tool2

# Generated agents based on your flow
agent_1 = LlmAgent(
    model="gemini-2.0-flash-exp",
    name="analyzer",
    instruction="Analyze the input data...",
    tools=[tool1, tool2]
)

sequential_agent = SequentialAgent(
    name="main_pipeline",
    agents=[agent_1, ...]
)

🛠️ Development

Available Scripts

  • pnpm dev - Start development server
  • pnpm build - Build for production
  • pnpm start - Start production server
  • pnpm lint - Run ESLint

Component Architecture

The project follows Atomic Design principles:

  • Atoms: Basic UI elements (buttons, inputs)
  • Molecules: Simple combinations of atoms
  • Organisms: Complex UI components
  • Templates: Page-level layouts

Adding New Agent Types

  1. Define the type in types/flow-types.ts
  2. Create a new node component in components/organisms/
  3. Register the node type in the flow editor
  4. Update the Python code generator

🤝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Use the existing component structure
  • Add proper type definitions
  • Test your changes thoroughly
  • Follow the existing code style

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

🐛 Issues & Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue with a detailed description
  3. Include steps to reproduce the problem

🔗 Links


Made with ❤️ for the AI development community

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages