Skip to content

Commit 8bac4eb

Browse files
fix(install): use DEEPSQL_LLM_API_KEY as primary name and allow keyless start
P0-1 installer fixes: - Use DEEPSQL_LLM_API_KEY as the primary documented env var name (DEEPSQL_CHAT_API_KEY remains as backend alias) - Allow agent container to start without LLM key in degraded mode - Replace 'Settings → AI Provider' references with 'during onboarding in the web UI' - Update NEEDS_USER_INPUT line to use DEEPSQL_LLM_API_KEY Files updated: - scripts/self-host/install.sh: Env var aliasing, keyless start messages - scripts/self-host/remote-install.sh: Updated env var names in docs/examples - agent/docker-entrypoint.sh: Allow keyless start in degraded mode - README.md, docs/QUICKSTART.md, docs/llms*.txt: Updated env var names - scripts/self-host/bootstrap-server.sh: Updated env var guidance Tested: Full Docker e2e with keyless start - all services healthy. Co-authored-by: Venkat SF <venkatesh.sakamuri@stayflexi.com>
1 parent f13b5ed commit 8bac4eb

8 files changed

Lines changed: 89 additions & 41 deletions

File tree

‎README.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ curl -fsSL https://deepsql.ai/install.sh | bash
3131

3232
This clones the latest release to `~/deepsql`, runs the full install, and prints the
3333
login URL and credentials location. The only input you need is an LLM API key — or skip
34-
it and configure the key later in **Settings → AI Provider**.
34+
it and configure the key later during onboarding in the web UI.
3535

3636
**Options:** `--non-interactive`, `--fresh` (clean install), `--no-seed-demo`,
3737
`--ref v1.3.0` (specific version). See
@@ -50,7 +50,7 @@ If you are a coding agent (Claude, Cursor, Codex) setting up DeepSQL for a user:
5050

5151
2. **Run the install:**
5252
```bash
53-
DEEPSQL_CHAT_API_KEY=<key> curl -fsSL https://deepsql.ai/install.sh | bash
53+
DEEPSQL_LLM_API_KEY=<key> curl -fsSL https://deepsql.ai/install.sh | bash
5454
```
5555
Or without a key:
5656
```bash
@@ -65,7 +65,7 @@ If you are a coding agent (Claude, Cursor, Codex) setting up DeepSQL for a user:
6565
4. **Tell the user:**
6666
- Login URL: **http://localhost:3000**
6767
- Login email and password: stored in `~/deepsql/.env`
68-
- If no LLM key was provided: configure it in **Settings → AI Provider**
68+
- If no LLM key was provided: configure it during onboarding in the web UI
6969

7070
The installer prints `NEEDS_USER_INPUT: ...` lines for any missing optional inputs,
7171
then exits 0 with all services running.

‎agent/docker-entrypoint.sh‎

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,18 @@ API_KEY="${DEEPSQL_CHAT_API_KEY:-${AZURE_OPENAI_KEY:-}}"
3333
ENDPOINT="${DEEPSQL_CHAT_ENDPOINT:-${AZURE_OPENAI_ENDPOINT:-}}"
3434
MODEL="${DEEPSQL_CHAT_MODEL:-gpt-5.4}"
3535

36+
# Keyless start: allow the agent to start without an LLM key. It will serve
37+
# health endpoints but agent operations will fail with a clear message.
38+
KEYLESS_MODE=0
3639
if [[ -z "$API_KEY" ]]; then
37-
log "ERROR: DEEPSQL_CHAT_API_KEY (or AZURE_OPENAI_KEY) must be set."
38-
exit 1
40+
log "WARNING: No LLM key configured. Agent will start in degraded mode."
41+
log " Configure DEEPSQL_LLM_API_KEY and restart to enable AI features."
42+
KEYLESS_MODE=1
43+
# Use placeholder values so the runtime doesn't crash on startup.
44+
API_KEY="not-configured"
45+
ENDPOINT="${ENDPOINT:-https://api.openai.com/v1}"
3946
fi
40-
if [[ -z "$ENDPOINT" ]]; then
47+
if [[ -z "$ENDPOINT" && "$KEYLESS_MODE" -eq 0 ]]; then
4148
log "ERROR: DEEPSQL_CHAT_ENDPOINT (or AZURE_OPENAI_ENDPOINT) must be set."
4249
exit 1
4350
fi
@@ -46,6 +53,8 @@ if [[ -z "${AGENT_PROVISION_SECRET:-}" ]]; then
4653
exit 1
4754
fi
4855

56+
export DEEPSQL_KEYLESS_MODE="$KEYLESS_MODE"
57+
4958
if [[ ! -x "$VENV_PY" ]]; then
5059
log "ERROR: agent runtime venv missing at $VENV_PY"
5160
exit 1

‎docs/QUICKSTART.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ curl -fsSL https://deepsql.ai/install.sh | bash
88

99
This runs the complete install: clones the repo, builds the stack from source, and
1010
starts all services. The only input needed is an LLM API key — or skip it and
11-
configure later in Settings → AI Provider.
11+
configure later during onboarding in the web UI.
1212

1313
## What you need
1414

@@ -25,7 +25,7 @@ curl -fsSL https://raw.githubusercontent.com/DeepSQLAI/deepsql/main/scripts/self
2525
## With an LLM key
2626

2727
```bash
28-
DEEPSQL_CHAT_API_KEY=sk-your-key curl -fsSL https://deepsql.ai/install.sh | bash
28+
DEEPSQL_LLM_API_KEY=sk-your-key curl -fsSL https://deepsql.ai/install.sh | bash
2929
```
3030

3131
## Without an LLM key (keyless start)
@@ -34,7 +34,7 @@ DEEPSQL_CHAT_API_KEY=sk-your-key curl -fsSL https://deepsql.ai/install.sh | bash
3434
DEEPSQL_INITIAL_ADMIN_EMAIL=admin@example.com curl -fsSL https://deepsql.ai/install.sh | bash
3535
```
3636

37-
Chat and AI features are disabled until you configure a key in Settings → AI Provider.
37+
Chat and AI features are disabled until you configure a key during onboarding in the web UI.
3838

3939
## After install
4040

‎docs/llms-full.txt‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Human docs: https://deepsql.ai/docs
1111

1212
1. A model provider API key (OpenAI, Azure OpenAI, Anthropic, or any OpenAI-compatible
1313
server). **Optional** — the stack runs without a key and the user can configure it
14-
later in Settings → AI Provider.
14+
later during onboarding in the web UI.
1515
2. Admin email (or use a default like admin@example.com).
1616

1717
Everything else (password, secrets, embeddings) is auto-generated or optional.
@@ -23,7 +23,7 @@ Never print secrets back to the user or commit .env to version control.
2323
Ask the user for their LLM API key (or skip if they want to configure later), then run:
2424

2525
```bash
26-
DEEPSQL_CHAT_API_KEY=<key> curl -fsSL https://deepsql.ai/install.sh | bash
26+
DEEPSQL_LLM_API_KEY=<key> curl -fsSL https://deepsql.ai/install.sh | bash
2727
```
2828

2929
Or without a key:
@@ -129,7 +129,7 @@ DEEPSQL_CHAT_MODEL=llama3.1
129129
```
130130

131131
Keyless start: If no LLM key is provided, the stack starts with AI features disabled.
132-
Configure the key in Settings → AI Provider after logging in.
132+
Configure the key during onboarding in the web UI after logging in.
133133

134134
## Step 3 — Configure embeddings (optional)
135135

@@ -161,7 +161,8 @@ Ports (override in .env): frontend 3000 (`DEEPSQL_FRONTEND_PORT`), backend 8080
161161
Open http://localhost:3000 and log in with the admin email and password from .env.
162162
Then, in the UI:
163163
1. Add a database connection (Postgres or MySQL — RDS, Aurora, Cloud SQL, self-managed).
164-
2. If no LLM key was configured: go to Settings → AI Provider to add it.
164+
2. If no LLM key was configured: add it during onboarding or re-run the installer with
165+
DEEPSQL_LLM_API_KEY=<key>.
165166
3. Give company context: business rules, code scans, slow query logs.
166167
4. Configure users and row/column-level access policies.
167168

‎docs/llms.txt‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Ask the user for their LLM API key (OpenAI, Azure, etc.) — or skip if they wan
88
configure later — then run:
99

1010
```bash
11-
DEEPSQL_CHAT_API_KEY=<key> curl -fsSL https://deepsql.ai/install.sh | bash
11+
DEEPSQL_LLM_API_KEY=<key> curl -fsSL https://deepsql.ai/install.sh | bash
1212
```
1313

1414
Or without a key:
@@ -27,7 +27,7 @@ curl -fsS http://localhost:8080/api/actuator/health
2727

2828
- Login URL: http://localhost:3000
2929
- Credentials: stored in `~/deepsql/.env`
30-
- If no LLM key: configure in Settings → AI Provider
30+
- If no LLM key: configure during onboarding in the web UI
3131

3232
The installer prints `NEEDS_USER_INPUT: ...` for missing optional inputs, then exits 0
3333
with all services healthy.

‎scripts/self-host/bootstrap-server.sh‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,6 @@ echo
225225
echo "Next steps:"
226226
echo " 1. Put a checkout of the DeepSQL source in $DEPLOY_DIR (git clone), if not already there."
227227
echo " 2. cd $DEPLOY_DIR && cp .env.example .env (skip if .env was created above)"
228-
echo " 3. Edit .env — at minimum DEEPSQL_CHAT_PROVIDER, DEEPSQL_CHAT_API_KEY,"
229-
echo " DEEPSQL_CHAT_ENDPOINT, DEEPSQL_CHAT_MODEL."
228+
echo " 3. Edit .env — at minimum DEEPSQL_LLM_API_KEY (or set it as an env var)."
229+
echo " Or skip it and configure during onboarding in the web UI."
230230
echo " 4. Run: ./scripts/self-host/install.sh"

‎scripts/self-host/install.sh‎

Lines changed: 54 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,21 @@
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
8689
Environment 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+
96102
Examples:
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
111117
For 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

‎scripts/self-host/remote-install.sh‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# or prompted.
1212
#
1313
# For AI agents (non-interactive):
14-
# DEEPSQL_CHAT_API_KEY=sk-... curl -fsSL https://deepsql.ai/install.sh | bash
14+
# DEEPSQL_LLM_API_KEY=sk-... curl -fsSL https://deepsql.ai/install.sh | bash
1515
#
1616
# Fallback (raw GitHub URL):
1717
# curl -fsSL https://raw.githubusercontent.com/DeepSQLAI/deepsql/main/scripts/self-host/remote-install.sh | bash
@@ -380,7 +380,7 @@ DeepSQL Remote Installer
380380
Usage: curl -fsSL https://deepsql.ai/install.sh | bash -s -- [options]
381381
382382
One command installs DeepSQL. The only input is an LLM key (optional—can be
383-
set later in Settings → AI Provider).
383+
set later during onboarding in the web UI).
384384
385385
Options:
386386
-h, --help Show this help message and exit
@@ -396,10 +396,10 @@ Options:
396396
Environment variables (override .env placeholders):
397397
DEEPSQL_HOME Installation directory (default: \$HOME/deepsql)
398398
DEEPSQL_REF Branch or tag to checkout (default: latest release)
399-
DEEPSQL_CHAT_API_KEY LLM key for chat (optional)
400-
DEEPSQL_CHAT_PROVIDER Provider id (default: openai)
401-
DEEPSQL_CHAT_ENDPOINT API endpoint
402-
DEEPSQL_CHAT_MODEL Model name
399+
DEEPSQL_LLM_API_KEY LLM key (optional - can set later in the web UI)
400+
DEEPSQL_LLM_PROVIDER Provider id (default: openai)
401+
DEEPSQL_LLM_BASE_URL API endpoint (default: https://api.openai.com/v1)
402+
DEEPSQL_LLM_MODEL Model name (default: gpt-4o)
403403
DEEPSQL_INITIAL_ADMIN_EMAIL Admin login email
404404
DEEPSQL_INITIAL_ADMIN_PASSWORD Admin password (generated if unset)
405405
@@ -408,7 +408,7 @@ Examples:
408408
curl -fsSL https://deepsql.ai/install.sh | bash
409409
410410
# With LLM key (non-interactive for AI agents)
411-
DEEPSQL_CHAT_API_KEY=sk-... curl -fsSL https://deepsql.ai/install.sh | bash
411+
DEEPSQL_LLM_API_KEY=sk-... curl -fsSL https://deepsql.ai/install.sh | bash
412412
413413
# Keyless install (configure LLM later in UI)
414414
DEEPSQL_INITIAL_ADMIN_EMAIL=admin@example.com \\
@@ -423,7 +423,7 @@ Examples:
423423
For AI agents:
424424
Ask the user for their LLM API key (OpenAI, Azure OpenAI, etc.), then run:
425425
426-
DEEPSQL_CHAT_API_KEY=<key> curl -fsSL https://deepsql.ai/install.sh | bash
426+
DEEPSQL_LLM_API_KEY=<key> curl -fsSL https://deepsql.ai/install.sh | bash
427427
428428
After install:
429429
Health: curl -fsS http://localhost:8080/api/actuator/health

0 commit comments

Comments
 (0)