7.0 KiB
Suna Self-Hosting Guide
This guide provides detailed instructions for setting up and hosting your own instance of Suna, an open-source generalist AI agent.
Table of Contents
- Overview
- Prerequisites
- Installation Steps
- Manual Configuration
- Post-Installation Steps
- Troubleshooting
Overview
Suna consists of four main components:
- Backend API - Python/FastAPI service for REST endpoints, thread management, and LLM integration
- Backend Worker - Python/Dramatiq worker service for handling agent tasks
- Frontend - Next.js/React application providing the user interface
- Agent Docker - Isolated execution environment for each agent
- Supabase Database - Handles data persistence and authentication
Prerequisites
Before starting the installation process, you'll need to set up the following:
1. Supabase Project
- Create an account at Supabase
- Create a new project
- Note down the following information (found in Project Settings → API):
- Project URL (e.g.,
https://abcdefg.supabase.co
) - API keys (anon key and service role key)
- Project URL (e.g.,
2. API Keys
Obtain the following API keys:
Required
-
LLM Provider (at least one of the following):
- Anthropic - Recommended for best performance
- OpenAI
- Groq
- OpenRouter
- AWS Bedrock
-
Search and Web Scraping:
-
Agent Execution:
- Daytona - For secure agent execution
Optional
- RapidAPI - For accessing additional API services (optional)
3. Required Software
Ensure the following tools are installed on your system:
For manual setup, you'll also need:
Installation Steps
1. Clone the Repository
git clone https://github.com/kortix-ai/suna.git
cd suna
2. Run the Setup Wizard
The setup wizard will guide you through the installation process:
python setup.py
The wizard will:
- Check if all required tools are installed
- Collect your API keys and configuration information
- Set up the Supabase database
- Configure environment files
- Install dependencies
- Start Suna using your preferred method
3. Supabase Configuration
During setup, you'll need to:
- Log in to the Supabase CLI
- Link your local project to your Supabase project
- Push database migrations
- Manually expose the 'basejump' schema in Supabase:
- Go to your Supabase project
- Navigate to Project Settings → API
- Add 'basejump' to the Exposed Schema section
4. Daytona Configuration
As part of the setup, you'll need to:
- Create a Daytona account
- Generate an API key
- Create a Docker image:
- Image name:
kortix/suna:0.1.3
- Entrypoint:
/usr/bin/supervisord -n -c /etc/supervisor/conf.d/supervisord.conf
- Image name:
Manual Configuration
If you prefer to configure your installation manually, or if you need to modify the configuration after installation, here's what you need to know:
Backend Configuration (.env)
The backend configuration is stored in backend/.env
Example configuration:
# Environment Mode
ENV_MODE=local
# DATABASE
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
# REDIS
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_SSL=false
# RABBITMQ
RABBITMQ_HOST=rabbitmq
RABBITMQ_PORT=5672
# LLM Providers
ANTHROPIC_API_KEY=your-anthropic-key
OPENAI_API_KEY=your-openai-key
MODEL_TO_USE=anthropic/claude-3-7-sonnet-latest
# WEB SEARCH
TAVILY_API_KEY=your-tavily-key
# WEB SCRAPE
FIRECRAWL_API_KEY=your-firecrawl-key
FIRECRAWL_URL=https://api.firecrawl.dev
# Sandbox container provider
DAYTONA_API_KEY=your-daytona-key
DAYTONA_SERVER_URL=https://app.daytona.io/api
DAYTONA_TARGET=us
NEXT_PUBLIC_URL=http://localhost:3000
Frontend Configuration (.env.local)
The frontend configuration is stored in frontend/.env.local
and includes:
- Supabase connection details
- Backend API URL
Example configuration:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
NEXT_PUBLIC_BACKEND_URL=http://backend:8000/api
NEXT_PUBLIC_URL=http://localhost:3000
Post-Installation Steps
After completing the installation, you'll need to:
- Create an account - Use Supabase authentication to create your first account
- Verify installations - Check that all components are running correctly
Startup Options
Suna can be started in two ways:
1. Using Docker Compose (Recommended)
This method starts all required services in Docker containers:
docker compose up -d # Use `docker compose down` to stop it later
# or
python start.py # Use the same to stop it later
2. Manual Startup
This method requires you to start each component separately:
- Start Redis and RabbitMQ (required for backend):
docker compose up redis rabbitmq -d
# or
python start.py # Use the same to stop it later
- Start the frontend (in one terminal):
cd frontend
npm run dev
- Start the backend (in another terminal):
cd backend
uv run python api.py
- Start the worker (in one more terminal):
cd backend
uv run python -m dramatiq run_agent_background
Troubleshooting
Common Issues
-
Docker services not starting
- Check Docker logs:
docker compose logs
- Ensure Docker is running correctly
- Verify port availability (3000 for frontend, 8000 for backend)
- Check Docker logs:
-
Database connection issues
- Verify Supabase configuration
- Check if 'basejump' schema is exposed in Supabase
-
LLM API key issues
- Verify API keys are correctly entered
- Check for API usage limits or restrictions
-
Daytona connection issues
- Verify Daytona API key
- Check if the container image is correctly configured
Logs
To view logs and diagnose issues:
# Docker Compose logs
docker compose logs -f
# Frontend logs (manual setup)
cd frontend
npm run dev
# Backend logs (manual setup)
cd backend
uv run python api.py
# Worker logs (manual setup)
cd backend
uv run python -m dramatiq run_agent_background
For further assistance, join the Suna Discord Community or check the GitHub repository for updates and issues.