Skip to main content

Overview

Attendee is designed for convenient self-hosting. It runs as a Django application in a single Docker image, with only two external service dependencies:
  • PostgreSQL - Database for application data
  • Redis - Message broker for background tasks
By self-hosting Attendee, you can reduce costs by 10x compared to closed-source vendors.

System Requirements

Hardware Requirements

  • CPU: 2+ cores recommended
  • Memory: 4GB RAM minimum, 8GB+ recommended
  • Storage: 20GB+ for Docker images and data
  • Platform: Linux (Ubuntu 22.04 recommended)

Software Prerequisites

1

Install Docker

Docker is required to run Attendee. Install Docker Engine following the official installation guide.Verify your installation:
docker --version
2

Install Docker Compose

Docker Compose is used to orchestrate the multi-container setup.
docker compose version
Modern Docker installations include Compose V2 by default.
3

Clone the Repository

Clone the Attendee repository to your server:
git clone https://github.com/Attendee-AI/Attendee.git
cd Attendee

Required Services

PostgreSQL

Attendee requires PostgreSQL 15.3 or higher. You can use:
  • The included PostgreSQL container (recommended for development)
  • An external PostgreSQL instance
  • A managed PostgreSQL service (AWS RDS, Google Cloud SQL, etc.)

Redis

Redis 7+ is used as a message broker for Celery workers. You can use:
  • The included Redis container (recommended for development)
  • An external Redis instance
  • A managed Redis service

External Service Accounts

Before running Attendee, you’ll need to set up accounts with the following services:
1

AWS Account (Required)

AWS S3 is used for storing meeting recordings and media files.
  1. Create an AWS account
  2. Set up an S3 bucket for media storage
  3. Create IAM credentials with S3 access
  4. Note your AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
2

Zoom OAuth Credentials (Required for Zoom)

Required to join Zoom meetings with your bot.
  1. Navigate to Zoom Marketplace
  2. Register or log into your developer account
  3. Click “Develop” → “Build App” → Choose “General App”
  4. Copy the Client ID and Client Secret from ‘App Credentials’
  5. Go to the Embed tab → Enable Meeting SDK toggle
For detailed instructions, see Zoom’s official guide.
3

Deepgram API Key (Required for Transcription)

Deepgram provides speech-to-text transcription for meetings.
  1. Sign up at Deepgram Console
  2. No credit card required - includes 400 hours of free transcription
  3. Create an API key from the dashboard
Alternative transcription providers may be supported in future versions.

Running in Development Mode

For local development and testing, follow these steps:
1

Build the Docker Image

Build the Attendee Docker image (takes approximately 5 minutes):
docker compose -f dev.docker-compose.yaml build
2

Generate Environment Variables

Create a .env file with default configuration:
docker compose -f dev.docker-compose.yaml run --rm attendee-app-local python init_env.py > .env
3

Configure AWS Credentials

Edit the generated .env file and add your AWS credentials:
# Edit .env file
nano .env
Add your AWS information:
AWS_ACCESS_KEY_ID=your_access_key_here
AWS_SECRET_ACCESS_KEY=your_secret_key_here
AWS_STORAGE_BUCKET_NAME=your_bucket_name
AWS_S3_REGION_NAME=us-east-1
4

Start All Services

Launch Attendee and all supporting services:
docker compose -f dev.docker-compose.yaml up
This starts:
  • attendee-app-local - Django web server (port 8000)
  • attendee-worker-local - Celery worker for background tasks
  • attendee-scheduler-local - Task scheduler
  • postgres - PostgreSQL database
  • redis - Redis message broker
5

Run Database Migrations

In a new terminal, run Django migrations:
docker compose -f dev.docker-compose.yaml exec attendee-app-local python manage.py migrate
6

Create Your Account

  1. Open your browser to http://localhost:8000
  2. Click “Sign Up” and create an account
  3. Look for the confirmation link in the server logs:
http://localhost:8000/accounts/confirm-email/<key>/
  1. Paste the confirmation link into your browser
  2. Log in with your credentials
7

Configure API Credentials

  1. Navigate to Settings in the sidebar
  2. Enter your Zoom OAuth credentials
  3. Enter your Deepgram API key
  4. Navigate to API Keys in the sidebar
  5. Generate your Attendee API key
In development mode, direct all API calls to http://localhost:8000 instead of https://app.attendee.dev.

Webpage Streamer (Optional)

For advanced use cases involving streaming arbitrary web content into meetings:
docker compose -f dev.docker-compose.yaml --profile webpage-streamer up
This starts the webpage streamer service on port 8001.
The webpage streamer requires additional Chrome security configuration and may require elevated privileges.

Next Steps

Configuration

Learn about environment variables and advanced configuration options

Deployment

Deploy Attendee to production with Docker or Kubernetes

Build docs developers (and LLMs) love