2025-05-13 23:40:25 +08:00
# 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 ](#overview )
- [Prerequisites ](#prerequisites )
- [Installation Steps ](#installation-steps )
- [Manual Configuration ](#manual-configuration )
- [Post-Installation Steps ](#post-installation-steps )
- [Troubleshooting ](#troubleshooting )
## Overview
Suna consists of four main components:
1. **Backend API** - Python/FastAPI service for REST endpoints, thread management, and LLM integration
2025-05-18 05:11:37 +08:00
2. **Backend Worker** - Python/Dramatiq worker service for handling agent tasks
3. **Frontend** - Next.js/React application providing the user interface
4. **Agent Docker** - Isolated execution environment for each agent
5. **Supabase Database** - Handles data persistence and authentication
2025-05-13 23:40:25 +08:00
## Prerequisites
Before starting the installation process, you'll need to set up the following:
### 1. Supabase Project
1. Create an account at [Supabase ](https://supabase.com/ )
2. Create a new project
3. 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)
### 2. API Keys
Obtain the following API keys:
#### Required
- **LLM Provider** (at least one of the following):
2025-05-18 05:11:37 +08:00
2025-05-13 23:40:25 +08:00
- [Anthropic ](https://console.anthropic.com/ ) - Recommended for best performance
- [OpenAI ](https://platform.openai.com/ )
- [Groq ](https://console.groq.com/ )
- [OpenRouter ](https://openrouter.ai/ )
- [AWS Bedrock ](https://aws.amazon.com/bedrock/ )
- **Search and Web Scraping**:
2025-05-18 05:11:37 +08:00
2025-05-13 23:40:25 +08:00
- [Tavily ](https://tavily.com/ ) - For enhanced search capabilities
- [Firecrawl ](https://firecrawl.dev/ ) - For web scraping capabilities
- **Agent Execution**:
- [Daytona ](https://app.daytona.io/ ) - For secure agent execution
#### Optional
- **RapidAPI** - For accessing additional API services (optional)
### 3. Required Software
Ensure the following tools are installed on your system:
2025-05-18 05:11:37 +08:00
- **[Git](https://git-scm.com/downloads)**
- **[Docker](https://docs.docker.com/get-docker/)**
- **[Python 3.11](https://www.python.org/downloads/)**
- **[Poetry](https://python-poetry.org/docs/#installation)**
- **[Node.js & npm](https://nodejs.org/en/download/)**
- **[Supabase CLI](https://supabase.com/docs/guides/local-development/cli/getting-started)**
2025-05-13 23:40:25 +08:00
## Installation Steps
### 1. Clone the Repository
```bash
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:
```bash
python setup.py
```
The wizard will:
2025-05-18 05:11:37 +08:00
2025-05-13 23:40:25 +08:00
- 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:
1. Log in to the Supabase CLI
2. Link your local project to your Supabase project
3. Push database migrations
4. 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:
1. Create a Daytona account
2. Generate an API key
3. Create a Docker image:
2025-06-02 18:42:33 +08:00
- Image name: `kortix/suna:0.1.3`
2025-05-13 23:40:25 +08:00
- Entrypoint: `/usr/bin/supervisord -n -c /etc/supervisor/conf.d/supervisord.conf`
## 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)
2025-05-18 05:11:37 +08:00
The backend configuration is stored in `backend/.env`
Example configuration:
```sh
2025-05-13 23:40:25 +08:00
# 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
2025-05-18 05:11:37 +08:00
# RABBITMQ
RABBITMQ_HOST=rabbitmq
RABBITMQ_PORT=5672
2025-05-13 23:40:25 +08:00
# 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:
2025-05-18 05:11:37 +08:00
```sh
2025-05-13 23:40:25 +08:00
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:
1. **Create an account** - Use Supabase authentication to create your first account
2. **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:
```bash
2025-05-18 07:40:47 +08:00
docker compose up -d # Use `docker compose down` to stop it later
# or
python start.py # Use the same to stop it later
2025-05-13 23:40:25 +08:00
```
### 2. Manual Startup
This method requires you to start each component separately:
2025-05-18 05:11:37 +08:00
1. Start Redis and RabbitMQ (required for backend):
2025-05-13 23:40:25 +08:00
```bash
2025-05-18 05:11:37 +08:00
docker compose up redis rabbitmq -d
2025-05-13 23:40:25 +08:00
```
2. Start the frontend (in one terminal):
2025-05-18 05:11:37 +08:00
2025-05-13 23:40:25 +08:00
```bash
cd frontend
npm run dev
```
3. Start the backend (in another terminal):
2025-05-18 05:11:37 +08:00
2025-05-13 23:40:25 +08:00
```bash
cd backend
poetry run python3.11 api.py
```
2025-05-18 05:11:37 +08:00
4. Start the worker (in one more terminal):
```bash
cd backend
poetry run python3.11 -m dramatiq run_agent_background
```
2025-05-13 23:40:25 +08:00
## Troubleshooting
### Common Issues
1. **Docker services not starting**
2025-05-18 05:11:37 +08:00
2025-05-13 23:40:25 +08:00
- Check Docker logs: `docker compose logs`
- Ensure Docker is running correctly
- Verify port availability (3000 for frontend, 8000 for backend)
2. **Database connection issues**
2025-05-18 05:11:37 +08:00
2025-05-13 23:40:25 +08:00
- Verify Supabase configuration
- Check if 'basejump' schema is exposed in Supabase
3. **LLM API key issues**
2025-05-18 05:11:37 +08:00
2025-05-13 23:40:25 +08:00
- Verify API keys are correctly entered
- Check for API usage limits or restrictions
4. **Daytona connection issues**
- Verify Daytona API key
- Check if the container image is correctly configured
### Logs
To view logs and diagnose issues:
```bash
# Docker Compose logs
docker compose logs -f
# Frontend logs (manual setup)
cd frontend
npm run dev
# Backend logs (manual setup)
cd backend
poetry run python3.11 api.py
2025-05-18 05:11:37 +08:00
# Worker logs (manual setup)
cd backend
poetry run python3.11 -m dramatiq run_agent_background
2025-05-13 23:40:25 +08:00
```
---
2025-05-18 05:11:37 +08:00
For further assistance, join the [Suna Discord Community ](https://discord.gg/Py6pCBUUPw ) or check the [GitHub repository ](https://github.com/kortix-ai/suna ) for updates and issues.