Skip to main content
This guide will help you deploy Omni on your local machine using Docker Compose.

Prerequisites

Before you begin, ensure you have:
  • Docker 24.0+ with Docker Compose v2 installed
  • Operating System: Linux (Ubuntu 22.04+), macOS, or Windows with WSL2
  • Hardware: Minimum 8GB RAM, 20GB disk space
  • API Keys:
    • Anthropic API key (for AI features) OR self-hosted LLM setup
For production deployments, see our comprehensive Deployment Guide.

Step 1: Clone the Repository

git clone https://github.com/getomnico/omni.git
cd omni

Step 2: Create Environment Configuration

Copy the example environment file:
cp .env.example .env
Edit .env and configure the following minimum required variables:
# Database Configuration
DATABASE_PASSWORD=your-secure-password-here

# Application Security
SESSION_SECRET=generate-a-32-character-secret-key
ENCRYPTION_KEY=generate-a-32-character-encryption-key
ENCRYPTION_SALT=generate-16-char-salt

# Application URL
APP_URL=http://localhost:3000

# LLM Provider (Anthropic for quickstart)
LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-your-api-key-here
You can generate secure random strings using:
# For 32-character keys
openssl rand -hex 16

# For 16-character salt
openssl rand -hex 8

Step 3: Start Omni Services

Launch all services using Docker Compose:
docker compose -f docker/docker-compose.yml --env-file .env up -d
The first startup will take a few minutes as Docker pulls images and initializes the database.

Step 4: Verify Installation

Check that all services are running:
docker ps
You should see all services in “running” state:
  • omni-web
  • omni-searcher
  • omni-indexer
  • omni-ai
  • postgres
  • redis
  • caddy

Step 5: Access Omni

Open your browser and navigate to:
http://localhost:3000
You should see the Omni login page. Create your first admin account:
  1. Click “Create Account”
  2. Enter your email and password
  3. The first user is automatically granted admin privileges
Congratulations! Omni is now running on your local machine.

Step 6: Connect Your First Data Source

Now let’s connect a data source so you have something to search.

Quick Connector Setup Example

Here’s how to connect a website using the Web connector:
  1. Navigate to SettingsIntegrations
  2. Under Available Integrations, find the Web connector and click Connect
  3. Enter the root URL of the website you want to index (e.g., https://docs.example.com)
  4. Click Connect and wait for initial sync
Start with a low Max Pages value (e.g., 100) to test the crawler before doing a full crawl.

What’s Next?

Now that Omni is running, explore these features:

Common Issues

Check Docker logs for errors:
docker compose -f docker/docker-compose.yml \
  -f docker/docker-compose.dev.yml logs
Common causes:
  • Port 3000 already in use
  • Insufficient memory (needs 8GB+ RAM)
  • Missing environment variables
Verify the web service is running:
docker compose -f docker/docker-compose.yml \
  -f docker/docker-compose.dev.yml ps omni-web
Check if port 3000 is accessible:
curl http://localhost:3000
Ensure PostgreSQL is fully started:
docker compose -f docker/docker-compose.yml \
  -f docker/docker-compose.dev.yml logs postgres
Wait for the message: “database system is ready to accept connections”
Check your LLM provider configuration:
  • Verify ANTHROPIC_API_KEY is set correctly
  • Check API key has sufficient credits
  • Review AI service logs:
docker compose -f docker/docker-compose.yml \
  -f docker/docker-compose.dev.yml logs omni-ai

Stopping Omni

To stop all services:
docker compose -f docker/docker-compose.yml \
  -f docker/docker-compose.dev.yml down
To stop and remove all data (including the database):
docker compose -f docker/docker-compose.yml \
  -f docker/docker-compose.dev.yml down -v
The -v flag will permanently delete all indexed data and settings.

Configuration Tips

For better performance in development:
  1. Increase Docker Resources: Allocate at least 8GB RAM to Docker
  2. Use SSD Storage: Database performance improves significantly with SSDs
  3. Configure Log Levels: Set LOG_LEVEL=info in .env for less verbose logs

Next Steps

Architecture Overview

Learn how Omni works under the hood