Skip to content

feat: minimal deployment mode#8293

Merged
evan-onyx merged 30 commits intomainfrom
feat/minimal-deployment-mode7
Feb 12, 2026
Merged

feat: minimal deployment mode#8293
evan-onyx merged 30 commits intomainfrom
feat/minimal-deployment-mode7

Conversation

@evan-onyx
Copy link
Copy Markdown
Contributor

@evan-onyx evan-onyx commented Feb 10, 2026

Description

Minimal version of Onyx. This deployment is primarily a chat frontend, with the ability to set up assistants that have access to manually uploaded files, but no connectors. This deployment method uses the following containers:

  1. Postgres
  2. Redis
  3. API server
  4. Web Server
  5. Background tasks
  6. (Optional) Nginx

Notably, this does not include

  • a vector db (set via DISABLE_VECTOR_DB=true)
  • a separate s3 container (minIO) (set via FILE_STORE_BACKEND=postgres)

launch a minimal onyx stack via docker-compose using

docker compose -f docker-compose.yml -f docker-compose.no-vectordb.yml -p $1 up -d --build
for helm you need to values a values override file with:

vectorDB:
  enabled: false

vespa:
  enabled: false

opensearch:
  enabled: false

How Has This Been Tested?

tested in UI and added some unit tests for basic chat behavior in the presence of file reader tool

Additional Options

  • [Required] I have considered whether this PR needs to be cherry-picked to the latest beta branch.
  • [Optional] Override Linear Check

Summary by cubic

Adds a minimal deployment mode to run Onyx without a vector database. Core chat works and can read large files via a new File Reader tool; connectors and RAG search are disabled and related endpoints return 501.

  • New Features

    • Strict gating: endpoints now use a require_vector_db dependency (/manage, admin search, ingestion, document/chunk info, search settings, send-search-message). DisabledDocumentIndex is the default index; Vespa/OpenSearch readiness checks are skipped; Celery autodiscovery filters index-related modules and prunes vector-DB beat tasks.
    • File Reader tool end-to-end: seeded by migration, treated as a built-in, now included in the default assistant, streams FILE_READER_START/RESULT packets with a new UI renderer; chat injects lightweight file metadata and can read chat-attached files via file_record; Search/OpenURL tools are unavailable when the vector DB is off; built-in tools are hidden from the user-visible list.
    • Settings/UI: server exposes vector_db_enabled; the UI hides search/connectors/document sets, ToolSelector/Agent Editor/Agent Knowledge adapt, and the Admin sidebar defaults to Assistants. FILE_TOKEN_COUNT_THRESHOLD defaults to 10M when the vector DB is disabled.
  • Migration

    • Enable with DISABLE_VECTOR_DB=true (or Helm values.vectorDB.enabled=false); disable Vespa/OpenSearch charts; use docker-compose.no-vectordb.yml overlay if composing. Helm gates indexing-model and docprocessing/docfetching workers and sets DISABLE_VECTOR_DB in the ConfigMap.
    • Expect 501 on gated endpoints listed above.
    • Assistants: only user_files are allowed; document_sets, hierarchy_nodes, and attached_documents are rejected when the vector DB is off.

Written for commit 527afa2. Summary will update on new commits.

@evan-onyx evan-onyx requested a review from a team as a code owner February 10, 2026 03:24
Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

5 issues found across 64 files

Prompt for AI agents (all issues)

Check if these issues are valid — if so, understand the root cause of each and fix them.


<file name="backend/onyx/tools/tool_implementations/file_reader/file_reader_tool.py">

<violation number="1" location="backend/onyx/tools/tool_implementations/file_reader/file_reader_tool.py:150">
P2: Validate start_char/num_chars and raise a ToolCallException on invalid numeric input instead of letting int() raise ValueError/TypeError.</violation>
</file>

<file name="backend/onyx/chat/llm_loop.py">

<violation number="1" location="backend/onyx/chat/llm_loop.py:221">
P1: The token budget calculation (lines 164-165 in original file) subtracts `project_files.total_token_count`, which presumably accounts for full file texts. When this fallback branch is taken to use `file_metadata_for_tool`, the actual message size may differ significantly from `total_token_count`.

