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)