Run the full stack yourself with Docker Compose.
AudioLens is distributed as open source and is meant to be self-hosted with Docker Compose. There's no hosted control plane to sign up for — you run the API, the workers, Redis, and the frontend yourself, on your own hardware.
git clone https://github.com/ECHO-Lit/ECHO-LIT.git AudioLens
cd AudioLens
cp Backend/.env.example Backend/.env
cp Frontend/.env.example Frontend/.env
docker compose up --buildEnv files are optional — both services run with sane defaults if you skip
the cp steps. See Environment variables for everything you
can override.
git clone https://github.com/ECHO-Lit/ECHO-LIT.git AudioLens
cd AudioLens
cp Backend/.env.example Backend/.env
cp Frontend/.env.example Frontend/.env
docker compose up --buildSee Architecture for what each compose service (worker-cpu,
worker-model-local, worker-gpu, worker-amd, scheduler) actually does.
| Service | Address | Notes |
|---|---|---|
| Frontend | http://localhost:8080 | React app, served by the dev/nginx target |
| API health | http://localhost:8000/health | FastAPI control plane |
| Redis | localhost:6379 | 4 logical DBs — sessions, jobs, Celery broker, Celery results |
By default, model weights download lazily on the first job that needs them — which can take a while for larger checkpoints. Pre-warm the Whisper Base weights before your first real analysis:
docker compose run --rm worker-model-local python3 -c \
"from transformers import pipeline; pipeline('automatic-speech-recognition', model='openai/whisper-base')"docker compose up -d --scale worker-cpu=2 --scale worker-model-local=2The repo ships a few scripts under scripts/ to save you the raw compose
invocations:
start.sh — docker compose up -d --build, then waits for the API and
frontend to become healthy.stop.sh — stops the stack.queue-status.sh [-w] — prints queue depth and job status; -w
watches continuously.Full reference, plus the dataset-import scripts, is on the CLI & scripts page.
ENVIRONMENT=production — this enforces secure cookies and HTTPS
origins.COOKIE_SECURE=true once you're behind HTTPS, and set
ALLOWED_ORIGINS to your real origin(s) — * is rejected.STORAGE_BACKEND=s3 plus S3_BUCKET,
S3_ENDPOINT_URL, S3_REGION, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY.Full variable-by-variable reference: Environment variables.
Keep the repo checkout at a short path (e.g. C:\dev\AudioLens) rather
than deep inside a long user-profile path. Dataset file paths are
case-sensitive, and long Windows paths combined with case mismatches are a
common source of "file not found" errors on first boot.
docker compose down # stop and remove containers
docker compose down -v # also wipe named volumes (Redis data, local storage)