What you are deploying
Rapida is a microservices platform. Self-hosting means running all services on your own infrastructure — no data leaves your environment.| Service | Port | Role |
|---|---|---|
nginx | 8080 | Reverse proxy, WebSocket upgrade, SSL/TLS termination |
web-api | 9001 | Auth, organizations, credential vault, gRPC proxy |
assistant-api | 9007 · 4573 | Voice orchestration, STT/LLM/TTS pipeline, telephony |
integration-api | 9004 | LLM, STT, TTS provider integrations |
endpoint-api | 9005 | Webhook delivery and event routing |
document-api | 9010 | Document ingestion, embeddings, RAG search |
ui | 3000 | React dashboard |
postgres | 5432 | Relational data (4 databases) |
redis | 6379 | Cache, sessions, job queue |
opensearch | 9200 | Conversation search, document indexing |
The recommended path for self-hosting is Docker Compose. All services, infrastructure, and Nginx are wired together in
docker-compose.yml. No manual network or volume configuration is needed.Prerequisites
| Requirement | Version | Notes |
|---|---|---|
| Docker Engine | 20.10+ | Install Docker |
| Docker Compose | v2.0+ | Included with Docker Desktop |
| RAM | 8 GB minimum | 16 GB recommended (OpenSearch is memory-intensive) |
| Disk | 10 GB free | For images, volumes, and uploaded assets |
| OS | macOS · Linux · Windows WSL2 |
Quickstart
Create data directories
~/rapida-data/assets/{db,redis,opensearch} with the correct ownership for Docker volume mounts.macOS users:
make setup-local uses setfacl, which is a Linux utility. If the command fails, create the directories manually:Configure environment files
Each service reads from an env file in
docker/<service>/. The defaults work for a local deployment with no external providers. You do not need any API keys to start the platform.Build all service images
Verify all services are healthy
Up or Up (healthy). If any container is in Exited state, check its logs:Open the dashboard
Navigate to http://localhost:3000 in your browser. You should see the Rapida login page.The Nginx gateway is accessible at http://localhost:8080.
Service Endpoints
| Service | URL | Health Check |
|---|---|---|
| Dashboard | http://localhost:3000 | — |
| Nginx Gateway | http://localhost:8080 | — |
| Web API | http://localhost:9001 | GET /readiness/ |
| Assistant API | http://localhost:9007 | GET /readiness/ |
| Integration API | http://localhost:9004 | GET /readiness/ |
| Endpoint API | http://localhost:9005 | GET /readiness/ |
| Document API | http://localhost:9010 | GET /readiness/ |
| OpenSearch | http://localhost:9200 | GET /_cluster/health |
Working with Individual Services
Start / stop specific services
Logs
Rebuild after code changes
Shell access
Connecting Your First Provider
The platform runs without any external provider keys. To place a voice call, you need to add at least one LLM, one STT, and one TTS provider credential through the dashboard.Open the dashboard
Navigate to http://localhost:3000 and create an account.
Create an organization and project
Every resource in Rapida is scoped to an organization and project.
Add provider credentials
Go to Settings → Integrations and add API keys for your LLM (e.g., OpenAI), STT (e.g., Deepgram), and TTS (e.g., ElevenLabs) providers.Credentials are encrypted with AES-256-GCM before storage. See Integration API for details.
Create an assistant
Go to Assistants → New Assistant and configure the system prompt, LLM, STT, TTS, and (optionally) a knowledge base.
Test the call
Use the built-in call tester in the dashboard or connect via the rapida-react SDK.
Make Command Reference
| Command | Description |
|---|---|
make setup-local | Create data directories with correct permissions |
make build-all | Build all Docker images |
make rebuild-all | Rebuild all images (no cache) |
make rebuild-<service> | Rebuild a single service (no cache) |
make up-all | Start all services |
make down-all | Stop all services |
make restart-all | Restart all services |
make deps | Start infrastructure only (postgres, redis, opensearch) |
make status | Show container status and port mappings |
make logs-all | Tail all service logs |
make logs-<service> | Tail logs for a specific service |
make shell-<service> | Open a shell inside a service container |
make shell-db | Open psql shell in the PostgreSQL container |
make clean | Remove all containers, volumes, and images |
make ps-all | List container status |
Stopping and Resetting
Next Steps
Architecture
System topology, service communication, and data flow diagrams.
Configuration Reference
Complete environment variable reference for all services.
Services Overview
Per-service documentation — components, routing, configuration.
Troubleshooting
Common issues and solutions for Docker and local setup.