Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions backends/advanced/Caddyfile.template
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ localhost TAILSCALE_IP {

# WebSocket endpoints - proxy to backend with upgrade support
handle /ws* {
reverse_proxy friend-backend:8000 {
reverse_proxy chronicle-backend:8000 {
# Caddy automatically handles WebSocket upgrades
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
Expand All @@ -29,31 +29,31 @@ localhost TAILSCALE_IP {

# API endpoints - proxy to backend
handle /api/* {
reverse_proxy friend-backend:8000
reverse_proxy chronicle-backend:8000
}

# Auth endpoints - proxy to backend
handle /auth/* {
reverse_proxy friend-backend:8000
reverse_proxy chronicle-backend:8000
}

# Health checks - proxy to backend
handle /health {
reverse_proxy friend-backend:8000
reverse_proxy chronicle-backend:8000
}

handle /readiness {
reverse_proxy friend-backend:8000
reverse_proxy chronicle-backend:8000
}

# Users endpoints - proxy to backend
handle /users/* {
reverse_proxy friend-backend:8000
reverse_proxy chronicle-backend:8000
}

# Audio files - proxy to backend
handle /audio/* {
reverse_proxy friend-backend:8000
reverse_proxy chronicle-backend:8000
}

# Everything else - proxy to webui
Expand All @@ -68,36 +68,36 @@ localhost TAILSCALE_IP {
#
# # WebSocket endpoints
# handle /ws* {
# reverse_proxy friend-backend:8000
# reverse_proxy chronicle-backend:8000
# }
#
# # API endpoints
# handle /api/* {
# reverse_proxy friend-backend:8000
# reverse_proxy chronicle-backend:8000
# }
#
# # Auth endpoints
# handle /auth/* {
# reverse_proxy friend-backend:8000
# reverse_proxy chronicle-backend:8000
# }
#
# # Health checks
# handle /health {
# reverse_proxy friend-backend:8000
# reverse_proxy chronicle-backend:8000
# }
#
# handle /readiness {
# reverse_proxy friend-backend:8000
# reverse_proxy chronicle-backend:8000
# }
#
# # Users endpoints
# handle /users/* {
# reverse_proxy friend-backend:8000
# reverse_proxy chronicle-backend:8000
# }
#
# # Audio files
# handle /audio/* {
# reverse_proxy friend-backend:8000
# reverse_proxy chronicle-backend:8000
# }
#
# # Everything else - webui
Expand Down
2 changes: 1 addition & 1 deletion backends/advanced/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ services:
# Shared network for cross-project communication
networks:
default:
name: friend-network
name: chronicle-network

volumes:
ollama_data:
Expand Down
4 changes: 0 additions & 4 deletions backends/advanced/setup-requirements.txt

This file was deleted.

36 changes: 29 additions & 7 deletions backends/advanced/start-workers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,26 @@ start_workers() {
uv run python -m advanced_omi_backend.workers.rq_worker_entry audio &
AUDIO_PERSISTENCE_WORKER_PID=$!

echo "🎵 Starting audio stream Deepgram worker (1 worker for sequential processing)..."
uv run python -m advanced_omi_backend.workers.audio_stream_deepgram_worker &
AUDIO_STREAM_WORKER_PID=$!
# Start stream workers based on available configuration
# Only start Deepgram worker if DEEPGRAM_API_KEY is set
if [ -n "$DEEPGRAM_API_KEY" ]; then
echo "🎵 Starting audio stream Deepgram worker (1 worker for sequential processing)..."
uv run python -m advanced_omi_backend.workers.audio_stream_deepgram_worker &
AUDIO_STREAM_DEEPGRAM_WORKER_PID=$!
else
echo "⏭️ Skipping Deepgram stream worker (DEEPGRAM_API_KEY not set)"
AUDIO_STREAM_DEEPGRAM_WORKER_PID=""
fi

# Only start Parakeet worker if PARAKEET_ASR_URL or OFFLINE_ASR_TCP_URI is set
if [ -n "$PARAKEET_ASR_URL" ] || [ -n "$OFFLINE_ASR_TCP_URI" ]; then
echo "🎵 Starting audio stream Parakeet worker (1 worker for sequential processing)..."
uv run python -m advanced_omi_backend.workers.audio_stream_parakeet_worker &
AUDIO_STREAM_PARAKEET_WORKER_PID=$!
else
echo "⏭️ Skipping Parakeet stream worker (PARAKEET_ASR_URL/OFFLINE_ASR_TCP_URI not set)"
AUDIO_STREAM_PARAKEET_WORKER_PID=""
fi

echo "✅ All workers started:"
echo " - RQ worker 1: PID $RQ_WORKER_1_PID (transcription, memory, default)"
Expand All @@ -63,7 +80,8 @@ start_workers() {
echo " - RQ worker 5: PID $RQ_WORKER_5_PID (transcription, memory, default)"
echo " - RQ worker 6: PID $RQ_WORKER_6_PID (transcription, memory, default)"
echo " - Audio persistence worker: PID $AUDIO_PERSISTENCE_WORKER_PID (audio queue - file rotation)"
echo " - Audio stream worker: PID $AUDIO_STREAM_WORKER_PID (Redis Streams consumer - sequential processing)"
[ -n "$AUDIO_STREAM_DEEPGRAM_WORKER_PID" ] && echo " - Deepgram stream worker: PID $AUDIO_STREAM_DEEPGRAM_WORKER_PID (real-time transcription)"
[ -n "$AUDIO_STREAM_PARAKEET_WORKER_PID" ] && echo " - Parakeet stream worker: PID $AUDIO_STREAM_PARAKEET_WORKER_PID (real-time transcription)"
}

# Function to check worker registration health
Expand Down Expand Up @@ -103,7 +121,9 @@ monitor_worker_health() {
echo "🔧 Self-healing: Restarting all workers to restore registration..."

# Kill all workers
kill $RQ_WORKER_1_PID $RQ_WORKER_2_PID $RQ_WORKER_3_PID $RQ_WORKER_4_PID $RQ_WORKER_5_PID $RQ_WORKER_6_PID $AUDIO_PERSISTENCE_WORKER_PID $AUDIO_STREAM_WORKER_PID 2>/dev/null || true
kill $RQ_WORKER_1_PID $RQ_WORKER_2_PID $RQ_WORKER_3_PID $RQ_WORKER_4_PID $RQ_WORKER_5_PID $RQ_WORKER_6_PID $AUDIO_PERSISTENCE_WORKER_PID 2>/dev/null || true
[ -n "$AUDIO_STREAM_DEEPGRAM_WORKER_PID" ] && kill $AUDIO_STREAM_DEEPGRAM_WORKER_PID 2>/dev/null || true
[ -n "$AUDIO_STREAM_PARAKEET_WORKER_PID" ] && kill $AUDIO_STREAM_PARAKEET_WORKER_PID 2>/dev/null || true
wait 2>/dev/null || true

# Restart workers
Expand All @@ -128,7 +148,8 @@ shutdown() {
kill $RQ_WORKER_5_PID 2>/dev/null || true
kill $RQ_WORKER_6_PID 2>/dev/null || true
kill $AUDIO_PERSISTENCE_WORKER_PID 2>/dev/null || true
kill $AUDIO_STREAM_WORKER_PID 2>/dev/null || true
[ -n "$AUDIO_STREAM_DEEPGRAM_WORKER_PID" ] && kill $AUDIO_STREAM_DEEPGRAM_WORKER_PID 2>/dev/null || true
[ -n "$AUDIO_STREAM_PARAKEET_WORKER_PID" ] && kill $AUDIO_STREAM_PARAKEET_WORKER_PID 2>/dev/null || true
wait
echo "✅ All workers stopped"
exit 0
Expand Down Expand Up @@ -161,7 +182,8 @@ kill $RQ_WORKER_4_PID 2>/dev/null || true
kill $RQ_WORKER_5_PID 2>/dev/null || true
kill $RQ_WORKER_6_PID 2>/dev/null || true
kill $AUDIO_PERSISTENCE_WORKER_PID 2>/dev/null || true
kill $AUDIO_STREAM_WORKER_PID 2>/dev/null || true
[ -n "$AUDIO_STREAM_DEEPGRAM_WORKER_PID" ] && kill $AUDIO_STREAM_DEEPGRAM_WORKER_PID 2>/dev/null || true
[ -n "$AUDIO_STREAM_PARAKEET_WORKER_PID" ] && kill $AUDIO_STREAM_PARAKEET_WORKER_PID 2>/dev/null || true
wait

echo "🔄 All workers stopped"
Expand Down
5 changes: 5 additions & 0 deletions extras/asr-services/.env.template
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
# ASR Services Configuration
# Copy this file to .env and configure as needed

# PyTorch CUDA version for Docker build
# Options: cu121 (CUDA 12.1), cu126 (CUDA 12.6), cu128 (CUDA 12.8)
# Should match your system's CUDA version (check with: nvidia-smi)
PYTORCH_CUDA_VERSION=cu126

# Parakeet ASR Model Selection
PARAKEET_MODEL=nvidia/parakeet-tdt-0.6b-v3

Expand Down
6 changes: 3 additions & 3 deletions extras/asr-services/Dockerfile_Parakeet
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
######################### builder #################################
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder

# Accept CUDA version as build argument
ARG CUDA_VERSION
# Accept PyTorch CUDA version as build argument
ARG PYTORCH_CUDA_VERSION

WORKDIR /app

Expand All @@ -16,7 +16,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \

# Dependency manifest first for cache‑friendly installs
COPY pyproject.toml uv.lock ./
RUN uv sync --no-install-project --group parakeet --extra ${CUDA_VERSION} && \
RUN uv sync --no-install-project --group parakeet --extra ${PYTORCH_CUDA_VERSION} && \
uv cache clean

# Should prepare the .venv for use :)
Expand Down
2 changes: 1 addition & 1 deletion extras/asr-services/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ services:
context: .
dockerfile: Dockerfile_Parakeet
args:
CUDA_VERSION: ${CUDA_VERSION:-cu121}
PYTORCH_CUDA_VERSION: ${PYTORCH_CUDA_VERSION:-cu126}
image: parakeet-asr:latest
ports:
- "${PARAKEET_HOST_PORT:-8767}:${PARAKEET_CONTAINER_PORT:-8765}"
Expand Down
Loading
Loading