1. If `total_token_count` is 0 (metadata-only mode), the budget is not reduced, risking context overflow when the metadata message is added.
2. If `total_token_count` includes full texts, the budget is over-reduced, causing unnecessary history truncation.

The budget calculation should be conditional on which project message type is actually used.</violation>
</file>

<file name="backend/tests/integration/tests/no_vectordb/conftest.py">

<violation number="1" location="backend/tests/integration/tests/no_vectordb/conftest.py:20">
P2: Add a timeout to the `requests.get` call so test collection doesn't hang indefinitely when the server is slow or unreachable.</violation>
</file>

<file name="backend/tests/integration/tests/no_vectordb/test_no_vectordb_chat.py">

<violation number="1" location="backend/tests/integration/tests/no_vectordb/test_no_vectordb_chat.py:125">
P2: The wait loop can exit without confirming the file was processed, so the test can proceed in a bad state and fail later. Add an explicit timeout assertion after the loop (or a flag) to fail fast when the file never becomes available.</violation>
</file>

<file name="backend/tests/unit/onyx/document_index/test_disabled_document_index.py">

<violation number="1" location="backend/tests/unit/onyx/document_index/test_disabled_document_index.py:68">
P1: Rule violated: **Use Pydantic over dataclasses**

Use Pydantic BaseModel for data modeling instead of Python dataclasses in new code (rule: Use Pydantic over dataclasses).</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

from dataclasses import dataclass, field

# We only need a stub — the method raises before inspecting arguments.
@dataclass
Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai bot Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: Rule violated: Use Pydantic over dataclasses

Use Pydantic BaseModel for data modeling instead of Python dataclasses in new code (rule: Use Pydantic over dataclasses).

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At backend/tests/unit/onyx/document_index/test_disabled_document_index.py, line 68:

<comment>Use Pydantic BaseModel for data modeling instead of Python dataclasses in new code (rule: Use Pydantic over dataclasses).</comment>

<file context>
@@ -0,0 +1,191 @@
+    from dataclasses import dataclass, field
+
+    # We only need a stub — the method raises before inspecting arguments.
+    @dataclass
+    class _StubBatchParams:
+        doc_id_to_previous_chunk_cnt: dict[str, int] = field(default_factory=dict)
</file context>
Fix with Cubic


raw_file_id = cast(str, llm_kwargs[FILE_ID_FIELD])
file_id = self._validate_file_id(raw_file_id)
start_char = max(0, int(llm_kwargs.get(START_CHAR_FIELD, 0)))
Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai bot Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Validate start_char/num_chars and raise a ToolCallException on invalid numeric input instead of letting int() raise ValueError/TypeError.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At backend/onyx/tools/tool_implementations/file_reader/file_reader_tool.py, line 150:

<comment>Validate start_char/num_chars and raise a ToolCallException on invalid numeric input instead of letting int() raise ValueError/TypeError.</comment>

