diff --git a/.env.example b/.env.example index 17e6ff4..956faa3 100644 --- a/.env.example +++ b/.env.example @@ -106,6 +106,7 @@ LANGFUSE_HOSTNAME=langfuse.yourdomain.com GRAFANA_HOSTNAME=grafana.yourdomain.com SEARXNG_HOSTNAME=searxng.yourdomain.com PROMETHEUS_HOSTNAME=prometheus.yourdomain.com +LETTA_HOSTNAME=letta.yourdomain.com LETSENCRYPT_EMAIL= @@ -238,3 +239,6 @@ DOCKER_SOCKET_LOCATION=/var/run/docker.sock # Google Cloud Project details GOOGLE_PROJECT_ID=GOOGLE_PROJECT_ID GOOGLE_PROJECT_NUMBER=GOOGLE_PROJECT_NUMBER + +# Letta +LETTA_SERVER_PASSWORD= \ No newline at end of file diff --git a/Caddyfile b/Caddyfile index ec25ac6..f7d0fe2 100644 --- a/Caddyfile +++ b/Caddyfile @@ -35,6 +35,11 @@ reverse_proxy grafana:3000 } +# Letta +{$LETTA_HOSTNAME} { + reverse_proxy letta:8283 +} + # Prometheus {$PROMETHEUS_HOSTNAME} { basic_auth { diff --git a/README.md b/README.md index edc8bc8..4d40418 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,8 @@ The installer also makes the following powerful open-source tools **available fo ✅ [**Crawl4ai**](https://github.com/Alfresco/crawl4ai) - A flexible web crawler designed for AI, enabling you to extract data from websites for your projects. +✅ [**Letta**](https://docs.letta.com/) - An open-source agent server and SDK that can be connected to various LLM API backends (OpenAI, Anthropic, Ollama, etc.), enabling you to build and manage AI agents. + ✅ [**Prometheus**](https://prometheus.io/) - An open-source monitoring and alerting toolkit to keep an eye on system health. ✅ [**Grafana**](https://grafana.com/) - An open-source platform for visualizing monitoring data, helping you understand system performance at a glance. @@ -109,6 +111,7 @@ The services will be available at the following addresses (replace `yourdomain.c - **Flowise:** `flowise.yourdomain.com` - **Supabase (Dashboard):** `supabase.yourdomain.com` - **Langfuse:** `langfuse.yourdomain.com` +- **Letta:** `letta.yourdomain.com` - **Grafana:** `grafana.yourdomain.com` - **SearXNG:** `searxng.yourdomain.com` - **Prometheus:** `prometheus.yourdomain.com` diff --git a/docker-compose.yml b/docker-compose.yml index 07d2f28..cf2566e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,6 +12,7 @@ volumes: langfuse_minio_data: grafana: prometheus_data: + letta_data: x-n8n: &service-n8n image: n8nio/n8n:latest @@ -402,3 +403,19 @@ services: limits: cpus: "1.0" memory: 4G # Increased based on documentation recommendation + + letta: + image: letta/letta:latest + container_name: letta + profiles: ["letta"] + restart: unless-stopped + volumes: + - letta_data:/var/lib/postgresql/data + environment: + OPENAI_API_KEY: ${OPENAI_API_KEY:-} + ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-} + OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-} + SECURE: ${LETTA_SECURE:-true} + LETTA_SERVER_PASSWORD: ${LETTA_SERVER_PASSWORD:-} + extra_hosts: + - "host.docker.internal:host-gateway" diff --git a/scripts/03_generate_secrets.sh b/scripts/03_generate_secrets.sh index cff473e..7d09d48 100755 --- a/scripts/03_generate_secrets.sh +++ b/scripts/03_generate_secrets.sh @@ -41,6 +41,7 @@ declare -A VARS_TO_GENERATE=( ["LOGFLARE_API_KEY"]="secret:64" # base64 encoded, 48 bytes -> 64 chars ["PROMETHEUS_PASSWORD"]="password:32" # Added Prometheus password ["SEARXNG_PASSWORD"]="password:32" # Added SearXNG admin password + ["LETTA_SERVER_PASSWORD"]="password:32" # Added Letta server password ["LANGFUSE_INIT_USER_PASSWORD"]="password:32" ["LANGFUSE_INIT_PROJECT_PUBLIC_KEY"]="langfuse_pk:32" ["LANGFUSE_INIT_PROJECT_SECRET_KEY"]="langfuse_sk:32" diff --git a/scripts/04_wizard.sh b/scripts/04_wizard.sh index fdca127..d73a2e8 100755 --- a/scripts/04_wizard.sh +++ b/scripts/04_wizard.sh @@ -40,13 +40,14 @@ export DEBIAN_FRONTEND=dialog services=( "n8n" "n8n, n8n-worker, n8n-import (Workflow Automation)" "ON" "flowise" "Flowise (AI Agent Builder)" "ON" - "supabase" "Supabase (Backend as a Service)" "ON" - "qdrant" "Qdrant (Vector Database)" "ON" "monitoring" "Monitoring Suite (Prometheus, Grafana, cAdvisor, Node-Exporter)" "ON" - "langfuse" "Langfuse Suite (AI Observability - includes Clickhouse, Minio)" "ON" - "open-webui" "Open WebUI (ChatGPT-like Interface)" "ON" - "searxng" "SearXNG (Private Metasearch Engine)" "ON" - "crawl4ai" "Crawl4ai (Web Crawler for AI)" "ON" + "qdrant" "Qdrant (Vector Database)" "OFF" + "supabase" "Supabase (Backend as a Service)" "OFF" + "langfuse" "Langfuse Suite (AI Observability - includes Clickhouse, Minio)" "OFF" + "open-webui" "Open WebUI (ChatGPT-like Interface)" "OFF" + "searxng" "SearXNG (Private Metasearch Engine)" "OFF" + "crawl4ai" "Crawl4ai (Web Crawler for AI)" "OFF" + "letta" "Letta (Agent Server & SDK)" "OFF" ) # Use whiptail to display the checklist diff --git a/scripts/06_final_report.sh b/scripts/06_final_report.sh index 45a4a01..fed4428 100755 --- a/scripts/06_final_report.sh +++ b/scripts/06_final_report.sh @@ -159,6 +159,14 @@ if is_profile_active "n8n" || is_profile_active "langfuse"; then echo "(Note: Primarily for internal service communication, not exposed externally by default)" fi +if is_profile_active "letta"; then + echo + echo "================================= Letta ================================" + echo + echo "Host: ${LETTA_HOSTNAME:-}" + echo "Authorization: Bearer ${LETTA_SERVER_PASSWORD}" +fi + echo echo "=======================================================================" echo