Changelog
What changed in each DeepFellow release.
This page lists DeepFellow releases starting with 0.32.0.
0.36.0 – October 21, 2026
This release tightens the default network exposure of CLI installs, lets vector stores feed the knowledge graph automatically, and versions the documentation by release.
Highlights
-
Services published only where you need them:
deepfellow server installnow publishes MongoDB and the--devports on127.0.0.1only, the new--bind-addressoption publishes the API port on one address, and DeepFellow Infra now sends security headers andCache-Control: no-storeon its API responses. See DeepFellow Server. -
Vector stores feed the knowledge graph: The new
knowledge_graphvector store policy ingests every file the vector store finishes processing into the project's knowledge graph, and ontology discovery now warns about or merges entity types that mean the same thing throughgraph.ontology_discovery_semantic_fold_mode. See Knowledge Graph.The policy needs the knowledge graph enabled on DeepFellow Server and a reachable RabbitMQ.
graph.ontology_discovery_semantic_fold_modedefaults towarn, so types are merged only after you set it tomerge. -
Installs that warn before they fail:
deepfellow suite installprints the estimated VRAM of its template's models before it asks for anything,deepfellow server installwarns that a local Qdrant does not suit large data volumes, and adding a custom vLLM model rejects a Hugging Face repository that does not exist or that DeepFellow Infra cannot access. See DeepFellow Suite.The VRAM estimate covers model weights only. The context window and runtime overhead come on top.
-
More stable DeepFellow Server: The server image no longer crashes at startup with exit code
132on CPUs without AVX-512, Milvus no longer fails withDEADLINE_EXCEEDEDwhen you create a vector store or start the server, and cancelled or unreadable files no longer leave orphaned vectors or retry in vain. See Using Vector Stores. -
Documentation versioned by release: The documentation has a version dropdown with the current 0.36.x release and the archived 0.33.x, 0.34.x, and 0.35.x trees, search covers only the version you read, and the API reference matches DeepFellow Server 0.36.0. See Welcome to DeepFellow Docs.
-
Newer model engines: New installs default to vLLM
v0.32.0, SGLangv0.5.22, and llama.cppb11783, and the Ollama, vLLM, SGLang, and llama.cpp model catalogs are refreshed. See DeepFellow Infra Web Panel.Installed models keep their image until you update them with the Update action or the image version field.
Also in This Release
- Alias targets in the model list:
GET /v1/modelswithadditional_data=truenow reportsprops.alias_of, the models an alias points to. See Listing Models. - Anonymization of models called by alias: The
df_anonymizeplugin now also anonymizes requests to a listed model that you call by its DeepFellow Infra alias. See Plugins. - Plain-text transcriptions:
POST /v1/audio/transcriptionswithresponse_format=textnow returns plain text for every backend, including backends that answer with JSON. See Speech to Text. - Form defaults for models installed through the API: A model that you install or edit through the API with partial settings now gets the same defaults as the DeepFellow Infra Web Panel form, and existing models keep their settings until you edit them.
- Masked Doc Chunker API key: The
infra_api_keyfield of Doc Chunker is now a password field, masked in the DeepFellow Infra Web Panel. See Doc Chunker. - Stable operation IDs: Every DeepFellow Server API operation now has an explicit
snake_caseoperationId, so generated API clients keep their method names across releases. --yesanswers every question:--yesnow applies to every yes/no question of the CLI, includingserver * deleteandserver project archive. See DeepFellow Server.- RabbitMQ settings stay in
config.json:deepfellow server env setno longer writesDF_RABBITMQ_*to.envwhen DeepFellow Server manages the RabbitMQ settings, and points you todeepfellow server config set. See DeepFellow Server. - Mesh in the
infra connecthelp: The help ofdeepfellow infra connectanddisconnectnow calls the network a Mesh. See DeepFellow Infra. - Changelog page: The documentation now has this page.
Breaking Changes
MongoDB and --dev ports listen on 127.0.0.1 only: After deepfellow server install, the bundled MongoDB and the ports that --dev publishes are no longer reachable from other hosts. To publish them on all interfaces again, run deepfellow server env set INTERNAL_BIND_ADDRESS "". See DeepFellow Server.
$ in container environment values is escaped: DeepFellow Infra now passes $ literally, so pa$word reaches the container intact and ${VAR} is no longer expanded. Existing containers pick this up on their next start, and the bge-m3, lemmatizer, and Doc Chunker containers are recreated once.
0.35.0 – October 15, 2026
This release makes the Nightshift worker a required part of every install, rebuilds the knowledge graph on FalkorDB, and covers fine-tuning from a project's documents to a served model.
Highlights
-
Background jobs that are never lost: Vector store file processing, Metadata Expansion, Document Summarization, knowledge graph ingestion, ontology discovery, webhook delivery, and embedding migrations now always run on the Nightshift worker through RabbitMQ, which
deepfellow server installandsuite installalways set up, and the newdeepfellow server nightshiftcommands and the Queues page manage it. See Nightshift Background Jobs. -
Knowledge graph on FalkorDB: DeepFellow Server now builds knowledge graphs on FalkorDB and GraphRAG-SDK, drafts a per-project ontology from sampled files with
POST /v1/graph/ontology/propose, ingests files concurrently and without duplicates, and answers questions withPOST /v1/graph/completion. See Knowledge Graph and Knowledge Graph Ontology. -
Fine-tuning from documents to a served model: The new Finetune service in DeepFellow Infra trains LoRA adapters, vLLM serves them on their base model through
adapter_id, and scheduled fine-tuning pipelines in DeepFellow Server generate training data from a project's vector stores, evaluate each adapter, and promote it only when it beats the version in service. See Fine-Tuning Pipelines.The default
blue_greenserving strategy keeps two copies of the base model in GPU memory during a switch. Pipelines need a df-finetune worker with eval support. -
Documents from upload to search: Doc Chunker
v2.4.0now converts every file as a job of up to two hours,POST /v1/uploadsaccepts large files in parts, theknowledge_compressionpolicy adds file summaries to search, andPOST /v1/migratemoves a project's vector stores to a new embedding model while search keeps working. See Doc Chunker, Uploading Large Files, and Vector Store Embedding Migration. -
Safer defaults: DeepFellow Server sends security headers and forbids caching of API responses, DeepFellow Infra compares keys in constant time and refuses sub-infras without a mesh key,
GET /metricsrejects requests without credentials, and the CLI writes secret files with owner-only permissions and moves MongoDB off the root account. See Security and Control. -
GPU memory shared by priority: vLLM and SGLang models now reserve GPU memory with
gpu_priority, a share of the free memory set with a slider that previews the allocation, and two installs started together can no longer get more memory than is left. See DeepFellow Infra Web Panel. -
One-click model and service updates: The DeepFellow Infra Web Panel has an Update action, and
deepfellow infra model updateandinfra service updatemove a model or service to the newest image of its variant, with a warning when that image needs a newer NVIDIA driver. See Updates. -
Observability across the stack: Optional Sentry error tracking, LLM token usage in OpenTelemetry, per-model
usageandcapacity,available_capacityinGET /info,X-Error-Idon unhandled DeepFellow Infra errors, and Nightshift metrics and health checks show what the platform is doing. See Observability.
Also in This Release
- Multiple webhooks per project: A project now has any number of webhook endpoints, each with its own URL, secret, and event types, managed through
/v1/organization/projects/{project_id}/webhooksand the DeepFellow Server Web Panel. See Webhooks. - Leave an organization:
DELETE /v1/organization/users/melets a user leave an organization without an owner's help, unless they are its only owner. See Authorization. - Fine-tuning in the Web Panel: DeepFellow Server's Web Panel now uploads training files, creates and cancels fine-tuning jobs, and registers fine-tuning workers, and fine-tuning jobs accept OpenAI's
metadata. See DeepFellow Server Web Panel. - Finetune adapters listed:
GET /admin/services/{service_id}/adaptersand the Finetune service page list the LoRA adapters of a Finetune service. See Finetuning. - Adapter registry found automatically: DeepFellow Infra now resolves the df-finetune adapter registry from the installed Finetune service, and the
adapter_registry_urlsetting is removed fromconfig.jsonautomatically. - Vector store expiry enforced: A vector store's
expires_afterpolicy now deletes the store when it expires, activity resets the countdown, andexpires_atis computed correctly. See Using Vector Stores. - Summaries in the document's language: Document summaries are now written in the document's own language, reused when you summarize again with the same settings, and flagged
truncatedwhen the document is too long to summarize in full. See Document Summarization. - New summarization and image description defaults: New installs default
summarization_modeltogemma4:12banddoc_chunker_picture_description_modeltogemma4:e4b, which frees about 4 GB of VRAM. See Configuration. - Metadata Expansion limits and robustness: Metadata Expansion requests are limited to 1000 documents and 50 fields, the prompt ignores instructions inside the document, and answers that are not JSON objects fail with a clear error. See Metadata Expansion.
- Models in the Server Configuration card: The DeepFellow Server Web Panel now edits
metadata_expansion_modelandsummarization_model. See DeepFellow Server Web Panel. - Document Summarization button is back: The project page shows the Document Summarization button again. See Document Summarization.
- Organizations page paginated: The Organizations page of the DeepFellow Server Web Panel now lists every organization, 20 per page, with a filter by name. See DeepFellow Server Web Panel.
- Content type on files: Uploaded files now report
content_type, taken from the upload or guessed from the filename once. - Image generation from tools works again: Image generation from toolboxes and
/v1/responsesno longer fails before the request reaches DeepFellow Infra. See Image Generation. - Downloads with non-Latin filenames:
GET /v1/files/{file_id}/contentno longer fails with a500for a filename with Polish letters, an en dash, or a double quote. - Files without text fail at once: A file with no extractable text now fails on its first attempt with
invalid_fileinstead of retrying five times. See Using Vector Stores. - Failed vector inserts reported: A file whose vectors were not inserted is now marked
failedand retried instead ofcompleted, and a completed retry clears the previouslast_error. - Vector store deletes without orphans or errors: Deleting a vector store or one of its files during indexing no longer leaves orphaned vectors or logs errors.
- Graph ingestion status fixes:
POST /v1/graph/files/{file_id}/ingestreturnscompletedwhen there is nothing to ingest and503when RabbitMQ is down, and ontology warnings stay with their own documents. See Knowledge Graph. /v1/responsesusage covers tool calls:usagenow counts the tokens of every model call made while running server-side tools.- Dependency failures return
502or504: Errors from DeepFellow Infra, Doc Chunker, and the reranker now return502or504instead of500, and a wrong Infra API key onPOST /v1/vector_storesreturns500instead of a raw401. - RabbitMQ connection holds: DeepFellow Server connects to RabbitMQ in the background with retries, creates every Nightshift queue it checks, and no longer drops the connection when a queue is missing. See Nightshift Background Jobs.
- Fixed Nightshift queue names: The Nightshift queue names are no longer configurable, and their settings are ignored if set.
- MCP fixes in DeepFellow Server: MCP tools no longer report false errors for servers without prompts or resources, and the MCP toolbox endpoints no longer send a second response after the stream ends. See MCP Servers.
- Repeated headers kept: Proxied responses and the anonymization plugin no longer drop repeated HTTP headers such as several
Set-Cookie. - Default organization reassigned: Removing a user from an organization or deleting it now moves the user's default organization to another one they belong to. See Authorization.
- Uniform time fields: DeepFellow Server now stores every time field as a BSON date, and several timestamps are no longer frozen at process startup.
- Commit in
GET /info: DeepFellow Infra and DeepFellow Server report the commit of the running image inGET /info. - No hang after empty proxied responses: DeepFellow Infra and DeepFellow Server no longer hang at high CPU after proxying a second response without a body, such as a
204. - Clearer startup and environment errors: The unsupported vector database error lists the supported providers, and
example.envreadsDF_VECTOR_DATABASE__SEARCH__*_NUM_RESULTScorrectly. See Configuration. - Toolbox tool update schema: The API reference documents the real update body of
POST /toolboxes/{toolbox_id}/tools/{tool_id}. - Tracing and metrics fixes: Failed spans now get
ERRORstatus and request attributes, unhandled500responses appear inhttp_server_request_duration_seconds, time to first token reports real values,gen_ai_server_tokens_per_secondcovers every chat route, andgen_ai.usage.output_tokensreplacesresponse.tokens. See Observability. keep_alivefor speaches-ai: The speaches-ai install form has akeep_alivefield for how long an idle speech model stays loaded. See Text to Speech.- Container-name suffix: A container-name suffix lets two DeepFellow Infra instances share a Docker host, and new installs get a random one. See Configuration.
- Quantization dropdown: The
quantizationfield of vLLM models, including custom ones, is now a dropdown of the supported values. See Custom Models. - Vision and audio support in the model list: The model list now reports whether each model accepts image and audio input. See Listing Models.
- Refreshed model catalogs: New installs default to llama.cpp
b11641, vLLMv0.31.0, and SGLangv0.5.21-cu130, and the vLLM and SGLang catalogs now cover the top 200 models by likes. See Supported Models. - No Test action for LoRA models: The DeepFellow Infra Web Panel no longer offers Test for LoRA models. See DeepFellow Infra Web Panel.
- MCP across the Mesh: An MCP server installed on a child Infra is now usable through its parent, and an MCP server that fails three health checks in a row is hidden until it recovers. See MCP Servers.
- Fixed MCP catalog entries: The brave-search, web-search, and DuckDuckGo MCP servers now install and list their tools. See Websearch.
extra_argswith JSON: vLLM and SGLang models with JSON inextra_args, such as--speculative-config, now start correctly. See Custom Models.- Remote models report their real endpoints: Embedding, speech, and image models of remote services now list their own endpoints in
props.endpoints, and remote API URLs work with or without a trailing slash or/v1. See Listing Models. - vLLM on ARM without a GPU: vLLM is no longer reported as unsupported on ARM hosts without a GPU. See Hardware Requirements.
- Stable Diffusion Next on macOS: The services list now shows upfront that Stable Diffusion Next does not support macOS. See Image Generation.
- Accurate Ollama VRAM estimates: Ollama VRAM estimates now use each model's own
kv_cache_type. - Clear errors for quantized custom Ollama models: Installing a custom Ollama model with a quantization option on a GGUF source now fails before any download with a clear error. See Custom Models.
- Safer commands inside containers: Commands DeepFellow Infra runs inside a service container now pass each value as one argument, so file paths with spaces work.
- Background failures logged: Failures of the parent Mesh connection, the Ollama External model sync, and the MCP tools fetch now appear in the logs. See Logs and Status.
- Configuration retries reapply: Retrying
PUT /admin/configafter a partial failure now reapplies what failed. - Cancelling updates waits for the rollback: Cancelling a service update now keeps the service in its installing state, labelled Rolling back, until the automatic rollback finishes. See DeepFellow Infra Web Panel.
suite install --allow-rootful:deepfellow suite install --allow-rootfulruns non-interactively on a host with rootful Docker, and the Docker check now runs before the admin prompts. See DeepFellow Suite.- Rootful Docker from
DOCKER_HOST: The rootful Docker warning now also covers a socket fromDOCKER_HOSTor the activedocker context. See DeepFellow Infra. - Model install configuration in the CLI:
deepfellow infra model install --spectakes a model's install configuration as JSON. See DeepFellow Infra. - No
qwen3.5:4bin the workspace template:deepfellow suite installno longer installsqwen3.5:4b. See DeepFellow Suite. config getprintskey: value:deepfellow server config getandinfra config getnow printkey: valuelines instead of raw JSON. See DeepFellow Server.- Updates run with the new CLI:
deepfellow updatenow runs the Infra and Server steps with the freshly updated CLI. See Updates. server update --yes:deepfellow server update --yesrestarts without asking, and--local-imagealso pins the Nightshift image. See DeepFellow Server.nightshift queueagainst newer servers:deepfellow server nightshift queueno longer crashes withKeyError: 'nightshift_enabled'. See DeepFellow Server.- Clearer API reference types: The API reference now shows each field's real type or enum values and full model type names, and the API playground renders enum fields as a select.
Breaking Changes
Nightshift and RabbitMQ are required: DeepFellow Server no longer processes background jobs without the Nightshift worker, which needs RabbitMQ and the server's storage. Update the CLI first, then run deepfellow server update, which offers to add both. See Nightshift Background Jobs.
Metrics and Infra credentials are required: DF_METRICS_USERNAME, DF_METRICS_PASSWORD, and DF_INFRA__API_KEY must be set. Installs created with a CLI older than 0.2.1 need deepfellow server install again before the update. See Configuration.
RabbitMQ settings move to config.json: DF_RABBITMQ_URL only seeds the new rabbitmq section, which you change afterwards through PUT /admin/config. See Configuration.
Doc Chunker is always used: The doc_chunker_use setting and the built-in text extraction are removed, so a file that Doc Chunker cannot read fails with its status. See Doc Chunker.
Knowledge graph API replaced: The /v1/graph/episodes endpoints of the earlier Graphiti backend are removed, and graph data from that backend is not migrated, so ingest your files again. num_results is ignored on POST /v1/graph/search and /completion. See Knowledge Graph.
Project webhooks move to their own endpoints: webhook_url and webhook_secret are no longer accepted or returned on the project endpoints. Use /v1/organization/projects/{project_id}/webhooks. See Webhooks.
Metric names and labels changed: DeepFellow Server's metric labels, buckets, and names changed, so check your dashboards and alerts. See Observability.
vLLM and SGLang extra_args reach the container as entered: Each key and value is now one argument, so check extra_args that combine a flag and its value or rely on quotes. See Custom Models.
alias adds a name, rename replaces it: The per-model alias option now registers a second name, and the old meaning is called rename. See DeepFellow Infra Web Panel.
SGLang defaults to CUDA 13: The default SGLang image needs an NVIDIA driver R580 or newer. On an older driver, select v0.5.19-cu129. See DeepFellow Infra Web Panel.
Sub-infras need a mesh key: A sub-infra no longer joins the Mesh of an Infra without a mesh key, so set one to accept sub-infras. See Configuration.
Finetune replaces the custom deepfellow-finetune model: The custom deepfellow-finetune model is removed on the first start after the upgrade, and the Finetune service now authenticates with adapter_registry_secret. See Finetuning.
Coqui TTS removed: DeepFellow Infra no longer manages Coqui TTS, so remove its containers manually.
CLI 0.34.1 – September 25, 2026
This DeepFellow CLI patch adds infra model list and Project webhook options, and fixes .env quoting and Docker error handling.
Also in This Release
-
List models on a service:
deepfellow infra model listshows the models available on an Infra service with their ID, type, size, description, and installed status, and--installedor--no-installedfilters the list. See DeepFellow Infra. -
Project webhook options:
deepfellow server project createandupdatenow accept--webhook-urland--webhook-secret, and a Project'swebhook_secretappears masked as*****when you display the Project. See DeepFellow Server. -
Template choice for
suite install:deepfellow suite installnow accepts--templatewith a built-in template name (defaultworkspace) and passes it to both the Infra and Server installs. See DeepFellow Suite.deepfellow suite install --templateaccepts only a built-in template name that both Infra and Server provide. A path to a template file fails, unlikedeepfellow infra install --templateanddeepfellow server install --template. -
Post-start actions in
suite install:deepfellow suite installnow runs everypost_start_actionsentry of the selected Server template instead of always running a single admin creation. See DeepFellow Suite. -
Spinner during service and model installs:
deepfellow infra service installanddeepfellow infra model installnow show an "Installing service/model ..." spinner from the moment the install starts, so the CLI no longer looks frozen before the first progress bar appears. See DeepFellow Infra. -
Help listing for command groups: A command group such as
deepfellow infraordeepfellow server organizationnow prints its--helplisting when you run it without a subcommand, instead of a "Missing command." error. See DeepFellow CLI Reference. -
Docker checks before more commands:
start,stop,restart,update,logs,ssl-on,env set, andinfra connectanddisconnectnow check up front that Docker is installed, running, and usable, including thedocker composeplugin, and print a clear DeepFellow error instead of a raw Docker error. -
.envvalues with special characters: Values that contain a backslash, a double quote, or a newline, such as theDF_PLUGINS_SETUPJSON, are no longer corrupted when an install re-reads and re-writes a config or secrets file, and a line that is notKEY=VALUEnow logs a warning instead of being dropped silently. -
MongoDB prompt order in
server install: The interactive MongoDB setup now asks for the username and password before the database name and connection URL, which removes the ambiguity about whether credentials belong in the URL. See DeepFellow Server. -
Readable prompts in
infra install:deepfellow infra installnow labels its prompts "Name", "URL", "Admin API Key", "Infra API Key", and "Mesh Key" instead of raw names such asDF_NAMEorDF_MESH_KEY, and the.envkeys stay the same. See DeepFellow Infra.
Server 0.34.1 – September 17, 2026
This DeepFellow Server patch fixes how vector store search reports a missing reranker model.
Also in This Release
-
Clear error for a missing reranker model:
POST /v1/vector_stores/{vector_store_id}/searchnow returns404with "Reranker model not found" instead of a500error when the configured reranker model is missing on Infra, and the API reference documents the response. See Vector store search API reference.If your client checks for status
500when vector store search fails because the reranker model is missing, check for404instead.
0.34.0 – September 16, 2026
This release adds batch Document Summarization, replaces MinIO with SeaweedFS for Milvus object storage, and makes failed or unwanted service installs and updates easier to recover from.
Highlights
-
Document Summarization:
POST /v1/summarization/summarizesummarizes batches of uploaded documents in the background, with configurable summary length and style, and the DeepFellow Server Web Panel has a new Document Summarization page. See Document Summarization. -
SeaweedFS replaces MinIO for Milvus:
deepfellow server installnow sets up Milvus object storage with SeaweedFS's S3 gateway, because Docker Hub no longer serves the pinned MinIO image, which made Milvus installs fail. See DeepFellow Server.An existing install with data in the old MinIO container is offered an automatic migration, or the option to keep the old container, the next time
deepfellow server installordeepfellow suite installruns against that directory. If the old container is still running, the installer asks you to stop it withdeepfellow server stopfirst. -
Cancel an in-progress service install or update: The DeepFellow Infra Web Panel has a new Cancel button for a service that is installing or updating, and
POST /admin/services/{service_id}/canceldoes the same through the API, stopping the Docker work and returning the service to a clean state that accepts a retry. See DeepFellow Infra Web Panel. -
Failed service updates roll back: When editing a service's settings fails, DeepFellow Infra now reverts to the previous working configuration and reloads its previously installed models, instead of leaving the service uninstalled. See DeepFellow Infra Web Panel.
DeepFellow Infra reports the update as failed only after the revert finishes. If the revert fails too, the service is fully uninstalled and needs a fresh install instead of a retry.
-
Background jobs run without RabbitMQ: With
DF_NIGHTSHIFT_ENABLEDset tofalse, the default, Metadata Expansion and Document Summarization process documents in-process instead of through RabbitMQ, andPOST /v1/metadata/expandno longer returns503. See Nightshift Background Jobs.In-process jobs get a single attempt per document, with no broker-driven retry or backoff. Call a job's
retryendpoint to try a failed document again. -
Cancel Metadata Expansion jobs:
POST /v1/metadata/jobs/{job_id}/cancel, or the new Cancel button on the Metadata Expansion page of the DeepFellow Server Web Panel, permanently stops an active or paused job, for example after you start the same batch twice by mistake. See Metadata Expansion.
Also in This Release
- OTLP log export reconfiguration no longer blocks the API: Reconfiguring OTLP log export through
/admin/configno longer blocks the DeepFellow Infra API for up to about 30 seconds when the collector is unreachable, and a failed reconfiguration no longer permanently disables log-export retries. See Observability. - OTLP log export shuts down cleanly: DeepFellow Infra now shuts down OTLP log export when the app exits, giving buffered log records a chance to flush. See Observability.
- Clearer startup errors in DeepFellow Server: DeepFellow Server now logs a clear message when it fails to connect to a dependency at startup, such as RabbitMQ, MongoDB, or the vector database, naming the dependency, its configured target, and the environment variable to check.
suite installno longer crashes onwebhook_url:deepfellow suite installanddeepfellow server install --templateno longer crash with an unhandledTypeErrorat the workspace-creation step against a server that returns awebhook_urlfield on projects. See DeepFellow Suite.- Failed CLI requests no longer overwrite saved config:
deepfellow infra service list,deepfellow infra service uninstall, anddeepfellow infra model uninstallno longer save a resolved server URL or admin API key to the local config and secrets files until a request made with them succeeds, so a wrong--urlor a rejected API key no longer overwrites a working configuration. See DeepFellow Infra.
Breaking Changes
DF_RABBITMQ_ENABLED is now DF_NIGHTSHIFT_ENABLED: DeepFellow Server 0.34.0 does not read the old name. If your .env sets DF_RABBITMQ_ENABLED=true, rename it to DF_NIGHTSHIFT_ENABLED=true when you upgrade. Otherwise Nightshift stays off, and jobs run in-process with a single attempt. See Nightshift Background Jobs.
0.33.0 – September 11, 2026
Vector store file batches with webhooks, Markdown output for converted files, and a resumable deepfellow suite install lead this release, which also changes how DeepFellow Server calls Doc Chunker.
Highlights
-
Attach many files to a vector store as one job:
POST /v1/vector_stores/{vector_store_id}/file_batchesingests uploaded files as a single trackable, cancellable job, and a project with awebhook_urlreceives a signed, best-effort webhook when the batch completes, fails, or is cancelled. See Using Vector Stores. -
Get a file's text as Markdown, and choose how images appear: The new
GET /v1/files/{file_id}/textreturns an uploaded file's text,output_format=mdkeeps headings, tables, and lists,image_modesets how pictures appear (including links served by the newGET /v1/files/{file_id}/assets/{name}), andimage_processing_modenow also applies to vector store ingestion. See Doc Chunker.The Doc Chunker install form in the Infra Web Panel now asks for one inference gateway address and an optional API key for image descriptions and audio transcription, and adds LibreOffice conversion timeout and parallel image descriptions settings. The picture-description mode selector, the HuggingFace preset and local options, and the HuggingFace token field are gone. A Doc Chunker installed with the old form keeps its old settings until you reinstall or edit it.
-
Extract metadata from uploaded documents in the background:
POST /v1/metadata/expandstarts a job that fills user-defined fields such as author or title, reading embedded PDF and DOCX properties first and asking an LLM for the rest, andGET /v1/metadata/jobs/{job_id}returns the job. See Metadata Expansion.Metadata expansion needs RabbitMQ. RabbitMQ is optional and off by default (
DF_RABBITMQ_ENABLED=false), andPOST /v1/metadata/expandreturns503while it is off. Anightshiftworker process runs the jobs. -
Resume
deepfellow suite installwhere it stopped:deepfellow suite installnow asks for all infra and server configuration up front and saves its progress after each of its 14 steps, and--resumecontinues from the first unfinished step, re-checks the finished ones, repairs what drifted, and reuses the admin credentials saved by the first run. See DeepFellow Suite. -
Manage toolboxes and MCP servers from the CLI:
deepfellow server toolboxanddeepfellow server toolcreate, list, get, update, and delete Toolboxes and their tools, anddeepfellow infra mcpadds, installs, lists, uninstalls, and removes MCP servers on Infra. See DeepFellow Server. -
Refresh model catalogs without a redeploy: An admin calls
POST /admin/services/{service_id}/catalog/refresh, or uses the Refresh catalog action in the model list, to reload the vLLM, llama.cpp, and SGLang model lists from HuggingFace, and Claude and Google services now refresh from the provider's live model listing. See DeepFellow Infra Web Panel.Runtime refresh works only when the
static/directory is writable. It shares one HuggingFace rate-limit budget across vLLM, llama.cpp, and SGLang, and it refuses to write a catalog that shrank suspiciously compared to the one it replaces. -
Cancel and retry installs without leftovers: Cancelling an install stops its
docker composeprocess, a cancelled or failed MCP model install removes its container, and retrying an install that is still running waits for its real outcome, whiledeepfellow infra service installanddeepfellow infra model installretry every 10 seconds for up to 24 hours instead of aborting with an "already installing" error. -
Look up every setting and response body: A new Configuration guide lists every DeepFellow Server and Infra
.envvariable with itsconfig.jsonfield, description, and default, and the API reference now documents response bodies that previously had no schema. See Configuration.
Also in This Release
- Doc Chunker settings show the speech-to-text model: The admin WebUI's Doc Chunker settings show
doc_chunker_picture_description_model(defaultgranite3.2-vision:2b) and the newdoc_chunker_stt_model(defaultSystran/faster-whisper-large-v3). See Doc Chunker. - Image mode for metadata expansion:
POST /v1/metadata/expandacceptsimage_processing_mode(ignoreordescription, defaultignore) for its fallback document conversion, and logs a warning when the cached conversion used a different mode or Doc Chunker is disabled. See Doc Chunker. require_approvalis validated on update: Updating an MCP, Infra MCP, or web search tool with an invalidrequire_approvalvalue returns400instead of storing it. See Using Tools.- MCP proxy errors are logged: Infra MCP and web search tool proxies log the underlying error when a call to a remote MCP server fails, so a misbehaving server shows up in the Server logs.
- Mismatched image mode warning on file text:
GET /v1/files/{file_id}/textlogs a warning when the requestedimage_processing_modediffers from the mode recorded in the file's cached conversion. additional_datais described in the OpenAPI spec: Theadditional_dataquery parameter onGET /v1/modelsandGET /v1/models/{model_id}is now described in the OpenAPI spec:trueadds apropsobject and makes the response not OpenAI-compatible, while the defaultfalsereturns the plain OpenAI shape. See Listing Models.- MCP health checks emit OpenTelemetry metrics: MCP server health checks and OAuth token refreshes emit OpenTelemetry metrics (
mcp.healthcheck.count,mcp.healthcheck.duration, andmcp.oauth.refresh.count) and spans whenotel_tracing_enabledis on. - Servable-repo check for custom vLLM models: Adding a custom vLLM model by HuggingFace ID checks up front that the repo is servable, and returns a clear error for GGUF or quantized repos, LLM repos without a usable chat template, and reranker repos with an unsupported architecture.
- Longer default proxy timeout: The default
standard_proxy_timeout_secondsis now 600 seconds instead of 300, and a value already saved inconfig.jsonstays as it is. See Custom Service. - Registry tokens apply immediately: Changing the Civitai, Hugging Face, or adapter registry token through
PUT /admin/configor the settings page takes effect for model downloads immediately, without a restart. - Custom endpoints work through a parent node: A custom endpoint installed only on a child node in a node mesh works through the parent node's proxy.
- MCP transport mismatch fixed: An MCP server that works over only one transport is re-registered on the transport its health check found working, instead of returning empty tools and results.
- Failed installs keep adopted containers: A failed install that adopted an existing container leaves that container running.
- Adopted containers respond to stop, restart, and uninstall: Stopping, restarting, or uninstalling a service whose container was adopted acts on that container.
- Install guard and stuck-setup timeout: A second install or update request for a service instance that is already installing meets the "already installing" guard, and the install-progress endpoint returns
504instead of hanging when setup is stuck. - Editing catalog models no longer fails: Editing a catalog model's install-time options (for example
gpu_memory_utilization) or an installed custom model's definition works for services such as vLLM, instead of failing with a500error. - Better reranker and embedding discovery: The vLLM and SGLang reranker and embedding catalogs find models through HuggingFace's
pipeline_tagas well as by name (for exampleBAAI/bge-m3), skip cross-encoders trained for other tasks, and drop a candidate whose lookup fails instead of listing made-up data. - Plain-text admin password warning:
deepfellow suite installwarns once per run that its state file stores the admin password in plain text, which a successful run removes and an abandoned run leaves for you to delete. - Template prompts are asked up front:
infra install --templateandserver install --templateask for every post-start prompt up front, before running any action: admin credentials forserver.create_admin, and connection and spec-field prompts for each model and service install. - Confirmation before discarding an unfinished run:
deepfellow suite installwithout--resumeasks before discarding the progress of an unfinished run (--yesskips the prompt), declining continues that run, and--non-interactivestarts fresh. - Quieter
--resumeoutput:deepfellow suite install --resumeskips the repeatedUpdated .../config.andUpdated .../secrets.messages before each Ollama install step. - No upfront summary on
--resume:deepfellow suite install --resumeprints no upfront summary of completed steps, because each step reports "already completed, skipping" as it is reached. - Clear message for a corrupted state file: A corrupted
workspaceorapi_keyfield in thesuite installstate file stops--resumewith a message to remove the file and start fresh. - Atomic state file writes: The
suite installstate file is written atomically, so a crash or Ctrl+C mid-write leaves no corrupted file. nullcompleted_stepsis tolerated:deepfellow suite install --resumetreats anullcompleted_stepsfield in the state file like a missing one.- Warning for ignored admin credentials:
deepfellow suite installwarns when an admin name, email, or password you supplied by flag or at the prompt is ignored because an admin with that email already exists. --debugshows Docker errors:deepfellow suite install --debugshows the specific Docker error when infra or server start fails, instead of a generic message.- Warning for an unreadable state file:
deepfellow suite installwarns when its state file exists but fails to read or parse. - Template installs skip configured fields:
server install --templateandinfra install --templatedo not re-prompt for a field that an earlier install already configured in.envorconfig.json. - Reinstalls accept an existing admin: A
server install --templatereinstall andsuite install --resumetreat an admin that already exists as a successful no-op, while the standalonedeepfellow server create-adminstill reports an error for an existing admin. - Registry tag pick-list:
infra service installandinfra mcp installoffer a pick-list of the image's real Docker registry tags for adocker-tagsfield, and fall back to a free-text prompt when the registry is unreachable or lists no tags. infra mcp listshows the real state:deepfellow infra mcp listshows each server's real install state and, for a custom server, its actualcustom_spec.- Install errors show the backend message:
infra service install,infra model install, andinfra mcp installshow the backend's error message when it rejects an install with a status other than400,401, or403(for example422), instead of failing with aResponseNotReaderror. infra mcp addchecks the name first:deepfellow infra mcp addreports a name that is already taken before it asks for a config.- Field descriptions render on one line: A field description that contains a line break renders on one line in
infra service fields,infra mcp list, and install prompts. - OpenCode tutorial: A new tutorial covers integrating OpenCode with DeepFellow as an OpenAI-compatible provider, including
opencode.json, UI-based setup, and DeepFellow-hosted MCP servers. See Integrate with OpenCode. - Listing Models guide: A new guide covers
GET /v1/modelsandGET /v1/models/{model_id}, theadditional_dataparameter, the fields ofprops, and how project permissions filter the list. See Listing Models. - Hardware recommendations state their context length: The model recommendations table states the context length it assumes: 8K, alongside the
Q4_K_Mquantization. See Hardware Requirements. - Knowledge Graph documentation withdrawn: The Knowledge Graph guide no longer appears in the docs navigation, and the
graph.*settings, the/v1/graphendpoints, and the relateddeepfellow server installanddeepfellow suite installflags are no longer documented until the next version of the feature ships. - SMTP settings point to the Configuration guide: The Server Web Panel page links to the Configuration guide for SMTP and invitation-permission settings, and its examples use
deepfellow server config set, which dynamic settings need. See DeepFellow Server Web Panel. - Send button visible in dark mode: The API reference playground's Send button is visible in dark mode.
- Borders visible in dark mode: Borders, including the sidebar section guide line, are visible in dark mode.
- Install Templates sections are expanded: The Install Templates sections of
deepfellow serveranddeepfellow infraand the Non-Interactive Mode section ofdeepfellow suiteare no longer collapsed in accordions, so the table of contents links to visible content. - Command group headings in the CLI reference: The
deepfellow server,deepfellow infra,deepfellow suite, anddeepfellow otelreference pages have a heading above the first command group, so their commands appear in the table of contents. require_approvalexamples match the server: Therequire_approvalexamples use the form the server accepts: MCP, Infra MCP, and web search tools take a list of tool names per approval mode ({"always": ["remove_db"]}), and custom tools take an approval mode per tool name ({"remove_db": "always"}). See Using Tools.
Breaking Changes
- Update Doc Chunker together with DeepFellow Server: Server now calls Doc Chunker through
/convertand/chunkinstead of/textand/chunks, and sendsvision_modelandstt_model. Deploy a Doc Chunker that accepts them before or together with the new Server: a Server that runs ahead of it silently drops image descriptions. See Doc Chunker. POST /text_converter/textreturns plain text: It returnstext/plaininstead of the JSON body{"blocks": [...], "warnings": [...]}.as_attachmentis removed fromimage_processing_mode: Onlyignoreanddescriptionremain.
0.32.0 – September 1, 2026
This release surfaces service and model failures, routes requests to the best-placed instances, and tightens the API.
Highlights
-
Failures are visible and recoverable: A service or model that fails to install or load now appears as a dismissible warning on a new Warnings page, with a sidebar count badge, in the Infra Web Panel, and installed models keep their definitions through catalog refreshes and failed loads. See DeepFellow Infra Web Panel.
-
Smarter model routing: Requests now go to already-warm, higher-capacity instances first and fill the fewest instances before spilling over, and a child Infra now sees and routes to its parent Infra's models. See Architecture.
Sharing models with child Infras is controlled by the new
share_models_downstreamoption, which is on by default. -
New ways to serve models: DeepFellow Infra adds an SGLang service and a Docker Model Runner service, installs GLiNER entity extraction as a custom service, and lets custom vLLM and SGLang models target a specific HuggingFace revision. See Custom Models.
The Docker Model Runner service requires Docker Desktop 4.40 or later with Docker Model Runner enabled. Its
vllm-metalbackend requires macOS on Apple Silicon. -
Apache-2.0 default reranker and sturdier vector stores: The default reranker is now
BAAI/bge-reranker-v2-m3(Apache-2.0) instead ofjinaai/jina-reranker-v2-base-multilingual(CC-BY-NC-4.0), and vector stores no longer fail every file and search when the embedding model reports no context window. See Configuration.Only fresh installs pick up the new default reranker. An existing deployment keeps its model, because the server reads the reranker model from
config.jsonafter the first boot. The new default is larger and slower than the old one. -
Stricter, safer API: Error responses now use an OpenAI-style body,
GET /mcp/toolsnow requires an authenticated project context and accepts onlyhttpandhttpsURLs to close a server-side request forgery (SSRF) hole, and request validation rejects more malformed input. See DeepFellow API Reference. -
Easier scripted installs:
deepfellow suite installgains--force-install, reads admin credentials fromDF_SERVER_ADMIN_NAME,DF_SERVER_ADMIN_EMAIL, andDF_SERVER_ADMIN_PASSWORD, adds more infra and server flags, and gives clearer errors in--non-interactivemode. See DeepFellow Suite. -
Edit and duplicate services in place: An installed MCP or custom service now has an Edit Settings action that reinstalls it with the new settings, so you no longer uninstall it first, a Duplicate option copies a model's settings under a new id and prefix, and built-in custom-service and MCP models offer a Docker image version selector. See MCP Servers.
-
Slow backends are no longer cut off: A custom service that keeps sending data no longer hits a flat five-minute cutoff, and the new
standard_proxy_timeout_secondssetting and per-serviceproxy_timeout_secondsfield set how long Infra waits. See Custom Service.
Also in This Release
- Ollama parallel requests default to 1: The Maximum parallel requests field of a newly created Ollama instance now defaults to
1instead of3, which matches the real fallback whenOLLAMA_NUM_PARALLELis unset. deepfellow-bge-m3context window:deepfellow-bge-m3now declares its 8192-token context window.- Zero or negative context windows are unknown: A zero or negative context window from gguf metadata, a model directory's
config.json, remote-model admin fields, or Ollama form fields is now treated as unknown instead of published as a real window. - JSON mode without a schema: Chat completions that request JSON mode with
response_format={"type": "json_object"}and nojson_schemano longer fail with a422error. - vLLM debug logging for unresolved sizes: vLLM now logs a debug message when it fails to resolve a custom model's size or to determine its VRAM usage from container logs.
- vLLM logs a failed container stop: vLLM model install now logs a failed Docker container stop during cleanup instead of swallowing it, so an orphaned container is easier to find and remove.
- vLLM install no longer sticks on shutdown: A vLLM model install no longer sticks in the installing state when a graceful shutdown cancels the request during GPU or quantization checks.
- vLLM retries only on the model-length error: vLLM retries with an adjusted
--max-model-lenonly for the specific "estimated maximum model length" error, not for unrelated Docker startup failures. - Ollama uninstall unloads the model: Uninstalling an Ollama model without purging now unloads it from VRAM instead of leaving it there until the Ollama container restarts.
- Ollama install progress bar fix: The Ollama install progress bar no longer sticks at 100% when a service install's post-processing step, such as saving the config, fails after an install, uninstall, and reinstall cycle.
- API key rotation reaches child Infras: Rotating
infra_api_keyno longer leaves connected child Infras calling ancestor-proxied models with the old key. - Orphaned containers are adopted: Installing a service no longer fails on an orphaned Docker container with the same name when that container is confidently the same healthy service: Infra adopts it, and an adopted vLLM or SGLang model reads its concurrency capacity from the container's startup logs.
- Invalid HuggingFace repositories fail fast: A HuggingFace model download with an invalid or unreachable repository id now fails fast with a "model repository not found" error instead of reporting install success with an empty model directory.
- Rerank works on rootful Docker: Rerank models now install and serve
POST /v1/rerankon a rootful Docker setup: the server creates the HuggingFace cache directory, and the rerank container runs as the server's user with its cache at/mnt/hf. - No duplicate custom-service installs: A custom-service model no longer starts two concurrent install attempts when you request it twice in quick succession.
- Custom model installs use
hf_id: Custom model installation for SGLang and vLLM now uses the model'shf_idinstead ofmodel_id. speaches-aiinstalls as a non-root user:speaches-aimodel installs no longer fail with aPermissionErroron a fresh install when the backend runs as a non-root user, because the container now runs as the current host user.- Benchmarks version endpoint: The new
/admin/benchmarks/versionendpoint returns the server version and, when available, the commit hash. image_generationtool edits: Editing animage_generationtool no longer requirespartial_imagesin the request body, and an invalid tool update body now returns400instead of500.- Tool edits re-validate allowlists: Editing a tool's
server_prefixorcustom_endpointnow re-validates it against the project's MCP and custom-endpoint allowlist, as creating a tool already did, and an update that fails that check returns400instead of500. - Vector store bounds migration: The new migration
Migration011VectorStoreBoundsrepairs stored vector stores and vector store files: it raises anembedding_config.max_context_sizeof0or less to the default, and it resets achunking_strategy.staticwhose chunk size is not positive or whose overlap is not smaller than the chunk size. - Tool results accept text parts: Tool-result messages whose
contentis a list of text content parts, as some OpenAI-compatible clients such as Qwen Code send, are now accepted, and a non-text content part (image, audio, or file) now fails with a clear400instead of being dropped silently. - Chat validation errors name the field: Chat request validation errors now name the actual invalid field and, for an unknown message role, list every accepted role instead of showing a misleading
"Input should be 'developer'"message. - Toolbox GUI no longer blocks
tools/call: The toolbox GUI no longer storesallowed_tools: []instead ofnullwhen you add an MCP or Infra MCP tool without restricting its tools, which silently blocked everytools/callon that tool. - Long Doc Chunker metadata values: Doc Chunker metadata values longer than 512 characters, such as
bboxesfor multi-page PDFs, no longer fail file processing: the server drops the oversized keys from that chunk's metadata. - Knowledge graph endpoints, off by default: New
/v1/graph/episodesand/v1/graph/searchendpoints track entities and relationships across documents per project through Graphiti, and stay off until you setgraphiti.enabledand provide a Neo4j instance. - Docker check before admin prompts:
deepfellow suite installnow checks Docker availability before it prompts for admin credentials. deepfellow server project update:deepfellow server project updatechanges an existing project'sname,models,custom_endpoints, ormcp_prefixeswithout archiving and recreating it, and--models,--custom-endpoints, and--mcp-prefixesadd to the existing list unless you pass--overwrite. See DeepFellow Server.- Install activity indicator:
deepfellow infra service installanddeepfellow infra model installnow show a spinner during the install phase, or a periodicinstall: still working… (Ns)line in--non-interactivemode, instead of a silent jump frominstall: 0%toinstall: 100%. - Reinstall over a started server:
deepfellow server installno longer aborts with "Invalid DF_PLUGINS_SETUP" when you reinstall over a server that has started at least once. - Shared storage warning:
deepfellow server install --directorynow warns when a fresh install in a new directory would share its storage (config.jsonand uploads) with an install elsewhere on the machine, and its--helptext now says storage is shared across every install on the machine. - Template values and explicit flags:
deepfellow infra install --templateno longer lets a template value override an explicit CLI flag that happens to equal its own default, such as--port 8000. - Port restored on re-run:
deepfellow infra installnow restores a prior install's port from.envon a plain re-run, or with a template that declares no port, instead of resetting it to the default. infra uninstallasks about Docker images:deepfellow infra uninstallnow asks whether to also remove Docker images when you pass neither--remove-imagesnor--no-remove-images, and--remove-imagesafter the directory is gone now reports a clear "already uninstalled" message. See Uninstall.- Templates check
config.json:deepfellow server install --templateanddeepfellow infra install --templatenow also checkconfig.json, in addition to.env, before they apply a template value, so a reinstall with a template no longer overwrites a setting that moved toconfig.jsonafter the first start. - Workspace project gets model access:
deepfellow suite installnow grants the workspace project access to the chat, embedding, and fast models it installed, where the project previously had no model access. - Real install failure reasons:
deepfellow infra service installanddeepfellow infra model installnow show the real failure reason on an install error, and point you todocker compose logs infrawhen the server sends no details. - Installing an installed service is a no-op:
deepfellow infra service installnow exits successfully with an informational message when the service is already installed, which also makes thepost_start_actionsofinfra install --templateidempotent. - Readable CLI errors for Server errors: The CLI no longer crashes with a raw
KeyErrortraceback when DeepFellow Server reports an error in its{"error": {"message": ...}}format. - Suite install reads the resolved port:
deepfellow suite installnow reads the port thatserver installresolved from the server's own.envbefore it logs in and creates the workspace, so a re-run against an existing server directory with a different port no longer fails at login. server install --template:deepfellow server installgains--template, which takes a built-inworkspacetemplate or a YAML file with config defaults and post-install actions, follows the same precedence asinfra install --template, and leaves the server running afterward when the template has post-install actions. See DeepFellow Server.- Infra API key fallback:
deepfellow server installnow falls back to theDF_INFRA_API_KEYin a local Infra install's.envwhen you do not pass--infra-api-key. - Template validation: Both
--templateoptions now validate the resolved template up front and reject an unrecognized top-level orpost_start_actionskey instead of discarding it silently. - Stale MongoDB volume hint:
deepfellow server start,restart,update,env set, andsuite installnow detect a MongoDB authentication failure caused by a stalemongoDocker volume from an earlier install and print a specific remediation hint. - Pre-existing MongoDB volume prompt:
deepfellow server installnow detects a pre-existingmongoDocker volume when it finds no matching MongoDB admin credentials in.env, and asks whether to remove it before it generates new credentials, where declining aborts the install and--yesremoves the volume without asking. - Quickstart uses
suite install: The Quickstart now installs DeepFellow with the singledeepfellow suite installcommand. See Quickstart. - Installation section: Installation guides now live in their own Installation section, and the CLI Reference opens on a tile page. See Installation.
Breaking Changes
- API errors use a new body and status: Error responses now use an OpenAI-style body,
{"error": {"message": ..., "type": ..., "param": ..., "code": ...}}, instead of FastAPI's default{"detail": ...}, and request validation errors now return HTTP400instead of422. GET /mcp/toolsrequires a project context: The endpoint now requires an authenticated project context and accepts onlyhttpandhttpsURLs, which stops credentials with no project association, such as organization or user credentials, from making the server open outbound connections to arbitrary hosts.- Project fields reject bare strings: A project's
models,custom_endpoints, andmcp_prefixesfields now accept only a list of strings or the literal"all", so a bare string such as"models": "qwen:1.8b"now fails validation with HTTP400. - Overlapping chunks are rejected: A
chunking_strategywhosechunk_overlap_tokensis not smaller thanmax_chunk_size_tokensis now rejected with HTTP400when you create the vector store or file, where the API previously accepted it and the file failed silently. GET /v1/modelsreportsnullcontext windows: Theprops.context_windowandprops.max_context_windowfields are nownullinstead of0for a model whose registrations declare no context window.- Knowledge Graph flags in
deepfellow server installare renamed:--neo4j-active,--neo4j-url,--neo4j-username, and--neo4j-passwordare replaced by--falkordb-active,--falkordb-url,--falkordb-username, and--falkordb-password, and the generated.envnow writesDF_GRAPH__ENABLED,DF_GRAPH__HOST,DF_GRAPH__PORT,DF_GRAPH__USERNAME, andDF_GRAPH__PASSWORDinstead ofDF_GRAPHITI__ENABLED,DF_GRAPHITI__NEO4J_URI,DF_GRAPHITI__NEO4J_USER, andDF_GRAPHITI__NEO4J_PASSWORD.
We use cookies on our website. We use them to ensure proper functioning of the site and, if you agree, for purposes such as analytics, marketing, and targeting ads.