Skip to main content

Prerequisites

  • Rust (stable) — rustup update stable
  • PostgreSQL running locally
  • Redis running locally
  • Neo4j running locally (only if HiRAG is enabled)
  • Whisper model files in api/ai_models/ (only if using local transcription)

Config

Copy and edit the config:
Minimum viable local config.yml:
Create the uploads directory:

Running the API

Running workers

Workers run as separate processes. Open additional terminals:
Whisper models are loaded once at worker startup. The base model (~1 GB) is sufficient for local dev. Download it with ./api/download-models.sh.

Running the web UI

Set VITE_API_BASE_URL=http://localhost:8000/api in ui/web/.env if the API is on a different port.

Running with Docker Compose

For a quick local setup (API + Redis only — workers run manually):

Database migrations

Migrations run automatically on API startup. To run them manually:

Useful debug flags

Worker management (production)

On production servers, workers are managed via manage-workers.sh deployed to /opt/kair-voice-workers/:
Workers run on bare metal (not Docker) so deployments of the web server don’t interrupt in-flight transcription jobs.