Quick Start
The fastest way to run Airweave is using the includedstart.sh script:
Prerequisites:
- Docker 20.10+ and Docker Compose (or
docker composeplugin) - 4GB+ RAM available
- Ports 5432, 6379, 7233, 8001, 8080, 8081, 8088 available
- Create
.envfrom.env.exampleif needed - Generate encryption keys automatically
- Start all required services with health checks
- Optionally prompt for API keys (OpenAI, Mistral)
What the Script Does
Thestart.sh script orchestrates a complete deployment:
Environment Setup
- Creates
.envfrom template if missing - Generates
ENCRYPTION_KEY(32-byte base64) - Generates
STATE_SECRETfor OAuth flows - Sets
SKIP_AZURE_STORAGE=truefor local filesystem storage
Embedding Configuration
Auto-detects embedding provider based on available API keys:Priority order:
- OpenAI (1536 dimensions) - if
OPENAI_API_KEYis set - Mistral (1024 dimensions) - if
MISTRAL_API_KEYis set - Local embeddings (384 dimensions) - uses ~2GB RAM
DENSE_EMBEDDER- embedding modelEMBEDDING_DIMENSIONS- vector dimensionsSPARSE_EMBEDDER=fastembed_bm25- keyword search
Service Startup
Starts services using Docker Compose profiles:Services start in dependency order (PostgreSQL → Redis → Temporal → Backend → Frontend)
Health Checks
Waits for critical services to be ready:
- Vespa: Document API responding (up to 5 minutes)
- Backend:
/health/readyendpoint (up to 5 minutes) - Frontend: HTTP 200 response
Script Options
Interactive Mode (Default)
Non-Interactive Mode
Skip Frontend
- API-only integrations
- Headless deployments
- Resource-constrained environments
Skip Local Embeddings
OPENAI_API_KEYfor OpenAI embeddingsMISTRAL_API_KEYfor Mistral embeddings
Restart Services
- Database data
- Vespa indices
- Redis cache
- Environment configuration
Recreate Containers
Destroy Everything
--noninteractive is set.
Debug Mode
set -x).
Combined Options
Docker Compose Architecture
Thedocker/docker-compose.yml file defines all services:
Service Profiles
Services are organized using profiles for selective startup:| Profile | Services | When to Use |
|---|---|---|
| (default) | postgres, redis, backend, temporal, svix | Always included |
vespa | vespa, vespa-init | Vector search (required) |
frontend | frontend | Web UI (optional) |
local-embeddings | text2vec-transformers | Local embedding generation |
Networking
All services run on the default Docker bridge network:- Services communicate using container names (e.g.,
postgres,redis) - Host services accessible via
host.docker.internal(enabled for backend and svix) - External ports exposed for direct access from host
Volume Mounts
Environment Variables
Services load configuration from:- Root
.envfile (viaenv_file: ../.env) - Inline overrides for container networking
Manual Docker Compose Usage
Start All Services
View Logs
Check Service Status
Stop Services
Restart Single Service
Access Service Shells
Health Checks
All services include health checks for reliable startup:PostgreSQL
PostgreSQL
Backend API
Backend API
Vespa
Vespa
vespa-init container deploys the application schema after Vespa is healthy.Troubleshooting
Port already in use
Port already in use
Error:
Bind for 0.0.0.0:8080 failed: port is already allocatedSolution:- Check what’s using the port:
- Stop the conflicting service or change Airweave’s port:
- Restart:
./start.sh --restart
Vespa init failed
Vespa init failed
Symptoms: Common causes:
vespa-init container exits with non-zero codeDebug:- Embedding dimensions mismatch (check
.envforEMBEDDING_DIMENSIONS) - Vespa not fully initialized (wait 30s and try
./start.sh --restart) - Disk space full
Backend not starting
Backend not starting
Check logs:Common issues:
- Missing environment variables (check
.env) - Database migration failures
- Port conflicts
Out of memory
Out of memory
Symptoms: Services crashing, slow performanceCheck Docker resources:Solutions:
- Skip local embeddings:
./start.sh --skip-local-embeddings - Increase Docker Desktop memory limit (Settings → Resources)
- Use cloud embeddings (OpenAI/Mistral)
Temporal workflows failing
Temporal workflows failing
Production Considerations
Security
Backups
Monitoring
Next Steps
Configure Environment
Explore all environment variables and configuration options
Add Connectors
Connect to your data sources
Use the API
Start building with the REST API
Upgrade to Kubernetes
Scale to production with Kubernetes