AutoGPT - Autonomous AI Agent Platform
Comprehensive platform for building, deploying, and managing continuous AI agents through a visual interface or development toolkit.
When to use AutoGPT
Use AutoGPT when:
Building autonomous agents that run continuously Creating visual workflow-based AI agents Deploying agents with external triggers (webhooks, schedules) Building complex multi-step automation pipelines Need a no-code/low-code agent builder
Key features:
Visual Agent Builder: Drag-and-drop node-based workflow editor Continuous Execution: Agents run persistently with triggers Marketplace: Pre-built agents and blocks to share/reuse Block System: Modular components for LLM, tools, integrations Forge Toolkit: Developer tools for custom agent creation Benchmark System: Standardized agent performance testing
Use alternatives instead:
LangChain/LlamaIndex: If you need more control over agent logic CrewAI: For role-based multi-agent collaboration OpenAI Assistants: For simple hosted agent deployments Semantic Kernel: For Microsoft ecosystem integration Quick start Installation (Docker)
Clone repository
git clone https://github.com/Significant-Gravitas/AutoGPT.git cd AutoGPT/autogpt_platform
Copy environment file
cp .env.example .env
Start backend services
docker compose up -d --build
Start frontend (in separate terminal)
cd frontend cp .env.example .env npm install npm run dev
Access the platform Frontend UI: http://localhost:3000 Backend API: http://localhost:8006/api WebSocket: ws://localhost:8001/ws Architecture overview
AutoGPT has two main systems:
AutoGPT Platform (Production) Visual agent builder with React frontend FastAPI backend with execution engine PostgreSQL + Redis + RabbitMQ infrastructure AutoGPT Classic (Development) Forge: Agent development toolkit Benchmark: Performance testing framework CLI: Command-line interface for development Core concepts Graphs and nodes
Agents are represented as graphs containing nodes connected by links:
Graph (Agent) ├── Node (Input) │ └── Block (AgentInputBlock) ├── Node (Process) │ └── Block (LLMBlock) ├── Node (Decision) │ └── Block (SmartDecisionMaker) └── Node (Output) └── Block (AgentOutputBlock)
Blocks
Blocks are reusable functional components:
Block Type Purpose INPUT Agent entry points OUTPUT Agent outputs AI LLM calls, text generation WEBHOOK External triggers STANDARD General operations AGENT Nested agent execution Execution flow User/Trigger → Graph Execution → Node Execution → Block.execute() ↓ ↓ ↓ Inputs Queue System Output Yields
Building agents Using the visual builder Open Agent Builder at http://localhost:3000 Add blocks from the BlocksControl panel Connect nodes by dragging between handles Configure inputs in each node Run agent using PrimaryActionBar Available blocks
AI Blocks:
AITextGeneratorBlock - Generate text with LLMs AIConversationBlock - Multi-turn conversations SmartDecisionMakerBlock - Conditional logic
Integration Blocks:
GitHub, Google, Discord, Notion connectors Webhook triggers and handlers HTTP request blocks
Control Blocks:
Input/Output blocks Branching and decision nodes Loop and iteration blocks Agent execution Trigger types
Manual execution:
POST /api/v1/graphs/{graph_id}/execute Content-Type: application/json
{ "inputs": { "input_name": "value" } }
Webhook trigger:
POST /api/v1/webhooks/{webhook_id} Content-Type: application/json
{ "data": "webhook payload" }
Scheduled execution:
{ "schedule": "0 /2 * * ", "graph_id": "graph-uuid", "inputs": {} }
Monitoring execution
WebSocket updates:
const ws = new WebSocket('ws://localhost:8001/ws');
ws.onmessage = (event) => {
const update = JSON.parse(event.data);
console.log(Node ${update.node_id}: ${update.status});
};
REST API polling:
GET /api/v1/executions/{execution_id}
Using Forge (Development) Create custom agent
Setup forge environment
cd classic ./run setup
Create new agent from template
./run forge create my-agent
Start agent server
./run forge start my-agent
Agent structure my-agent/ ├── agent.py # Main agent logic ├── abilities/ # Custom abilities │ ├── init.py │ └── custom.py ├── prompts/ # Prompt templates └── config.yaml # Agent configuration
Implement custom ability from forge import Ability, ability
@ability( name="custom_search", description="Search for information", parameters={ "query": {"type": "string", "description": "Search query"} } ) def custom_search(query: str) -> str: """Custom search ability.""" # Implement search logic result = perform_search(query) return result
Benchmarking agents Run benchmarks
Run all benchmarks
./run benchmark
Run specific category
./run benchmark --category coding
Run with specific agent
./run benchmark --agent my-agent
Benchmark categories Coding: Code generation and debugging Retrieval: Information finding Web: Web browsing and interaction Writing: Text generation tasks VCR cassettes
Benchmarks use recorded HTTP responses for reproducibility:
Record new cassettes
./run benchmark --record
Run with existing cassettes
./run benchmark --playback
Integrations Adding credentials Navigate to Profile > Integrations Select provider (OpenAI, GitHub, Google, etc.) Enter API keys or authorize OAuth Credentials are encrypted and stored securely Using credentials in blocks
Blocks automatically access user credentials:
class MyLLMBlock(Block): def execute(self, inputs): # Credentials are injected by the system credentials = self.get_credentials("openai") client = OpenAI(api_key=credentials.api_key) # ...
Supported providers Provider Auth Type Use Cases OpenAI API Key LLM, embeddings Anthropic API Key Claude models GitHub OAuth Code, repos Google OAuth Drive, Gmail, Calendar Discord Bot Token Messaging Notion OAuth Documents Deployment Docker production setup
docker-compose.prod.yml
services: rest_server: image: autogpt/platform-backend environment: - DATABASE_URL=postgresql://... - REDIS_URL=redis://redis:6379 ports: - "8006:8006"
executor: image: autogpt/platform-backend command: poetry run executor
frontend: image: autogpt/platform-frontend ports: - "3000:3000"
Environment variables Variable Purpose DATABASE_URL PostgreSQL connection REDIS_URL Redis connection RABBITMQ_URL RabbitMQ connection ENCRYPTION_KEY Credential encryption SUPABASE_URL Authentication Generate encryption key cd autogpt_platform/backend poetry run cli gen-encrypt-key
Best practices Start simple: Begin with 3-5 node agents Test incrementally: Run and test after each change Use webhooks: External triggers for event-driven agents Monitor costs: Track LLM API usage via credits system Version agents: Save working versions before changes Benchmark: Use agbenchmark to validate agent quality Common issues
Services not starting:
Check container status
docker compose ps
View logs
docker compose logs rest_server
Restart services
docker compose restart
Database connection issues:
Run migrations
cd backend poetry run prisma migrate deploy
Agent execution stuck:
Check RabbitMQ queue
Visit http://localhost:15672 (guest/guest)
Clear stuck executions
docker compose restart executor
References Advanced Usage - Custom blocks, deployment, scaling Troubleshooting - Common issues, debugging Resources Documentation: https://docs.agpt.co Repository: https://github.com/Significant-Gravitas/AutoGPT Discord: https://discord.gg/autogpt License: MIT (Classic) / Polyform Shield (Platform)