# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Repository Overview AutoGPT Platform is a monorepo containing: - **Backend** (`/backend`): Python FastAPI server with async support - **Frontend** (`/frontend`): Next.js React application - **Shared Libraries** (`/autogpt_libs`): Common Python utilities ## Essential Commands ### Backend Development ```bash # Install dependencies cd backend && poetry install # Run database migrations poetry run prisma migrate dev # Start all services (database, redis, rabbitmq) docker compose up -d # Run the backend server poetry run serve # Run tests poetry run test # Run specific test poetry run pytest path/to/test_file.py::test_function_name # Lint and format poetry run format # Black + isort poetry run lint # ruff ``` More details can be found in TESTING.md #### Creating/Updating Snapshots When you first write a test or when the expected output changes: ```bash poetry run pytest path/to/test.py --snapshot-update ``` ⚠️ **Important**: Always review snapshot changes before committing! Use `git diff` to verify the changes are expected. ### Frontend Development ```bash # Install dependencies cd frontend && npm install # Start development server npm run dev # Run E2E tests npm run test # Run Storybook for component development npm run storybook # Build production npm run build # Type checking npm run type-check ``` ## Architecture Overview ### Backend Architecture - **API Layer**: FastAPI with REST and WebSocket endpoints - **Database**: PostgreSQL with Prisma ORM, includes pgvector for embeddings - **Queue System**: RabbitMQ for async task processing - **Execution Engine**: Separate executor service processes agent workflows - **Authentication**: JWT-based with Supabase integration ### Frontend Architecture - **Framework**: Next.js App Router with React Server Components - **State Management**: React hooks + Supabase client for real-time updates - **Workflow Builder**: Visual graph editor using @xyflow/react - **UI Components**: Radix UI primitives with Tailwind CSS styling - **Feature Flags**: LaunchDarkly integration ### Key Concepts 1. **Agent Graphs**: Workflow definitions stored as JSON, executed by the backend 2. **Blocks**: Reusable components in `/backend/blocks/` that perform specific tasks 3. **Integrations**: OAuth and API connections stored per user 4. **Store**: Marketplace for sharing agent templates ### Testing Approach - Backend uses pytest with snapshot testing for API responses - Test files are colocated with source files (`*_test.py`) - Frontend uses Playwright for E2E tests - Component testing via Storybook ### Database Schema Key models (defined in `/backend/schema.prisma`): - `User`: Authentication and profile data - `AgentGraph`: Workflow definitions with version control - `AgentGraphExecution`: Execution history and results - `AgentNode`: Individual nodes in a workflow - `StoreListing`: Marketplace listings for sharing agents ### Environment Configuration - Backend: `.env` file in `/backend` - Frontend: `.env.local` file in `/frontend` - Both require Supabase credentials and API keys for various services ### Common Development Tasks **Adding a new block:** 1. Create new file in `/backend/backend/blocks/` 2. Inherit from `Block` base class 3. Define input/output schemas 4. Implement `run` method 5. Register in block registry **Modifying the API:** 1. Update route in `/backend/backend/server/routers/` 2. Add/update Pydantic models in same directory 3. Write tests alongside the route file 4. Run `poetry run test` to verify **Frontend feature development:** 1. Components go in `/frontend/src/components/` 2. Use existing UI components from `/frontend/src/components/ui/` 3. Add Storybook stories for new components 4. Test with Playwright if user-facing