Skip to content
Closed
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
1 change: 1 addition & 0 deletions .env.default
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ TEST_WEBUI_PORT=3001
# SERVICE CONFIGURATION
# ==========================================
LLM_PROVIDER=openai
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini
MEMORY_PROVIDER=chronicle
TRANSCRIPTION_PROVIDER=deepgram
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,4 @@ backends/advanced/.env.*
# Deprecated compose files (moved to root compose/)
backends/advanced/compose/infrastructure.yml
backends/advanced/compose/mycelia.yml
backends/advanced/config/secrets.yaml
52 changes: 26 additions & 26 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,10 @@ menu: ## Show interactive menu (default)
@echo " make logs-all 📋 View all logs"
@echo
@echo " OR use docker compose directly:"
@echo " docker compose -f docker-compose.infra.yml up -d (start infra)"
@echo " docker compose up -d (start app)"
@echo " docker compose down (stop app only)"
@echo " docker compose -f docker-compose.infra.yml down (stop infra)"
@echo " docker compose -f docker-compose.infra.yml up -d (start infra)"
@echo " cd backends/advanced && docker compose up -d (start app)"
@echo " cd backends/advanced && docker compose down (stop app only)"
@echo " docker compose -f docker-compose.infra.yml down (stop infra)"
@echo
@echo "⚡ Quick Start (First Time):"
@echo " quick-start 🚀 Interactive setup with zero configuration"
Expand Down Expand Up @@ -235,22 +235,22 @@ up: ## 🚀 Start Chronicle (infrastructure + application)
else \
if ! docker ps --filter "name=^mongo$$" --filter "status=running" -q | grep -q .; then \
echo "🏗️ Infrastructure not running, starting it first..."; \
docker compose -f compose/infrastructure-shared.yml up -d; \
docker compose -f docker-compose.infra.yml up -d; \
sleep 3; \
fi; \
WEBUI_PORT=$$(grep '^WEBUI_PORT=' backends/advanced/.env 2>/dev/null | cut -d= -f2 || echo "3000"); \
BACKEND_PORT=$$(grep '^BACKEND_PORT=' backends/advanced/.env 2>/dev/null | cut -d= -f2 || echo "8000"); \
cd backends/advanced && docker compose up -d; \
echo "✅ Chronicle started"; \
echo ""; \
WEBUI_PORT=$$(grep '^WEBUI_PORT=' backends/advanced/.env 2>/dev/null | cut -d= -f2 || echo "3000"); \
echo "╔════════════════════════════════════════════════════╗"; \
echo "║ ║"; \
echo "║ 🚀 Open Chronicle WebUI: ║"; \
echo "║ ║"; \
echo "║ http://localhost:$$WEBUI_PORT ║"; \
echo "║ ║"; \
echo "║ (Click the link above or copy to browser) ║"; \
echo "║ ║"; \
echo "╚════════════════════════════════════════════════════╝"; \
printf "╔════════════════════════════════════════════════════╗\n"; \
printf "║ ║\n"; \
printf "║ 🚀 Chronicle Started Successfully ║\n"; \
printf "║ ║\n"; \
printf "║ WebUI: http://localhost:%-22s║\n" "$$WEBUI_PORT"; \
printf "║ Backend: http://localhost:%-22s║\n" "$$BACKEND_PORT"; \
printf "║ ║\n"; \
printf "╚════════════════════════════════════════════════════╝\n"; \
echo ""; \
fi

Expand All @@ -263,7 +263,7 @@ down: ## 🛑 Stop Chronicle application only (keeps infrastructure running)
down-all: ## 🛑 Stop everything (infrastructure + application)
@echo "🛑 Stopping all services..."
@cd backends/advanced && docker compose down
@docker compose -f compose/infrastructure-shared.yml down
@docker compose -f docker-compose.infra.yml down
@echo "✅ All services stopped"

