Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
8fa0cc5
support a custom openai api base
matanor Jan 20, 2026
90f8b04
Merge remote-tracking branch 'remotes/upstream/main' into custom_open…
matanor Jan 29, 2026
cc2187b
fix merge
matanor Jan 29, 2026
1794b0d
further changes to support custom endpoints
matanor Jan 29, 2026
16a1ad4
add missing field
matanor Jan 29, 2026
c72358e
fix env var name
matanor Jan 29, 2026
e200f6b
openai providers startwith 'openai'
matanor Feb 1, 2026
830271f
revert to a single openai provider
matanor Feb 1, 2026
fe55622
revert to a single openai provider
matanor Feb 1, 2026
7f6ebe6
revert to a single openai provider
matanor Feb 1, 2026
787e5da
fix LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT
matanor Feb 1, 2026
371029f
throw if api_base is not in request or in configuration (as done for …
matanor Feb 1, 2026
6ccffb8
Merge branch 'main' into custom_openai_api_base
matanor Feb 8, 2026
4241f31
add OPENAI_API_BASE to add_provider_credentials_to_headers() and buil…
matanor Feb 8, 2026
6d2e809
add OPENAI_API_BASE as default for the api_base field of the OPENAI e…
matanor Feb 9, 2026
73ab1b3
add OPENAI_API_BASE to embedder and agent
matanor Feb 9, 2026
6624c4c
when updating an openai api_base, use the OPENAI_API_BASE
matanor Feb 9, 2026
9fbb7cc
add claude-opus to OpenAI allowed LLMs
matanor Feb 9, 2026
d95869c
feat: implement OpenRAG image management and cleanup functionality
ricofurtado Mar 2, 2026
07d4830
fix: Enhance EnvManager to preserve unmanaged .env variables during save
ricofurtado Mar 5, 2026
f29e35d
fix: Update EnvManager to use class-level regex for environment varia…
ricofurtado Mar 5, 2026
4b884ff
Update src/tui/utils/startup_checks.py
ricofurtado Mar 5, 2026
35f15c6
Update tests/unit/test_container_manager_cleanup.py
ricofurtado Mar 5, 2026
f844a85
Update Makefile
ricofurtado Mar 5, 2026
bb79471
Update tests/unit/test_env_manager.py
ricofurtado Mar 5, 2026
cbdb9e9
add index_name to SettingsUpdateOptions
matanor Mar 9, 2026
a51778b
feat(sdk): add filename_exists method to SDK and v1 API endpoint
matanor Mar 9, 2026
21aecf0
sdk version to 0.1.5
matanor Mar 9, 2026
4a1a39a
update openai_api_base when updating the template
matanor Feb 10, 2026
a1beeb2
fix for redundant /v1 extension
matanor Feb 23, 2026
b49315f
update OPEN_API_BASE env variable when the endpoint is loaded from th…
matanor Mar 9, 2026
66a595b
Merge remote-tracking branch 'remotes/origin/main' into custom_openai…
matanor Mar 9, 2026
8fc4ce3
update api_base setup in get_openai_models
matanor Mar 9, 2026
60a8639
Update CI runner labels to ephemeral
edwinjosechittilappilly Mar 9, 2026
2d506e9
Merge pull request #1056 from langflow-ai/1015-factory-reset-deletes-…
ricofurtado Mar 9, 2026
c761cc9
Merge pull request #1079 from langflow-ai/fix-change-runner
edwinjosechittilappilly Mar 9, 2026
ba10300
feat: Re-affirm Python 3.13 minimum version required for OpenRAG app …
mpawlow Feb 27, 2026
528192e
Merge pull request #1045 from langflow-ai/mp/fix/GH-1023-python-versi…
mpawlow Mar 9, 2026
2af1398
feat: upgrade langflow version (#682)
edwinjosechittilappilly Mar 9, 2026
226845f
fix: Refactor EnvManager to use class-level assignment pattern for en…
ricofurtado Mar 9, 2026
2d542b4
Update tests/unit/test_env_manager.py
ricofurtado Mar 9, 2026
5cab38d
Merge remote-tracking branch 'origin/sdk_for_ragworkbench' into test_…
matanor Mar 10, 2026
b971c4b
feat(sdk): add onboarding endpoint support for embedding model initia…
matanor Mar 10, 2026
23e995b
feat: add v1 onboarding endpoint with SDK client support
matanor Mar 10, 2026
8e47f40
Merge remote-tracking branch 'remotes/origin/sdk_for_ragworkbench' in…
matanor Mar 10, 2026
89c6354
feat: Settings UX should let you remove a model provider
mpawlow Mar 2, 2026
cc9e953
feat: Settings UX should let you remove a model provider
mpawlow Mar 10, 2026
a578776
feat: Settings UX should let you remove a model provider
mpawlow Mar 10, 2026
c006d45
Merge pull request #1062 from langflow-ai/mp/feat/GH-833-ability-to-r…
mpawlow Mar 10, 2026
3f02bb7
fix: use correct error handling for chat messages and ingestion (#859)
lucaseduoli Mar 10, 2026
b5cf547
Merge pull request #1069 from langflow-ai/1014-cannot-register-api-ke…
ricofurtado Mar 10, 2026
685ecd3
fix: pass effective jwt token to API calls (#1088)
lucaseduoli Mar 10, 2026
7708b69
Merge branch 'main' into sdk_for_ragworkbench
matanor Mar 11, 2026
b82f8d9
Merge remote-tracking branch 'remotes/origin/sdk_for_ragworkbench' in…
matanor Mar 11, 2026
7933211
chore: update uv.lock files after version bump
github-actions[bot] Mar 11, 2026
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
3 changes: 2 additions & 1 deletion .github/workflows/test-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ on:

jobs:
tests:
runs-on: [self-hosted, linux, ARM64, langflow-ai-arm64-40gb]
runs-on:
labels: ["self-hosted", "linux", "ARM64", "langflow-ai-arm64-40gb-ephemeral"]
env:
# Prefer repository/environment variable first, then secret, then a sane fallback
OPENSEARCH_PASSWORD: ${{ vars.OPENSEARCH_PASSWORD || secrets.OPENSEARCH_PASSWORD || 'OpenRag#2025!' }}
Expand Down
4 changes: 3 additions & 1 deletion Dockerfile.langflow
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
FROM langflowai/langflow-nightly:1.7.0.dev21
FROM langflowai/langflow:1.8.0

RUN pip install uv

EXPOSE 7860

Expand Down
53 changes: 48 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ REPO ?= https://github.com/langflow-ai/langflow.git

# Auto-detect container runtime: prefer docker, fall back to podman
CONTAINER_RUNTIME := $(shell command -v docker >/dev/null 2>&1 && echo "docker" || echo "podman")
OPENRAG_IMAGE_REPOS := langflowai/openrag-backend langflowai/openrag-frontend langflowai/openrag-langflow langflowai/openrag-opensearch langflowai/openrag-dashboards langflow/langflow opensearchproject/opensearch opensearchproject/opensearch-dashboards
# Only pass --env-file if the file actually exists
ifneq (,$(wildcard $(ENV_FILE)))
COMPOSE_CMD := $(CONTAINER_RUNTIME) compose --env-file $(ENV_FILE)
Expand Down Expand Up @@ -73,7 +74,7 @@ endef
# PHONY TARGETS
######################
.PHONY: help check_tools help_docker help_dev help_test help_local help_utils \
dev dev-cpu dev-local dev-local-cpu stop clean build logs \
dev dev-cpu dev-local dev-local-cpu dev-local-build-lf dev-local-build-lf-cpu stop clean build logs \
shell-backend shell-frontend install \
test test-unit test-integration test-ci test-ci-local test-sdk test-os-jwt lint \
backend frontend docling docling-stop install-be install-fe build-be build-fe build-os build-lf logs-be logs-fe logs-lf logs-os \
Expand Down Expand Up @@ -177,6 +178,8 @@ help_dev: ## Show development environment commands
@echo "$(PURPLE)Infrastructure Only:$(NC)"
@echo " $(PURPLE)make dev-local$(NC) - Start infrastructure only (for local backend/frontend)"
@echo " $(PURPLE)make dev-local-cpu$(NC) - Start infrastructure for local backend/frontend with CPU only"
@echo " $(PURPLE)make dev-local-build-lf$(NC) - Start infrastructure, building only Langflow image"
@echo " $(PURPLE)make dev-local-build-lf-cpu$(NC) - Same as above, with CPU only"
@echo ''
@echo "$(PURPLE)Branch Development (build Langflow from source):$(NC)"
@echo " $(PURPLE)make dev-branch$(NC) - Build & run with custom Langflow branch"
Expand Down Expand Up @@ -358,6 +361,32 @@ dev-local-cpu: ## Start infrastructure for local development, with CPU only
@echo ""
@echo "$(YELLOW)Now run 'make backend' and 'make frontend' in separate terminals$(NC)"

dev-local-build-lf: ## Start infrastructure for local development, building only Langflow image
@echo "$(YELLOW)Building Langflow image...$(NC)"
$(COMPOSE_CMD) -f docker-compose.yml -f docker-compose.gpu.yml build langflow
@echo "$(YELLOW)Starting infrastructure only (for local development)...$(NC)"
$(COMPOSE_CMD) -f docker-compose.yml -f docker-compose.gpu.yml up -d opensearch openrag-backend dashboards langflow
@echo "$(PURPLE)Infrastructure started!$(NC)"
@echo " $(CYAN)Backend:$(NC) http://openrag-backend"
@echo " $(CYAN)Langflow:$(NC) http://localhost:7860"
@echo " $(CYAN)OpenSearch:$(NC) http://localhost:9200"
@echo " $(CYAN)Dashboards:$(NC) http://localhost:5601"
@echo ""
@echo "$(YELLOW)Now run 'make backend' and 'make frontend' in separate terminals$(NC)"

dev-local-build-lf-cpu: ## Start infrastructure for local development, building only Langflow image with CPU only
@echo "$(YELLOW)Building Langflow image (CPU)...$(NC)"
$(COMPOSE_CMD) build langflow
@echo "$(YELLOW)Starting infrastructure only (for local development)...$(NC)"
$(COMPOSE_CMD) up -d opensearch openrag-backend dashboards langflow
@echo "$(PURPLE)Infrastructure started!$(NC)"
@echo " $(CYAN)Backend:$(NC) http://openrag-backend"
@echo " $(CYAN)Langflow:$(NC) http://localhost:7860"
@echo " $(CYAN)OpenSearch:$(NC) http://localhost:9200"
@echo " $(CYAN)Dashboards:$(NC) http://localhost:5601"
@echo ""
@echo "$(YELLOW)Now run 'make backend' and 'make frontend' in separate terminals$(NC)"

######################
# BRANCH DEVELOPMENT
######################
Expand Down Expand Up @@ -447,10 +476,24 @@ stop: ## Stop and remove all OpenRAG containers

restart: stop dev ## Restart all containers

remove-openrag-images: ## Remove OpenRAG-related images and dependencies (may affect other projects using shared images)
@echo "$(YELLOW)Removing OpenRAG-related images and dependencies...$(NC)"
@removed=0; total=0; \
for repo in $(OPENRAG_IMAGE_REPOS); do \
ids=$$($(CONTAINER_RUNTIME) images "$$repo" -q 2>/dev/null | sort -u); \
for id in $$ids; do \
total=$$((total+1)); \
if $(CONTAINER_RUNTIME) rmi -f "$$id" >/dev/null 2>&1; then \
removed=$$((removed+1)); \
fi; \
done; \
done; \
echo "$(PURPLE)Removed $$removed/$$total OpenRAG image(s).$(NC)"

clean: stop ## Stop containers and remove volumes
@echo "$(YELLOW)Cleaning up containers and volumes...$(NC)"
$(COMPOSE_CMD) down -v --remove-orphans
$(CONTAINER_RUNTIME) system prune -f
@$(MAKE) remove-openrag-images
@echo "$(PURPLE)Cleanup complete!$(NC)"

factory-reset: ## Complete reset (stop, remove volumes, clear data, remove images)
Expand All @@ -461,7 +504,7 @@ factory-reset: ## Complete reset (stop, remove volumes, clear data, remove image
echo " - Delete opensearch-data directory"; \
echo " - Delete config directory"; \
echo " - Delete JWT keys (private_key.pem, public_key.pem)"; \
echo " - Remove local OpenRAG images"; \
echo " - Remove OpenRAG images"; \
echo ""; \
echo ""; \
if [ "$(FORCE)" != "true" ]; then \
Expand Down Expand Up @@ -492,8 +535,8 @@ factory-reset: ## Complete reset (stop, remove volumes, clear data, remove image
rm -f keys/private_key.pem keys/public_key.pem; \
echo "$(PURPLE)JWT keys removed$(NC)"; \
fi; \
echo "$(YELLOW)Cleaning up system...$(NC)"; \
$(CONTAINER_RUNTIME) system prune -f; \
echo "$(YELLOW)Removing OpenRAG images...$(NC)"; \
$(MAKE) remove-openrag-images; \
echo ""; \
echo "$(PURPLE)Factory reset complete!$(NC)"; \
echo "$(CYAN)Run 'make dev' or 'make dev-cpu' to start fresh.$(NC)";
Expand Down
18 changes: 10 additions & 8 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ services:
- OPENSEARCH_USERNAME=${OPENSEARCH_USERNAME:-admin}
- OPENSEARCH_PASSWORD=${OPENSEARCH_PASSWORD}
- OPENAI_API_KEY=${OPENAI_API_KEY}
- OPENAI_API_BASE=${OPENAI_API_BASE:-None}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- WATSONX_API_KEY=${WATSONX_API_KEY}
- WATSONX_ENDPOINT=${WATSONX_ENDPOINT}
Expand Down Expand Up @@ -131,12 +132,13 @@ services:
- LANGFUSE_PUBLIC_KEY=${LANGFUSE_PUBLIC_KEY:-}
- LANGFUSE_HOST=${LANGFUSE_HOST:-}
- LANGFLOW_DEACTIVATE_TRACING
- OPENAI_API_KEY=${OPENAI_API_KEY:-None}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-None}
- WATSONX_API_KEY=${WATSONX_API_KEY:-None}
- WATSONX_ENDPOINT=${WATSONX_ENDPOINT:-None}
- WATSONX_PROJECT_ID=${WATSONX_PROJECT_ID:-None}
- OLLAMA_BASE_URL=${OLLAMA_ENDPOINT:-None}
- OPENAI_API_KEY=${OPENAI_API_KEY}
- OPENAI_API_BASE=${OPENAI_API_BASE}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- WATSONX_API_KEY=${WATSONX_API_KEY}
- WATSONX_URL=${WATSONX_URL:-${WATSONX_ENDPOINT}}
- WATSONX_PROJECT_ID=${WATSONX_PROJECT_ID}
- OLLAMA_BASE_URL=${OLLAMA_ENDPOINT}
- LANGFLOW_LOAD_FLOWS_PATH=/app/flows
- LANGFLOW_SECRET_KEY=${LANGFLOW_SECRET_KEY}
- JWT=None
Expand All @@ -159,8 +161,8 @@ services:
- FILENAME=None
- MIMETYPE=None
- FILESIZE=0
- SELECTED_EMBEDDING_MODEL=${SELECTED_EMBEDDING_MODEL:-}
- LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT=JWT,OPENRAG-QUERY-FILTER,OPENSEARCH_PASSWORD,OPENSEARCH_URL,DOCLING_SERVE_URL,OWNER,OWNER_NAME,OWNER_EMAIL,CONNECTOR_TYPE,DOCUMENT_ID,SOURCE_URL,ALLOWED_USERS,ALLOWED_GROUPS,FILENAME,MIMETYPE,FILESIZE,SELECTED_EMBEDDING_MODEL,OPENAI_API_KEY,ANTHROPIC_API_KEY,WATSONX_API_KEY,WATSONX_ENDPOINT,WATSONX_PROJECT_ID,OLLAMA_BASE_URL,OPENSEARCH_INDEX_NAME
- SELECTED_EMBEDDING_MODEL=${SELECTED_EMBEDDING_MODEL:-text-embedding-3-small}
- LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT=JWT,OPENRAG-QUERY-FILTER,OPENSEARCH_PASSWORD,OPENSEARCH_URL,DOCLING_SERVE_URL,OWNER,OWNER_NAME,OWNER_EMAIL,CONNECTOR_TYPE,DOCUMENT_ID,SOURCE_URL,ALLOWED_USERS,ALLOWED_GROUPS,FILENAME,MIMETYPE,FILESIZE,SELECTED_EMBEDDING_MODEL,OPENAI_API_KEY,OPENAI_API_BASE,ANTHROPIC_API_KEY,WATSONX_API_KEY,WATSONX_URL,WATSONX_PROJECT_ID,OLLAMA_BASE_URL,OPENSEARCH_INDEX_NAME
- LANGFLOW_LOG_LEVEL=DEBUG
- LANGFLOW_WORKERS=${LANGFLOW_WORKERS:-1}
- LANGFLOW_AUTO_LOGIN=${LANGFLOW_AUTO_LOGIN}
Expand Down
Loading
Loading