1111# successful install, it optionally seeds a demo database.
1212#
1313# Keyless start: The stack starts without an LLM key. Chat and AI features are
14- # disabled until a key is configured in Settings → AI Provider .
14+ # disabled until a key is configured during onboarding in the web UI .
1515#
1616# Environment variables override .env placeholders:
17- # DEEPSQL_CHAT_API_KEY LLM key for chat (optional - can set later in UI)
18- # DEEPSQL_CHAT_PROVIDER Provider id (default: openai)
19- # DEEPSQL_CHAT_ENDPOINT API endpoint (default: https://api.openai.com/v1)
20- # DEEPSQL_CHAT_MODEL Model name (default: gpt-4o)
17+ # DEEPSQL_LLM_API_KEY LLM key (optional - can set later in the web UI)
18+ # DEEPSQL_LLM_PROVIDER Provider id (default: openai)
19+ # DEEPSQL_LLM_BASE_URL API endpoint (default: https://api.openai.com/v1)
20+ # DEEPSQL_LLM_MODEL Model name (default: gpt-4o)
2121# DEEPSQL_INITIAL_ADMIN_EMAIL Admin login email (prompted if unset)
2222# DEEPSQL_INITIAL_ADMIN_PASSWORD Admin password (generated if unset)
2323# DEEPSQL_FRONTEND_PORT Frontend port (default: 3000)
2424# DEEPSQL_PROJECT_NAME Compose project name (default: deepsql-selfhost)
2525#
26+ # Aliases (for backward compatibility):
27+ # DEEPSQL_CHAT_API_KEY, DEEPSQL_CHAT_PROVIDER, DEEPSQL_CHAT_ENDPOINT, DEEPSQL_CHAT_MODEL
28+ #
2629# Options:
2730# -h, --help Show this help message and exit
2831# -V, --version Show version and exit
@@ -84,32 +87,35 @@ Options:
8487 --project-name NAME Set Compose project name
8588
8689Environment variables (override .env placeholders):
87- DEEPSQL_CHAT_API_KEY LLM key (optional - can set later in UI)
88- DEEPSQL_CHAT_PROVIDER Provider id (default: openai)
89- DEEPSQL_CHAT_ENDPOINT API endpoint
90- DEEPSQL_CHAT_MODEL Model name
90+ DEEPSQL_LLM_API_KEY LLM key (optional - can set later in the web UI)
91+ DEEPSQL_LLM_PROVIDER Provider id (default: openai)
92+ DEEPSQL_LLM_BASE_URL API endpoint (default: https://api.openai.com/v1)
93+ DEEPSQL_LLM_MODEL Model name (default: gpt-4o)
9194 DEEPSQL_INITIAL_ADMIN_EMAIL Admin login email
9295 DEEPSQL_INITIAL_ADMIN_PASSWORD Admin password (generated if unset)
9396 DEEPSQL_FRONTEND_PORT Frontend port (default: 3000)
9497 DEEPSQL_PROJECT_NAME Compose project name
9598
99+ Aliases (backward compatible):
100+ DEEPSQL_CHAT_API_KEY, DEEPSQL_CHAT_PROVIDER, DEEPSQL_CHAT_ENDPOINT, DEEPSQL_CHAT_MODEL
101+
96102Examples:
97103 # Interactive install (prompts for admin email)
98104 ./scripts/self-host/install.sh
99105
100106 # Non-interactive with LLM key
101- DEEPSQL_CHAT_API_KEY =sk-... DEEPSQL_INITIAL_ADMIN_EMAIL=admin@example.com \
107+ DEEPSQL_LLM_API_KEY =sk-... DEEPSQL_INITIAL_ADMIN_EMAIL=admin@example.com \
102108 ./scripts/self-host/install.sh --non-interactive
103109
104- # Keyless install (configure LLM later in UI)
110+ # Keyless install (configure LLM later in the web UI)
105111 DEEPSQL_INITIAL_ADMIN_EMAIL=admin@example.com \
106112 ./scripts/self-host/install.sh --non-interactive
107113
108114 # Fresh install (removes existing data)
109115 ./scripts/self-host/install.sh --fresh
110116
111117For AI agents:
112- DEEPSQL_CHAT_API_KEY =<key> curl -fsSL https://deepsql.ai/install.sh | bash
118+ DEEPSQL_LLM_API_KEY =<key> curl -fsSL https://deepsql.ai/install.sh | bash
113119
114120 After install:
115121 Health: curl -fsS http://localhost:8080/api/actuator/health
@@ -685,7 +691,8 @@ print_summary() {
685691
686692 if [[ " $has_llm_key " -eq 0 ]]; then
687693 echo " ${YELLOW} Note: No LLM key configured. Chat and AI features are disabled.${NC} "
688- echo " Configure your LLM key in Settings → AI Provider after logging in."
694+ echo " Add the key during onboarding in the web UI, or re-run the installer with:"
695+ echo " DEEPSQL_LLM_API_KEY=<key> ./scripts/self-host/install.sh"
689696 echo
690697 fi
691698
@@ -724,10 +731,27 @@ main() {
724731 fi
725732 fi
726733
734+ # ── Env var aliasing ─────────────────────────────────────────────────────────
735+ # DEEPSQL_LLM_* is the primary documented name; DEEPSQL_CHAT_* is the alias.
736+ # The backend uses DEEPSQL_CHAT_*, so we map LLM->CHAT here.
737+ if [[ -n " ${DEEPSQL_LLM_API_KEY:- } " ]]; then
738+ export DEEPSQL_CHAT_API_KEY=" ${DEEPSQL_CHAT_API_KEY:- $DEEPSQL_LLM_API_KEY } "
739+ fi
740+ if [[ -n " ${DEEPSQL_LLM_PROVIDER:- } " ]]; then
741+ export DEEPSQL_CHAT_PROVIDER=" ${DEEPSQL_CHAT_PROVIDER:- $DEEPSQL_LLM_PROVIDER } "
742+ fi
743+ if [[ -n " ${DEEPSQL_LLM_BASE_URL:- } " ]]; then
744+ export DEEPSQL_CHAT_ENDPOINT=" ${DEEPSQL_CHAT_ENDPOINT:- $DEEPSQL_LLM_BASE_URL } "
745+ fi
746+ if [[ -n " ${DEEPSQL_LLM_MODEL:- } " ]]; then
747+ export DEEPSQL_CHAT_MODEL=" ${DEEPSQL_CHAT_MODEL:- $DEEPSQL_LLM_MODEL } "
748+ fi
749+
727750 # ── Load .env but let env vars take precedence ──────────────────────────────
728751 # Store current env vars that should override .env
729752 declare -A override_vars
730753 for var in DEEPSQL_CHAT_API_KEY DEEPSQL_CHAT_PROVIDER DEEPSQL_CHAT_ENDPOINT DEEPSQL_CHAT_MODEL \
754+ DEEPSQL_LLM_API_KEY DEEPSQL_LLM_PROVIDER DEEPSQL_LLM_BASE_URL DEEPSQL_LLM_MODEL \
731755 DEEPSQL_EMBEDDING_PROVIDER DEEPSQL_EMBEDDING_API_KEY DEEPSQL_EMBEDDING_ENDPOINT DEEPSQL_EMBEDDING_MODEL \
732756 DEEPSQL_INITIAL_ADMIN_EMAIL DEEPSQL_INITIAL_ADMIN_PASSWORD \
733757 DEEPSQL_FRONTEND_PORT DEEPSQL_BACKEND_PORT DEEPSQL_POSTGRES_PORT DEEPSQL_VALKEY_PORT \
@@ -749,6 +773,20 @@ main() {
749773 export " $var =${override_vars[$var]} "
750774 done
751775
776+ # Re-apply LLM->CHAT aliasing after sourcing .env (in case .env had DEEPSQL_LLM_*)
777+ if [[ -n " ${DEEPSQL_LLM_API_KEY:- } " ]] && [[ -z " ${DEEPSQL_CHAT_API_KEY:- } " || " ${DEEPSQL_CHAT_API_KEY} " == replace-with-* ]]; then
778+ export DEEPSQL_CHAT_API_KEY=" $DEEPSQL_LLM_API_KEY "
779+ fi
780+ if [[ -n " ${DEEPSQL_LLM_PROVIDER:- } " ]] && [[ -z " ${DEEPSQL_CHAT_PROVIDER:- } " || " ${DEEPSQL_CHAT_PROVIDER} " == " openai" ]]; then
781+ export DEEPSQL_CHAT_PROVIDER=" $DEEPSQL_LLM_PROVIDER "
782+ fi
783+ if [[ -n " ${DEEPSQL_LLM_BASE_URL:- } " ]] && [[ -z " ${DEEPSQL_CHAT_ENDPOINT:- } " || " ${DEEPSQL_CHAT_ENDPOINT} " == https://api.openai.com* ]]; then
784+ export DEEPSQL_CHAT_ENDPOINT=" $DEEPSQL_LLM_BASE_URL "
785+ fi
786+ if [[ -n " ${DEEPSQL_LLM_MODEL:- } " ]] && [[ -z " ${DEEPSQL_CHAT_MODEL:- } " || " ${DEEPSQL_CHAT_MODEL} " == " gpt-4o" ]]; then
787+ export DEEPSQL_CHAT_MODEL=" $DEEPSQL_LLM_MODEL "
788+ fi
789+
752790 # ── Check for existing volumes ──────────────────────────────────────────────
753791 check_existing_volumes
754792
@@ -778,7 +816,7 @@ main() {
778816 if can_prompt; then
779817 echo
780818 echo " LLM API key (e.g., OpenAI sk-... key)."
781- echo " Press Enter to skip and configure later in Settings → AI Provider ."
819+ echo " Press Enter to skip and configure later during onboarding in the web UI ."
782820 prompt_value DEEPSQL_CHAT_API_KEY " LLM API key" 0 1
783821 fi
784822
@@ -803,9 +841,9 @@ main() {
803841 fi
804842 echo
805843 echo " No LLM key configured. Chat and AI features will be disabled."
806- echo " Configure your LLM key in Settings → AI Provider after logging in."
844+ echo " Configure your LLM key during onboarding in the web UI after logging in."
807845 if [[ " $NON_INTERACTIVE " -eq 1 ]]; then
808- echo " NEEDS_USER_INPUT: DEEPSQL_CHAT_API_KEY (optional, can be set in UI at http://localhost:${DEEPSQL_FRONTEND_PORT:- 3000} )"
846+ echo " NEEDS_USER_INPUT: DEEPSQL_LLM_API_KEY (optional, can be set during onboarding at http://localhost:${DEEPSQL_FRONTEND_PORT:- 3000} )"
809847 fi
810848 fi
811849 fi
0 commit comments