build: ## 🔨 Rebuild Chronicle application images
Expand All @@ -278,15 +278,15 @@ restart: ## 🔄 Restart Chronicle application only
restart-all: ## 🔄 Restart everything (infrastructure + application)
@echo "🔄 Restarting all services..."
@cd backends/advanced && docker compose restart
@docker compose -f compose/infrastructure-shared.yml restart
@docker compose -f docker-compose.infra.yml restart
@echo "✅ All services restarted"

logs: ## 📋 View Chronicle application logs
@cd backends/advanced && docker compose logs -f

logs-all: ## 📋 View all logs (infrastructure + application)
@cd backends/advanced && docker compose logs -f &
@docker compose -f compose/infrastructure-shared.yml logs -f
@docker compose -f docker-compose.infra.yml logs -f

quick-start: ## 🚀 Start Chronicle with zero configuration (interactive setup)
@./quick-start.sh
Expand All @@ -302,7 +302,7 @@ quick-start-stop: ## 🛑 Stop quick-start environment
quick-start-clean: ## 🗑️ Stop application and remove all data volumes
@echo "🗑️ Stopping application and removing data..."
@cd backends/advanced && docker compose down -v
@docker compose -f compose/infrastructure-shared.yml down -v
@docker compose -f docker-compose.infra.yml down -v
@echo "✅ Environment cleaned"