<file context>
@@ -0,0 +1,196 @@
+
+        raw_file_id = cast(str, llm_kwargs[FILE_ID_FIELD])
+        file_id = self._validate_file_id(raw_file_id)
+        start_char = max(0, int(llm_kwargs.get(START_CHAR_FIELD, 0)))
+        num_chars = min(
+            MAX_NUM_CHARS,
</file context>
Fix with Cubic

def _server_has_vector_db_disabled() -> bool:
"""Query the running server to check whether DISABLE_VECTOR_DB is set."""
try:
resp = requests.get(
Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai bot Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Add a timeout to the requests.get call so test collection doesn't hang indefinitely when the server is slow or unreachable.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At backend/tests/integration/tests/no_vectordb/conftest.py, line 20:

<comment>Add a timeout to the `requests.get` call so test collection doesn't hang indefinitely when the server is slow or unreachable.</comment>

<file context>
@@ -0,0 +1,42 @@
+def _server_has_vector_db_disabled() -> bool:
+    """Query the running server to check whether DISABLE_VECTOR_DB is set."""
+    try:
+        resp = requests.get(
+            f"{API_SERVER_URL}/settings",
+            headers=GENERAL_HEADERS,
</file context>
Fix with Cubic

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Feb 10, 2026

Greptile Overview

Greptile Summary

This PR introduces a “no vector DB” deployment mode controlled by DISABLE_VECTOR_DB / vectorDB.enabled. It gates all vector-DB-dependent API endpoints (returning HTTP 501), filters Celery autodiscover + beat schedules to avoid indexing/sync tasks, and skips Vespa/indexing-model setup at startup.

To preserve basic chat + project workflows without Vespa/OpenSearch, it adds a FileReaderTool (seeded via Alembic) plus runtime wiring so the LLM can read user-uploaded files by offset on demand, and adjusts frontend/admin UI to hide search/connectors/document-management features when vector_db_enabled is false.

Confidence Score: 3/5

  • This PR is close to mergeable but has a couple of correctness issues in chat metadata handling and Helm env wiring that should be fixed first.
  • Most changes are straightforward feature gating for no-vector-DB deployments and are backed by integration/unit tests. However, ExtractedProjectFiles.file_metadata_for_tool uses a shared mutable default, and the file-metadata context message is injected as a USER message (likely contaminating user history). Helm config also doesn’t explicitly clear DISABLE_VECTOR_DB when vectorDB.enabled=true, which can cause mismatched runtime behavior after upgrades.
  • backend/onyx/chat/models.py, backend/onyx/chat/llm_loop.py, deployment/helm/charts/onyx/templates/configmap.yaml

Important Files Changed

Filename Overview
backend/alembic/versions/d3fd499c829c_add_file_reader_tool.py Adds Alembic migration to seed/update FileReaderTool in tool table and remove persona associations on downgrade.
backend/ee/onyx/background/celery/apps/background.py Wraps EE task autodiscovery list with filter_task_modules() to skip vector-DB-dependent tasks when DISABLE_VECTOR_DB is set.
backend/ee/onyx/background/celery/apps/heavy.py Wraps EE heavy worker task autodiscovery list with filter_task_modules() for no-vector-DB mode.
backend/ee/onyx/background/celery/apps/light.py Wraps EE light worker task autodiscovery list with filter_task_modules() for no-vector-DB mode.
backend/ee/onyx/background/celery/apps/monitoring.py Wraps EE monitoring worker task autodiscovery list with filter_task_modules() for no-vector-DB mode.
backend/ee/onyx/background/celery/apps/primary.py Wraps EE primary worker task autodiscovery list with filter_task_modules() for no-vector-DB mode.
backend/ee/onyx/server/query_and_chat/search_backend.py Adds require_vector_db dependency to /send-search-message endpoint to return 501 when vector DB is disabled.
backend/onyx/background/celery/apps/app_base.py Skips Vespa/OpenSearch readiness checks and filters task module autodiscovery lists when DISABLE_VECTOR_DB is true.
backend/onyx/background/celery/apps/background.py Wraps task autodiscovery list with filter_task_modules() to avoid registering vector-DB tasks in no-vector-DB mode.
backend/onyx/background/celery/apps/docfetching.py Wraps docfetching task autodiscovery list with filter_task_modules() for no-vector-DB mode.
backend/onyx/background/celery/apps/docprocessing.py Wraps docprocessing task autodiscovery list with filter_task_modules() for no-vector-DB mode.
backend/onyx/background/celery/apps/heavy.py Wraps heavy worker autodiscovery list with filter_task_modules() for no-vector-DB mode.
backend/onyx/background/celery/apps/light.py Wraps light worker autodiscovery list with filter_task_modules() for no-vector-DB mode.
backend/onyx/background/celery/apps/monitoring.py Wraps monitoring worker autodiscovery list with filter_task_modules() for no-vector-DB mode.
backend/onyx/background/celery/apps/primary.py Wraps primary worker autodiscovery list with filter_task_modules() for no-vector-DB mode.
backend/onyx/background/celery/apps/user_file_processing.py Wraps user_file_processing worker autodiscovery list with filter_task_modules() (though this worker itself is not vector-DB dependent).
backend/onyx/background/celery/tasks/beat_schedule.py Filters vector-DB-dependent beat tasks when DISABLE_VECTOR_DB is set to avoid scheduling indexing/sync/migration work.
backend/onyx/background/celery/tasks/user_file_processing/tasks.py Adds no-vector-DB user file processing path that stores plaintext and completes files without indexing; gates delete/sync vector DB operations behind DISABLE_VECTOR_DB.
backend/onyx/chat/llm_loop.py Adds file-metadata context injection for FileReaderTool; current implementation injects it as a USER message (likely wrong role) and adds an optional token_counter param.
backend/onyx/chat/models.py Adds FileToolMetadata model and new ExtractedProjectFiles.file_metadata_for_tool field; currently uses a mutable default list (should use default_factory).
backend/onyx/chat/process_message.py Builds FileReaderTool access control list from chat/project/persona files; when DISABLE_VECTOR_DB and project is too large, injects lightweight file metadata for tool-based reading.
backend/onyx/configs/app_configs.py Adds DISABLE_VECTOR_DB env flag to gate vector DB-dependent features at runtime.
backend/onyx/document_index/disabled.py Introduces DisabledDocumentIndex that raises for all vector-DB operations to fail fast when DISABLE_VECTOR_DB is enabled.
backend/onyx/document_index/factory.py Returns DisabledDocumentIndex (single or list) from document index factory functions when DISABLE_VECTOR_DB is true.
backend/onyx/server/documents/connector.py Gates entire /manage connector router behind require_vector_db dependency so connector endpoints return 501 without vector DB.
backend/onyx/server/documents/document.py Adds require_vector_db dependency to document size/chunk info endpoints so they return 501 when vector DB is disabled.
backend/onyx/server/features/document_set/api.py Avoids scheduling Vespa sync celery tasks on document set changes when DISABLE_VECTOR_DB is true.
backend/onyx/server/features/persona/api.py Adds validation to reject vector-DB-dependent knowledge attachments (document sets/nodes/docs) when DISABLE_VECTOR_DB is enabled; allows user_files.
backend/onyx/server/manage/search_settings.py Gates search settings mutation endpoints behind require_vector_db (501 when vector DB disabled).
backend/onyx/server/onyx_api/ingestion.py Gates ingestion upsert/delete endpoints behind require_vector_db dependency (501 when vector DB disabled).
backend/onyx/server/query_and_chat/query_backend.py Gates admin search endpoint behind require_vector_db to return 501 without vector DB.
backend/onyx/server/settings/api.py Adds vector_db_enabled flag to settings response based on DISABLE_VECTOR_DB.
backend/onyx/server/settings/models.py Extends UserSettings model with vector_db_enabled boolean for frontend feature gating.
backend/onyx/server/utils_vector_db.py Adds FastAPI dependency require_vector_db() that raises HTTP 501 when DISABLE_VECTOR_DB is set.
backend/onyx/setup.py Skips document index setup, embedding warm-up, and multitenant Vespa setup when DISABLE_VECTOR_DB is enabled.
backend/onyx/tools/built_in_tools.py Registers FileReaderTool as a built-in tool type and adds it to built-in tool map.
backend/onyx/tools/constants.py Adds FILE_READER_TOOL_ID and FILE_READER_TOOL_NAME constants for the new FileReaderTool.
backend/onyx/tools/tool_constructor.py Adds FileReaderToolConfig and constructs FileReaderTool with per-request allowed file IDs; disables forced SearchTool insertion when vector DB is disabled.
backend/onyx/tools/tool_implementations/file_reader/file_reader_tool.py Implements FileReaderTool (read_file) that reads plaintext sections of user-uploaded files, restricted to an allowed file ID list.
backend/onyx/tools/tool_implementations/open_url/open_url_tool.py Disables OpenURLTool availability entirely when DISABLE_VECTOR_DB is enabled (it requires id_based_retrieval).
backend/onyx/tools/tool_implementations/search/search_tool.py Adds early return False from SearchTool.is_available when DISABLE_VECTOR_DB is enabled.
backend/tests/integration/tests/migrations/test_tool_seeding.py Updates expected built-in tool seeding to include FileReaderTool (now 9 total).
backend/tests/integration/tests/no_vectordb/conftest.py Adds integration test fixtures that auto-skip when server reports vector_db_enabled=true and ensures an LLM provider exists.
backend/tests/integration/tests/no_vectordb/test_no_vectordb_chat.py Adds integration coverage for chat + projects + personas in no-vector-DB mode, including FileReaderTool usage and persona validation.
backend/tests/integration/tests/no_vectordb/test_no_vectordb_endpoints.py Adds integration tests verifying vector-DB-dependent endpoints return 501 and non-dependent endpoints still work when DISABLE_VECTOR_DB is set.
backend/tests/unit/onyx/document_index/test_disabled_document_index.py Adds unit tests ensuring DisabledDocumentIndex methods all raise the standard RuntimeError and names remain accessible.
backend/tests/unit/onyx/tools/test_no_vectordb.py Adds unit tests for tool availability gating in DISABLE_VECTOR_DB mode (Search/OpenURL unavailable, FileReader always available).
deployment/docker_compose/docker-compose.no-vectordb.yml Adds docker-compose overlay to run without Vespa/indexing model server and sets DISABLE_VECTOR_DB=true while making dependencies optional.
deployment/helm/charts/onyx/templates/celery-worker-docfetching-hpa.yaml Gates docfetching HPA creation on .Values.vectorDB.enabled so it is not deployed in no-vector-DB mode.
deployment/helm/charts/onyx/templates/celery-worker-docfetching-scaledobject.yaml Gates docfetching KEDA scaledobject creation on .Values.vectorDB.enabled for no-vector-DB deployments.
deployment/helm/charts/onyx/templates/celery-worker-docfetching.yaml Gates docfetching worker deployment on .Values.vectorDB.enabled (and replicaCount) for no-vector-DB mode.
deployment/helm/charts/onyx/templates/celery-worker-docprocessing-hpa.yaml Gates docprocessing HPA creation on .Values.vectorDB.enabled so it is not deployed in no-vector-DB mode.
deployment/helm/charts/onyx/templates/celery-worker-docprocessing-scaledobject.yaml Gates docprocessing KEDA scaledobject creation on .Values.vectorDB.enabled for no-vector-DB deployments.
deployment/helm/charts/onyx/templates/celery-worker-docprocessing.yaml Gates docprocessing worker deployment on .Values.vectorDB.enabled (and replicaCount) for no-vector-DB mode.
deployment/helm/charts/onyx/templates/configmap.yaml Adds Helm toggle for vectorDB to set DISABLE_VECTOR_DB=true and omit indexing host when disabled; currently does not explicitly set DISABLE_VECTOR_DB=false when enabled.
deployment/helm/charts/onyx/templates/indexing-model-deployment.yaml Gates indexing model server deployment on .Values.vectorDB.enabled (and replicaCount) for no-vector-DB mode.
deployment/helm/charts/onyx/templates/indexing-model-service.yaml Gates indexing model server Service on .Values.vectorDB.enabled for no-vector-DB mode.
deployment/helm/charts/onyx/values.yaml Adds vectorDB.enabled Helm value to centrally toggle vector DB-dependent components and set DISABLE_VECTOR_DB.
web/src/app/admin/configuration/default-assistant/page.tsx Passes hideSearchTool flag based on settings.vector_db_enabled to hide SearchTool in default assistant config when vector DB is disabled.
web/src/app/admin/settings/interfaces.ts Extends Settings interface with vector_db_enabled optional flag to match backend settings response.
web/src/app/app/components/tools/constants.ts Adds FILE_READER_TOOL_ID constant for frontend tool mapping/selection.
web/src/refresh-pages/AgentEditorPage.tsx Uses settings.vector_db_enabled to choose SearchTool vs FileReaderTool when knowledge is enabled and passes vectorDbEnabled to knowledge pane.
web/src/sections/knowledge/AgentKnowledgePane.tsx Adds vectorDbEnabled prop to hide document sets/connected sources UI when vector DB is disabled (user files still shown).
web/src/sections/sidebar/AdminSidebar.tsx Hides connector/document-management sections and search settings link in admin sidebar when settings.vector_db_enabled is false.

Sequence Diagram

sequenceDiagram
    participant User
    participant API as API Server
    participant Settings as /settings
    participant Chat as Chat handler
    participant Tools as construct_tools
    participant FR as FileReaderTool
    participant Store as FileStore

    User->>API: GET /settings
    API->>Settings: fetch_settings()
    Settings-->>API: vector_db_enabled = !DISABLE_VECTOR_DB
    API-->>User: settings JSON

    User->>API: POST /chat/... message
    API->>Chat: handle_stream_message_objects()
    Chat->>Chat: collect available_file_ids (chat files + project files + persona user_files)
    Chat->>Tools: construct_tools(file_reader_tool_config)
    Tools-->>Chat: tools include FileReaderTool with allowed IDs
    Chat->>API: run_llm_loop(...)

    Note over User,FR: In no-vector-DB mode, LLM reads file sections on demand

    User->>FR: tool call read_file(file_id, start_char, num_chars)
    FR->>Store: load_user_file(file_id)
    Store-->>FR: plaintext bytes (if available)
    FR-->>User: section text response
Loading

Copy link
Copy Markdown
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

64 files reviewed, 3 comments

Edit Code Review Agent Settings | Greptile

Comment on lines 345 to +369

def _create_file_tool_metadata_message(
file_metadata: list[FileToolMetadata],
token_counter: Callable[[str], int],
) -> ChatMessageSimple:
"""Build a lightweight metadata-only message listing files available via FileReaderTool.

Used when files are too large to fit in context and the vector DB is
disabled, so the LLM must use ``read_file`` to inspect them.
"""
lines = [
"You have access to the following files. Use the read_file tool to "
"read sections of any file:"
]
for meta in file_metadata:
lines.append(
f'- {meta.file_id}: "{meta.filename}" (~{meta.approx_char_count:,} chars)'
)

message_content = "\n".join(lines)
return ChatMessageSimple(
message=message_content,
token_count=token_counter(message_content),
message_type=MessageType.USER,
)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wrong message role
_create_file_tool_metadata_message() returns a ChatMessageSimple with message_type=MessageType.USER. This injects synthetic metadata as a user message, which will be treated as user instruction/history rather than context (and can affect downstream logic that counts/filters user messages). This should be MessageType.SYSTEM (or whatever role you use for non-user context injections) to avoid contaminating conversation history.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Feb 10, 2026

Additional Comments (1)

deployment/helm/charts/onyx/templates/configmap.yaml
Missing env when enabled
When .Values.vectorDB.enabled is true this template sets INDEXING_MODEL_SERVER_HOST but never sets DISABLE_VECTOR_DB to "false". Since app_configs.DISABLE_VECTOR_DB is derived from an env var, a cluster that previously ran with DISABLE_VECTOR_DB=true can keep that stale value on upgrade if the env var is still present elsewhere. Consider explicitly setting DISABLE_VECTOR_DB: "false" in the enabled branch so the runtime flag reliably matches the Helm toggle.

@evan-onyx evan-onyx force-pushed the feat/minimal-deployment-mode7 branch from ce9c51c to edd4bc4 Compare February 10, 2026 17:39
@evan-onyx evan-onyx force-pushed the feat/minimal-deployment-mode7 branch from edd4bc4 to 7fd8ded Compare February 11, 2026 08:47
@evan-onyx evan-onyx changed the title Feat/minimal deployment mode7 feat: minimal deployment mode Feb 11, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Feb 11, 2026

Preview Deployment

Status Preview Commit Updated
https://onyx-preview-8wj2fa0m9-danswer.vercel.app 527afa2 2026-02-11 23:45:30 UTC

@evan-onyx evan-onyx mentioned this pull request Feb 11, 2026
2 tasks
@evan-onyx evan-onyx added this pull request to the merge queue Feb 11, 2026
Merged via the queue into main with commit 67b5df2 Feb 12, 2026
83 checks passed
@evan-onyx evan-onyx deleted the feat/minimal-deployment-mode7 branch February 12, 2026 00:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants