Skip to content

Commit 5f0c7d7

Browse files
authored
Feature/upgrade langflow 1.8.0 openwebui 0.8.8 (#34)
* chore: remove old langbuilder and openwebui dirs to prepare for git subtree * Squashed 'langbuilder/' content from commit dbe777eca git-subtree-dir: langbuilder git-subtree-split: dbe777ecaa51042f84c6f31629d59a6596835fd2 * Squashed 'openwebui/' content from commit 140605e66 git-subtree-dir: openwebui git-subtree-split: 140605e660b8186a7d5c79fb3be6ffb147a2f498 * feat: apply CloudGeometry patches on top of upstream subtrees - langbuilder_compat shim: redirects langbuilder.* imports to langflow.* - Dockerfiles: CloudGeometry labels, LANGBUILDER_IMAGE arg, correct frontend path - deploy/docker-compose.langbuilder.yml: map LANGBUILDER_* vars to LANGFLOW_* in container - CI: add langbuilder/langbuilder_compat/** to paths trigger * feat: add docker-compose.local-build.yml for building from source * chore: normalize font file line endings * Squashed 'langbuilder/' changes from dbe777ecaa..699e35688f 699e35688f LE-489: KB Metrics calculation batch caculator (#12049) REVERT: dbe777ecaa fix: pin wheel version git-subtree-dir: langbuilder git-subtree-split: 699e35688f1c6ba5a123f685e2ef6374ba404937 * Squashed 'openwebui/' changes from 140605e660..79f0437980 79f0437980 Merge pull request #22168 from open-webui/dev REVERT: 140605e660 Merge pull request #19462 from open-webui/dev git-subtree-dir: openwebui git-subtree-split: 79f04379801622181ef9c591374a285eac4e1c4d * fix: tune compose for local build — memory, healthcheck, speech, extra_hosts - langbuilder-backend: 1g→2g memory, 90s healthcheck start_period, extra_hosts for Linux (host.docker.internal:host-gateway) - openwebui: 2g memory, 60s healthcheck start_period, AUDIO_STT/TTS_ENGINE=openai env vars for voice support - langbuilder compose: add LANGFLOW_STT_OPENAI_API_KEY forwarded from OPENAI_API_KEY so Langflow playground speech works out of the box - local-build comment: clarify OpenWebUI→LangBuilder connection URL Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: upgrade LangBuilder to Langflow 1.8.0 + port CG components + OpenAI compat shim - Port all CloudGeometry, Chez Antoine, and Amazon custom components to lfx package - Add OpenAI-compatible API router (/v1/models, /v1/chat/completions) for OpenWebUI connection - Add langbuilder_compat v2.0.0 flow JSON migration for old flows on 1.8.0 - Add gpt-5.2-pro to model constants - Add CG sidebar categories (Cloud Geometry, Chez Antoine) to frontend - Add favicon.ico for Docker build - Tune compose files: memory limits, healthchecks, speech/ElevenLabs env vars * fix: make lock button clickable + enable voice mode - Lock button on canvas is now clickable to toggle lock state directly (was display-only with cursor-default and no onClick handler) - Install webrtcvad-wheels in Docker image so voice_mode_available=true (voice button now appears in playground chat when OPENAI_API_KEY is set) * feat: add enterprise components, GPT-5 reasoning support, Postgres compose, fix native tracing - Port 8 enterprise component folders to lfx: google_sheets, hubspot, salesforce, sap, servicenow, sharepoint, workday, zoho - Add reasoning_effort input to OpenAI chat model for GPT-5/o-series models - Enable Postgres service in docker-compose.langbuilder.yml - Comment out LangWatch env vars to prevent connection errors when no LangWatch instance - Fix native tracer: use langflow DB service instead of lfx noop, topologically sort spans to avoid FK violations - Disable nv-ingest extra (incompatible with newer openai SDK) - Regenerate component_index.json with all new components * chore: comment out Postgres in compose — default to SQLite for dev * fix: correct SQLite URI paths and default ports in deploy configs - Use 4-slash SQLite URIs (sqlite:////) for absolute paths in containers - Set explicit LANGFLOW_DATABASE_URL default to prevent fallback to package dir - Fix LANGBUILDER_CONFIG_DIR to use absolute path /app/langbuilder - Change default OpenWebUI port to 8767 to match EC2 security group - Add LANGBUILDER_AUTO_LOGIN to .env.example * fix: display version 1.8.0 when backend-only image has langflow-base 0.8.0 The backend-only Docker image installs langflow-base (0.8.0) without the top-level langflow (1.8.0) package. The version lookup was returning 0.8.0 causing the UI to show the wrong version. * chore: update deployment workflow to use Docker compose instead of bare metal
1 parent 8b0d588 commit 5f0c7d7

5,235 files changed

Lines changed: 826295 additions & 301653 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/deployment.yml

Lines changed: 6 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
2-
31
name: deployment
42

53
on:
@@ -27,52 +25,19 @@ jobs:
2725
key: ${{ secrets.DEV_SSH_KEY }}
2826
script: |
2927
set -ex
30-
source ~/.profile
3128
export BRANCH="${{ github.event.inputs.branch }}"
3229
export REPO_DIR="/home/ubuntu/cg_langbuilder/LangBuilder"
33-
export OPENWEBUI_DIR="$REPO_DIR/openwebui"
34-
export OPENWEBUI_BACKEND_DIR="$OPENWEBUI_DIR/backend"
35-
export LANGBUILDER_DIR="$REPO_DIR/langbuilder"
3630
3731
cd "$REPO_DIR"
3832
git stash
3933
git fetch origin
4034
git checkout "$BRANCH"
4135
git reset --hard "origin/$BRANCH"
42-
43-
set +e
44-
if [ -f /tmp/openwebui_backend.pid ]; then
45-
kill $(cat /tmp/openwebui_backend.pid) || true
46-
# rm /tmp/openwebui_backend.pid
47-
fi
48-
49-
if [ -f /tmp/langbuilder.pid ]; then
50-
kill $(cat /tmp/langbuilder.pid) || true
51-
# rm /tmp/langbuilder.pid
52-
fi
53-
set -e
54-
55-
56-
# Cargar nvm y usar Node >=20
57-
export NVM_DIR="$HOME/.nvm"
58-
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
59-
nvm use 22 || nvm install 22
60-
node -v
61-
npm -v
62-
63-
cd "$OPENWEBUI_DIR"
64-
npm install --legacy-peer-deps
65-
npm run build
66-
67-
cd "$OPENWEBUI_BACKEND_DIR"
68-
source ~/miniconda3/etc/profile.d/conda.sh
69-
conda activate open-webui
70-
nohup bash dev.sh > /tmp/openwebui_backend.log 2>&1 &
71-
conda deactivate
7236
73-
cd "$LANGBUILDER_DIR"
74-
nohup make run_cli > /tmp/langbuilder.log 2>&1 &
37+
cd deploy
38+
docker network create langbuilder-network 2>/dev/null || true
39+
docker compose pull
40+
docker compose -f docker-compose.langbuilder.yml -f docker-compose.openwebui.yml --env-file .env up -d
7541
76-
echo "Deploy completo en branch $BRANCH"
77-
tail -n 20 /tmp/openwebui_backend.log || true
78-
tail -n 20 /tmp/langbuilder.log || true
42+
echo "Deploy complete on branch $BRANCH"
43+
docker compose -f docker-compose.langbuilder.yml -f docker-compose.openwebui.yml ps

.github/workflows/docker-build-langbuilder.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ on:
2121
- "langbuilder/pyproject.toml"
2222
- "langbuilder/uv.lock"
2323
- "langbuilder/docker/**"
24+
- "langbuilder/langbuilder_compat/**"
2425
- ".github/workflows/docker-build-langbuilder.yml"
2526

2627
env:

deploy/.env.example

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
# ─── Shared / Cross-Service ─────────────────────────────────────────────────
99
OPENAI_API_KEY=sk-change-me
10+
ELEVENLABS_API_KEY=
1011
LANGWATCH_API_KEY=
1112
LANGWATCH_ENDPOINT=http://langwatch:5560
1213

@@ -19,7 +20,9 @@ LB_FRONTEND_TAG=latest
1920
LB_BACKEND_PORT=7860
2021
LB_FRONTEND_PORT=3000
2122

22-
# Database — SQLite by default (no env var needed).
23+
# Database — SQLite by default; Postgres optional.
24+
# NOTE: SQLite URIs need 4 slashes for absolute paths: sqlite:////app/...
25+
LANGBUILDER_DATABASE_URL=sqlite:////app/langbuilder/langflow.db
2326
# To switch to Postgres, uncomment and also enable the postgres service in docker-compose.langbuilder.yml:
2427
# LANGBUILDER_DATABASE_URL=postgresql://langbuilder:changeme-in-production@langbuilder-postgres:5432/langbuilder
2528
# LB_POSTGRES_USER=langbuilder
@@ -31,19 +34,22 @@ LB_FRONTEND_PORT=3000
3134
LANGBUILDER_SUPERUSER=admin
3235
LANGBUILDER_SUPERUSER_PASSWORD=changeme-in-production
3336

37+
# Auto login (set to true to bypass login page — for dev only)
38+
LANGBUILDER_AUTO_LOGIN=false
39+
3440
# App config dir inside the container
35-
LANGBUILDER_CONFIG_DIR=app/langbuilder
41+
LANGBUILDER_CONFIG_DIR=/app/langbuilder
3642

3743
# ─── OpenWebUI ──────────────────────────────────────────────────────────────
3844
# Image tag (GHCR — our fork)
3945
OPENWEBUI_TAG=latest
4046

41-
# Port (host)
42-
OPENWEBUI_PORT=8080
47+
# Port (host) — must match EC2 security group inbound rules
48+
OPENWEBUI_PORT=8767
4349

4450
# Database — SQLite by default; swap the line below for Postgres migration
45-
# SQLite (default):
46-
OPENWEBUI_DATABASE_URL=sqlite:///app/backend/data/webui.db
51+
# SQLite (default — 4 slashes for absolute path):
52+
OPENWEBUI_DATABASE_URL=sqlite:////app/backend/data/webui.db
4753
# Postgres (migration — uncomment and fill in):
4854
# OPENWEBUI_DATABASE_URL=postgresql://openwebui:changeme-in-production@openwebui-postgres:5432/openwebui
4955

deploy/docker-compose.langbuilder.yml

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,24 @@ services:
2727
ports:
2828
- "${LB_BACKEND_PORT:-7860}:7860"
2929
environment:
30-
- LANGBUILDER_DATABASE_URL=${LANGBUILDER_DATABASE_URL:-}
31-
- LANGBUILDER_CONFIG_DIR=${LANGBUILDER_CONFIG_DIR:-app/langbuilder}
30+
- LANGFLOW_DATABASE_URL=${LANGBUILDER_DATABASE_URL:-sqlite:////app/langbuilder/langflow.db}
31+
- LANGFLOW_CONFIG_DIR=${LANGBUILDER_CONFIG_DIR:-/app/langbuilder}
32+
- LANGFLOW_AUTO_LOGIN=${LANGBUILDER_AUTO_LOGIN:-false}
33+
- LANGFLOW_SUPERUSER=${LANGBUILDER_SUPERUSER:-}
34+
- LANGFLOW_SUPERUSER_PASSWORD=${LANGBUILDER_SUPERUSER_PASSWORD:-}
3235
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
33-
- LANGWATCH_API_KEY=${LANGWATCH_API_KEY:-}
34-
- LANGWATCH_ENDPOINT=${LANGWATCH_ENDPOINT:-http://langwatch:5560}
35-
- LANGBUILDER_SUPERUSER=${LANGBUILDER_SUPERUSER:-}
36-
- LANGBUILDER_SUPERUSER_PASSWORD=${LANGBUILDER_SUPERUSER_PASSWORD:-}
36+
- LANGFLOW_STT_OPENAI_API_KEY=${OPENAI_API_KEY:-}
37+
# LangWatch tracing — only set these if you have a LangWatch instance running.
38+
# Leaving LANGWATCH_API_KEY unset disables the LangWatch tracer entirely.
39+
# - LANGWATCH_API_KEY=${LANGWATCH_API_KEY}
40+
# - LANGWATCH_ENDPOINT=${LANGWATCH_ENDPOINT:-http://langwatch:5560}
41+
- ELEVENLABS_API_KEY=${ELEVENLABS_API_KEY:-}
42+
extra_hosts:
43+
- "host.docker.internal:host-gateway"
3744
deploy:
3845
resources:
3946
limits:
40-
memory: 1g
47+
memory: 2g
4148
cpus: "1.0"
4249
volumes:
4350
- langbuilder-app-data:/app/langbuilder
@@ -46,7 +53,7 @@ services:
4653
interval: 30s
4754
timeout: 10s
4855
retries: 5
49-
start_period: 30s
56+
start_period: 90s
5057
networks:
5158
- langbuilder-network
5259
logging:
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# =============================================================================
2+
# Local build override — builds images from source instead of pulling GHCR
3+
# =============================================================================
4+
# Usage (from repo root):
5+
#
6+
# # One-time setup
7+
# docker network create langbuilder-network
8+
# cp deploy/.env.example deploy/.env # fill in LANGBUILDER_SUPERUSER_PASSWORD, OPENAI_API_KEY
9+
#
10+
# # LangBuilder (builds main Dockerfile, runs frontend+backend on :7860)
11+
# docker compose \
12+
# -f deploy/docker-compose.langbuilder.yml \
13+
# -f deploy/docker-compose.local-build.yml \
14+
# --env-file deploy/.env up -d --build
15+
#
16+
# # OpenWebUI (builds from openwebui/Dockerfile, runs on :8080)
17+
# docker compose \
18+
# -f deploy/docker-compose.openwebui.yml \
19+
# -f deploy/docker-compose.local-build.yml \
20+
# --env-file deploy/.env up -d --build
21+
#
22+
# LangBuilder UI: http://localhost:7860
23+
# OpenWebUI: http://localhost:8080
24+
# → Connect OpenWebUI to LangBuilder via Admin > Connections:
25+
# URL: http://langbuilder-backend:7860/api/v1
26+
# APIKey: (your LANGFLOW_SUPERUSER api key from LangBuilder settings)
27+
# =============================================================================
28+
29+
services:
30+
langbuilder-backend:
31+
build:
32+
context: ../langbuilder
33+
dockerfile: docker/build_and_push.Dockerfile
34+
image: langbuilder-local:latest
35+
# Runs frontend + backend together — no separate nginx container needed locally
36+
command: ["langflow", "run", "--host", "0.0.0.0", "--port", "7860"]
37+
# Increase memory limit — 1g is too tight for Langflow 1.8.0
38+
deploy:
39+
resources:
40+
limits:
41+
memory: 2g
42+
cpus: "2.0"
43+
# Give more time on first boot (DB migrations on a fresh volume)
44+
healthcheck:
45+
start_period: 90s
46+
# Allows langbuilder to reach host services (e.g. local Ollama) on Linux
47+
extra_hosts:
48+
- host.docker.internal:host-gateway
49+
50+
# Skip the nginx frontend — langflow run already serves the UI at :7860
51+
langbuilder-frontend:
52+
profiles: ["skip"]
53+
54+
openwebui:
55+
build:
56+
context: ../openwebui
57+
dockerfile: Dockerfile
58+
image: openwebui-local:latest
59+
# Increase memory — OpenWebUI 0.8.8 is heavier than older versions
60+
deploy:
61+
resources:
62+
limits:
63+
memory: 2g
64+
cpus: "2.0"
65+
# Additional env vars for voice/speech support
66+
environment:
67+
- AUDIO_STT_ENGINE=openai
68+
- AUDIO_STT_OPENAI_API_BASE_URL=https://api.openai.com/v1
69+
- AUDIO_TTS_ENGINE=openai
70+
- AUDIO_TTS_OPENAI_API_BASE_URL=https://api.openai.com/v1
71+
# Give more time on first boot
72+
healthcheck:
73+
start_period: 60s

deploy/docker-compose.openwebui.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ services:
2121
ports:
2222
- "${OPENWEBUI_PORT:-8080}:8080"
2323
environment:
24-
- DATABASE_URL=${OPENWEBUI_DATABASE_URL:-sqlite:///app/backend/data/webui.db}
24+
- DATABASE_URL=${OPENWEBUI_DATABASE_URL:-sqlite:////app/backend/data/webui.db}
2525
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY:-}
2626
- OPENAI_API_KEY=${OPENAI_API_KEY:-}
2727
- OPENAI_API_BASE_URL=${OPENAI_API_BASE_URL:-}
@@ -36,10 +36,12 @@ services:
3636
- SCARF_NO_ANALYTICS=${SCARF_NO_ANALYTICS:-true}
3737
- DO_NOT_TRACK=${DO_NOT_TRACK:-true}
3838
- ANONYMIZED_TELEMETRY=${ANONYMIZED_TELEMETRY:-false}
39+
- AUDIO_STT_ENGINE=${AUDIO_STT_ENGINE:-openai}
40+
- AUDIO_TTS_ENGINE=${AUDIO_TTS_ENGINE:-openai}
3941
deploy:
4042
resources:
4143
limits:
42-
memory: 1g
44+
memory: 2g
4345
cpus: "1.0"
4446
volumes:
4547
- openwebui-app-data:/app/backend/data
@@ -50,7 +52,7 @@ services:
5052
interval: 30s
5153
timeout: 10s
5254
retries: 5
53-
start_period: 30s
55+
start_period: 60s
5456
networks:
5557
- langbuilder-network
5658
logging:

0 commit comments

Comments
 (0)