quick-start-logs: ## 📋 View quick-start logs
Expand Down Expand Up @@ -770,17 +770,17 @@ infra-start: ## Start shared infrastructure (MongoDB, Redis, Qdrant, optional Ne
@# Check if Neo4j should be started (NEO4J_ENABLED in any environment)
@if grep -q "^NEO4J_ENABLED=true" environments/*.env 2>/dev/null; then \
echo "🔗 Neo4j enabled in at least one environment - starting with Neo4j profile..."; \
docker compose -p chronicle-infra -f compose/infrastructure-shared.yml --profile neo4j up -d; \
docker compose -f docker-compose.infra.yml --profile neo4j up -d; \
else \
docker compose -p chronicle-infra -f compose/infrastructure-shared.yml up -d; \
docker compose -f docker-compose.infra.yml up -d; \
fi
@echo ""
@echo "✅ Infrastructure services started!"
@echo ""
@echo " 📊 MongoDB: mongodb://localhost:27017"
@echo " 💾 Redis: redis://localhost:6379"
@echo " 🔍 Qdrant: http://localhost:6034"
@if docker ps --format '{{.Names}}' | grep -q '^chronicle-neo4j$$'; then \
@if docker ps --format '{{.Names}}' | grep -q '^neo4j$$'; then \
echo " 🔗 Neo4j: http://localhost:7474 (bolt: 7687)"; \
fi
@echo ""
Expand All @@ -792,17 +792,17 @@ infra-stop: ## Stop shared infrastructure
@echo "🛑 Stopping shared infrastructure..."
@echo "⚠️ This will affect ALL running environments!"
@read -p "Continue? (y/N): " confirm && [ "$$confirm" = "y" ] || exit 1
@docker compose -p chronicle-infra -f compose/infrastructure-shared.yml down
@docker compose -f docker-compose.infra.yml down
@echo "✅ Infrastructure stopped"

infra-restart: ## Restart shared infrastructure
@echo "🔄 Restarting shared infrastructure..."
@docker compose -p chronicle-infra -f compose/infrastructure-shared.yml restart
@docker compose -f docker-compose.infra.yml restart
@echo "✅ Infrastructure restarted"

infra-logs: ## View infrastructure logs
@echo "📋 Viewing infrastructure logs (press Ctrl+C to exit)..."
@docker compose -p chronicle-infra -f compose/infrastructure-shared.yml logs -f
@docker compose -f docker-compose.infra.yml logs -f

infra-status: ## Check infrastructure status
@echo "📊 Infrastructure Status:"
Expand Down Expand Up @@ -848,7 +848,7 @@ infra-clean: ## Clean infrastructure data (DANGER: deletes all databases!)
@echo " • All Neo4j graph databases (if enabled)"
@echo ""
@read -p "Type 'DELETE ALL DATA' to confirm: " confirm && [ "$$confirm" = "DELETE ALL DATA" ] || exit 1
@docker compose -p chronicle-infra -f compose/infrastructure-shared.yml --profile neo4j down -v
@docker compose -f docker-compose.infra.yml --profile neo4j down -v
@echo "✅ Infrastructure data deleted"

# ========================================
Expand Down
2 changes: 1 addition & 1 deletion backends/advanced/.env.template
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ QDRANT_BASE_URL=qdrant
# - Requires Mycelia server setup (extras/mycelia)
#
# See MEMORY_PROVIDERS.md for detailed comparison
MEMORY_PROVIDER=chronicle
MEMORY_PROVIDER=friend-lite

# ----------------------------------------
# OpenMemory MCP Configuration
Expand Down
2 changes: 2 additions & 0 deletions backends/advanced/compose/backend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ services:
- ../data/debug_dir:/app/debug_dir
- ../data:/app/data
- ../config:/app/config
- /var/run/docker.sock:/var/run/docker.sock # Docker socket for container management
environment:
# Service URLs (Docker internal network)
- REDIS_URL=redis://redis:6379/${REDIS_DATABASE:-0}
Expand Down Expand Up @@ -48,6 +49,7 @@ services:
- ../start-workers.sh:/app/start-workers.sh
- ../data/audio_chunks:/app/audio_chunks
- ../data:/app/data
- ../config:/app/config
environment:
# Service URLs (Docker internal network)
- REDIS_URL=redis://redis:6379/${REDIS_DATABASE:-0}
Expand Down
16 changes: 2 additions & 14 deletions backends/advanced/config/config.defaults.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,15 @@
# Copy to config.yaml and customize for your deployment.
#
# DO NOT store secrets in this file - it is committed to git.
# Actual secrets should go in config.yaml (which is gitignored).
# Sensitive data (API keys, passwords) goes in secrets.yaml.

version: 1.0.0
wizard_completed: false

# Authentication Configuration
# Authentication Configuration (non-sensitive)
auth:
secret_key: '' # Auto-generated on first run if empty
admin_name: admin
admin_email: admin@example.com
admin_password_hash: '' # Set via wizard or environment variable

# Speech Detection Settings
speech_detection:
Expand Down Expand Up @@ -79,13 +77,3 @@ infrastructure:
misc:
debug_dir: ./data/debug_dir
langfuse_enable_telemetry: false

# API Keys (leave empty - set via wizard or config.yaml)
api_keys:
openai_api_key: null
deepgram_api_key: null
mistral_api_key: null
hf_token: null
langfuse_public_key: null
langfuse_secret_key: null
ngrok_authtoken: null
34 changes: 34 additions & 0 deletions backends/advanced/config/secrets.defaults.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Chronicle Secrets Configuration (Template)
#
# This file SHOULD NOT contain secrets, and CAN be committed to version control.
# Copy this to secrets.yaml and fill in your actual values, or use settings UI in the app
#

# External Service API Keys
api_keys:
# OpenAI API key for LLM operations
openai_api_key: null

# Deepgram API key for speech-to-text transcription
deepgram_api_key: null

# Mistral API key for alternative transcription (Voxtral models)
mistral_api_key: null

# Hugging Face token for model downloads
hf_token: null

# Langfuse keys for LLM observability (optional)
langfuse_public_key: null
langfuse_secret_key: null

# Ngrok authtoken for tunneling (optional)
ngrok_authtoken: null

# Authentication Secrets
auth:
# JWT signing key (auto-generated if empty)
secret_key: ""

# Admin password hash (auto-generated from ADMIN_PASSWORD env var)
admin_password_hash: ""
1 change: 1 addition & 0 deletions backends/advanced/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ dependencies = [
"rq>=1.16.0",
"soundfile>=0.12.1",
"websockets>=12.0",
"docker>=7.0.0",
]

[project.optional-dependencies]
Expand Down
Loading
Loading