Configuration
Reference of every DeepFellow Server and DeepFellow Infra configuration variable.
DeepFellow Server and DeepFellow Infra both split their configuration into two kinds:
- Bootstrap settings load from
.envat startup only. Changing one requires a restart. - Dynamic settings live in
config.json. On first boot, ifconfig.jsondoes not exist yet, the app seeds it from any matching.envvalues, then stops reading.envfor those settings. From that point on, change them through the web panel, the CLI, or the/admin/configAPI, without a restart.
Every entry below names the .env variable first. For a dynamic setting, the name in parentheses is the path inside the settings object of config.json. For example, infra.url refers to the following:
{
"settings": {
"infra": {
"url": "http://127.0.0.1:8086"
}
}
}For details on where each file lives and how to edit it, read Server Configuration and Infra Configuration.
The defaults below are the values in place after an install with the deepfellow CLI. Where the installer generates a secret, the entry says "Generated at install" instead of naming a value. Where the installer writes nothing into .env, the value is the application's own fallback, which is what the install leaves in place.
Addresses such as mongo:27017, http://qdrant:6333, and http://infra:8086 are Docker service names. They resolve from inside the DeepFellow Docker network, where every component runs, and not from your shell on the host.
DeepFellow Server
Bootstrap Settings
These load from .env at startup. Set them with deepfellow server env set and restart the server.
DF_MONGO_URL: MongoDB connection host and port. Defaultmongo:27017, the bundled MongoDB container.DF_MONGO_USER: MongoDB username. Generated at install.DF_MONGO_PASSWORD: MongoDB password. Generated at install.DF_MONGO_DB: Name of the MongoDB database the server uses. Defaultdeepfellow.DF_FILESTORAGE_TARGET_PATH: Directory that holds uploaded files andconfig.json. Defaultstorage/.DF_FILESTORAGE_META_PATH: Directory that holds file metadata. Defaultstorage/.DF_FILESTORAGE_TEMP_PATH: Directory that holds uploads still in progress. Defaultstorage/tmp.DF_PLUGINS_PATH: Directory the server scans for plugins. Defaultplugins.DF_RABBITMQ_ENABLED: Set totrueto publish background jobs to RabbitMQ. Defaultfalse.DF_RABBITMQ_URL: AMQP connection URL of the RabbitMQ broker. Defaultamqp://guest:guest@localhost:5672/.DF_RABBITMQ_CONNECT_TIMEOUT_SECONDS: Seconds the server waits for a RabbitMQ connection before it gives up. Default10.DF_CONFIG_JSON_PATH: Full path toconfig.json, overriding the file storage location above. Default$DF_FILESTORAGE_TARGET_PATH/config.json.
Dynamic Settings
These seed from .env on first boot and live in config.json afterwards. Change them from the Server Configuration card, with deepfellow server config set, or through the /admin/config API.
DF_SERVER_URL(server_url): Public HTTP URL of DeepFellow Server. Defaulthttp://localhost:8000, built fromDF_SERVER_PORT.DF_INFRA__URL(infra.url): HTTP URL of the connected DeepFellow Infra instance. Defaulthttp://infra:8086.DF_INFRA__API_KEY(infra.api_key): API key the server uses to authenticate with DeepFellow Infra. The installer readsDF_INFRA_API_KEYfrom a local Infra installation, or prompts you for it.DF_CHAT_TRANSLATION_MODEL(chat_translation_model): Model that translates chat messages (e.g. when using audio endpoints). Defaultgemma3:1b.DF_EVALUATE_MODEL(evaluate_model): Model that scores answers in evaluation runs. Defaultgemma3:1b.DF_LOG_LEVEL(log_level): Log level of the server, for exampleINFOorDEBUG. DefaultINFO.DF_ONLY_ADMIN_CAN_CREATE_ACCOUNTS_BY_INVITATION(only_admin_can_create_accounts_by_invitation): Set totrueto let only an admin send account-creating invitations. Defaulttrue.DF_PLUGINS_SETUP(plugins_setup): JSON object passed to the plugins, for example{"df_abuse_model": "qwen3:1.7b"}. Default{}.DF_METRICS_USERNAME(metrics_username): Username that protects the/metricsendpoint. Generated at install.DF_METRICS_PASSWORD(metrics_password): Password that protects the/metricsendpoint. Generated at install.
Vector Database
The installer manages a Qdrant instance and turns the integration on unless you decline it.
DF_VECTOR_DATABASE__PROVIDER__ACTIVE(vector_database.provider.active): Set totrueto enable the vector database integration. Defaulttrue.DF_VECTOR_DATABASE__PROVIDER__TYPE(vector_database.provider.type): Vector database provider, eitherqdrantormilvus. Defaultqdrant.DF_VECTOR_DATABASE__PROVIDER__URL(vector_database.provider.url): URL of the vector database service. Defaulthttp://qdrant:6333, the bundled Qdrant container. With Milvus the installer writeshttp://milvus:19530.DF_VECTOR_DATABASE__PROVIDER__DB(vector_database.provider.db): Name of the database inside the vector database service. Defaultdefault. Milvus is the only provider the installer names a database for, and it writesdeepfellow.DF_VECTOR_DATABASE__PROVIDER__USER(vector_database.provider.user): Username used for vector database authentication. Generated at install.DF_VECTOR_DATABASE__PROVIDER__PASSWORD(vector_database.provider.password): Password used for vector database authentication. Generated at install.DF_VECTOR_DATABASE__EMBEDDING__ACTIVE(vector_database.embedding.active): Set totrueto embed documents when you add them to a vector store. Defaulttrue.DF_VECTOR_DATABASE__EMBEDDING__MODEL(vector_database.embedding.model): Embedding model used to generate vectors. Defaultmxbai-embed-large. Choosing sparse embeddings at install writesdeepfellow-bge-m3instead.DF_VECTOR_DATABASE__EMBEDDING__SIZE(vector_database.embedding.size): Number of dimensions of the embedding vectors. It has to match what your embedding model returns, and it sets the dimension of the collection the server creates. Changing it once documents are indexed means rebuilding the vector store. Default1024.DF_VECTOR_DATABASE__EMBEDDING__SPARSE(vector_database.embedding.sparse): Set totrueto store sparse vectors next to the dense ones. Defaultfalse.DF_VECTOR_DATABASE__RERANKER__ACTIVE(vector_database.reranker.active): Set totrueto rerank search results before returning them. Defaultfalse.DF_VECTOR_DATABASE__RERANKER__MODEL(vector_database.reranker.model): Reranker model. DefaultBAAI/bge-reranker-v2-m3.DF_VECTOR_DATABASE__RERANKER__OVERSAMPLING(vector_database.reranker.oversampling): Multiplier applied tomax_num_resultsto size the reranking candidate pool. A higher value hands the reranker more candidates, which improves recall and costs one larger vector search plus more reranking work per query. Default2.5.DF_VECTOR_DATABASE__RERANKER__MIN_FETCH_K(vector_database.reranker.min_fetch_k): Smallest candidate pool the reranker will fetch, whatever the oversampling gives. It decides the pool size whenevermax_num_resultsis small, so raising it makes every search fetch at least this many candidates. Default50.DF_VECTOR_DATABASE__SEARCH__DEFAULT_NUM_RESULTS(vector_database.search.default_num_results): Number of results a search returns when the request does not ask for a count. It affects only how much a caller gets back, not how much work the search does. Default5.DF_VECTOR_DATABASE__SEARCH__MAX_NUM_RESULTS(vector_database.search.max_num_results): Largest number of results a single search returns. With a reranker active it also sizes the candidate pool, so raising it multiplies the cost of every search, not just the size of the answer. Default20.DF_VECTOR_DATABASE__VECTOR_THRESHOLD(vector_database.vector_threshold): Smallest similarity score a match needs to appear in the results. Raising it returns fewer but closer matches, and set too high it returns nothing at all. Default0.3.DF_EMBEDDING_WORKER_COUNT(embedding_worker_count): Number of parallel workers that generate embeddings. Each worker keeps one request open against the embedding model served by DeepFellow Infra. Raise it only as far as that model answers requests in parallel, since the server itself spends the time waiting. Default5.DF_EMBEDDING_BATCH_SIZE(embedding_batch_size): Number of chunks sent to the embedding model in one request. The bigger the number the more context of the embedding model is used. Default10.DF_RERANKER_WORKER_COUNT(reranker_worker_count): Number of parallel workers that rerank results. Each worker keeps one request open against the reranker model. Anything above what that model answers in parallel simply waits in a queue there. Default5.
Document Processing
DF_DOC_CHUNKER_USE(doc_chunker_use): Set totrueto send files to Doc Chunker when you add them to a vector store. Set tofalseto keep the built-in text extraction. Defaulttrue.DF_DOC_CHUNKER_PREFIX(doc_chunker_prefix): Endpoint prefix the server uses to reach Doc Chunker. It matches theprefixyou set when you installed the service. Defaultdoc_chunker.DF_DOC_CHUNKER_PICTURE_DESCRIPTION_MODEL(doc_chunker_picture_description_model): Vision model that describes images found inside documents. Defaultgranite3.2-vision:2b.DF_LEMMATIZER_ENDPOINT_PREFIX(lemmatizer_endpoint_prefix): Endpoint prefix the server uses to reach the lemmatizer service. Defaultlemmatizer.DF_LEMMATIZER_WORKER_COUNT(lemmatizer_worker_count): Number of parallel workers that lemmatize text. Each worker keeps one request open against the lemmatizer service, whose own capacity decides how far raising this helps. Default5.DF_METADATA_EXPANSION_QUEUE_NAME(metadata_expansion_queue_name): Name of the RabbitMQ queue that carries metadata expansion jobs. Defaultmetadata_expansion.DF_METADATA_EXPANSION_MODEL(metadata_expansion_model): Model that expands document metadata. Defaultgemma3:1b.DF_METADATA_EXPANSION_MAX_ATTEMPTS(metadata_expansion_max_attempts): Number of times a metadata expansion job retries before it fails. It is also the queue's delivery limit. A higher value lets a job survive a model that is unavailable for a few minutes, and it also spends that many model calls on a job that will never succeed. Default3.
The installer configures no mail server, so invitation emails stay off until you set these. Read Configure Email for Invitations for the full setup.
DF_SMTP__HOST(smtp.host): Hostname of the SMTP server that sends invitation emails. Defaultlocalhost.DF_SMTP__PORT(smtp.port): Port of the SMTP server. Default25.DF_SMTP__AUTH(smtp.auth): Set totrueto authenticate with the SMTP server. Defaultfalse.DF_SMTP__USER(smtp.user): SMTP username. Default empty.DF_SMTP__PASSWORD(smtp.password): SMTP password. Default empty.DF_SMTP__EMAIL_FROM(smtp.email_from): Address that appears in theFromheader of sent emails. Defaultno-reply@domain.com.DF_SMTP__USE_TLS(smtp.use_tls): Set totrueto connect to the SMTP server over TLS. Defaultfalse.
Fine-tuning, MCP, and Telemetry
DF_FINE_TUNING_POLL_INTERVAL_SECONDS(fine_tuning_poll_interval_seconds): Seconds between two polls of a fine-tuning worker. A shorter interval reports job progress sooner and sends proportionally more requests to every worker. Default60.DF_FINE_TUNING_MAX_WORKER_SYNC_FAILURES(fine_tuning_max_worker_sync_failures): Consecutive failed polls, counted per job, after which the server marks that job failed. A higher value survives a worker that restarts mid-training, and it also leaves a genuinely dead job running for this many poll intervals before anyone finds out. Default5.DF_MCP_SESSION_TTL_SECONDS(mcp_session_ttl_seconds): Seconds an idle pooled MCP session stays alive. A longer TTL reuses the connection to the MCP server instead of repeating the handshake, at the cost of holding idle connections open. Default300.DF_MCP_SESSION_SWEEP_INTERVAL_SECONDS(mcp_session_sweep_interval_seconds): Seconds between two sweeps that close expired MCP sessions. An expired session survives until the next sweep, so its real lifetime is the TTL plus up to this much. Default60.DF_OTEL_EXPORTER_OTLP_ENDPOINT(otel_exporter_otlp_endpoint): OTLP endpoint that receives traces and logs. Defaulthttp://localhost:4317. Letting the installer run a local collector writeshttp://otel-collector:4317.DF_OTEL_TRACING_ENABLED(otel_tracing_enabled): Set totrueto export traces over OTLP. Defaultfalse. The installer setstruewhenever it configures OpenTelemetry.DF_OTEL_LOGGING_ENABLED(otel_logging_enabled): Set totrueto export logs over OTLP. Defaultfalse.
Deployment Variables
Docker Compose reads these from the same .env file, but the server itself never reads them. Changing one requires deepfellow server restart.
DF_SERVER_PORT: Host port the server container publishes. Default8000.DF_SERVER_IMAGE: Docker image that runs DeepFellow Server. Defaulthub.simplito.com/deepfellow/deepfellow-serverat the newest tag the installer finds.DF_MONGO_PORT: Host port the bundled MongoDB container publishes. Default27017.DF_MONGO_INITDB_ROOT_USERNAME: Root user the bundled MongoDB container is initialized with. Generated at install.DF_MONGO_INITDB_ROOT_PASSWORD: Password of that root user. Generated at install.DF_INFRA_DOCKER_SUBNET: Docker network the server shares with the infrastructure services. Defaultdeepfellow-infra-net.
DeepFellow Infra
Bootstrap Settings
These load from .env at startup. Set them with deepfellow infra env set and restart Infra.
DF_INFRA_ADMIN_API_KEY: Key used for DeepFellow Infra administration: changing configuration, installing services and models, and reading logs. Generated at install, as a UUID.DF_INFRA_DOCKER_SUBNET: Docker network Infra attaches the service containers to. Reaches the container asDF_DOCKER_SUBNET. Defaultdeepfellow-infra-net.DF_INFRA_STORAGE_DIR: Directory that holds Infra persistent storage andconfig.json. Reaches the container asDF_STORAGE_DIR. Default~/.deepfellow/infra/storage.DF_INFRA_COMPOSE_PREFIX: Prefix of the Docker Compose resources Infra generates. Reaches the container asDF_COMPOSE_PREFIX. Generated at install asdffollowed by six random characters and an underscore, for exampledf7k2m9x_.DF_STORAGE_SERVICES_DIR: Directory that holds per-service state. Default$DF_STORAGE_DIR/services.DF_CONTAINER_NAME_PREFIX: Prefix of the names Infra gives the service containers. Default empty.DF_DOCKER_HUB_TOKEN: Docker Hub token used to pull images that need authentication. Default empty.OLLAMA_KV_CACHE_TYPE: Quantization of the Ollama key-value cache, for examplef16orq8_0. Defaultf16.OLLAMA_NUM_PARALLEL: Number of requests Ollama serves in parallel. A value below1is clamped to1. Infra treats it as the capacity of each Ollama instance, so raising it sends more requests to one instance before Infra moves them to another, and it also raises the estimated VRAM a model needs, because each parallel slot holds its own key-value cache. Default1.OLLAMA_VRAM_OVERHEAD_FACTOR: Multiplier applied to the estimated VRAM need of a model before Infra places it on a GPU. Above1it reserves headroom and fits fewer models on a card, below1it risks committing more VRAM than the card has. Default1.0.
Two more variables exist for debugging only. The installer never writes them. Infra reads each one once at startup, so restart Infra after you change either.
DF_DEBUG_FORCE_NO_GPU: Set totrueto make Infra behave as if the host had no supported GPU. Default unset.DF_DEBUG_FORCE_NO_AVX512: Set totrueto make Infra behave as if the host CPU lacked AVX-512. Default unset.
Dynamic Settings
These seed from .env on first boot and live in config.json afterwards. Change them from the Configuration page of the Infra Web Panel or through the /admin/config API.
DF_NAME(name): Name of this Infra node, shown in the panel and across a mesh. Defaultinfra.DF_INFRA_URL(infra_url): Base HTTP URL other containers use to reach this Infra. Defaulthttp://infra:8086.DF_INFRA_API_KEY(infra_api_key): Key that authorizes calls to the/v1/endpoints and toGET /info. Generated at install, as a UUID.DF_MESH_KEY(mesh_key): Key another Infra presents to connect to this node over WebSocket. Generated at install, as a UUID.DF_CONNECT_TO_MESH_URL(connect_to_mesh_url): WebSocket URL of the parent Infra this node connects to, which is the parent'sDF_INFRA_MESH_URL. Default empty.deepfellow infra connectfills it in.DF_CONNECT_TO_MESH_KEY(connect_to_mesh_key): Key this node presents to the parent Infra, which is the parent'sDF_MESH_KEY. Default empty.deepfellow infra connectfills it in.DF_SHARE_MODELS_DOWNSTREAM(share_models_downstream): Set totrueto expose this node's models, and its ancestors' models, to connecting nodes. Defaulttrue.DF_HUGGING_FACE_TOKEN(hugging_face_token): Hugging Face token used to download gated models. Default empty. The installer writes it only when you supply one.DF_CIVITAI_TOKEN(civitai_token): CivitAI token used to download image-generation models. Default empty. The installer writes it only when you supply one.DF_ADAPTER_REGISTRY_URL(adapter_registry_url): URL of the registry that serves fine-tuned adapters. Default empty.DF_ADAPTER_REGISTRY_SECRET(adapter_registry_secret): Secret used to authenticate with the adapter registry. Default empty.DF_LOG_PAYLOADS(log_payloads): Set totrueto log full request and response payloads. Default empty, treated asfalse.DF_STOP_CONTAINERS_ON_SHUTDOWN(stop_containers_on_shutdown): Set tofalseto leave the service containers running when Infra stops. Default empty, treated astrue.DF_STANDARD_PROXY_TIMEOUT_SECONDS(standard_proxy_timeout_seconds): Timeout of outbound proxy requests to the model and tool services: a cap on the whole call for chat completions, embeddings, audio, images, and reranking, and an idle-read window between chunks for a custom service. Set too low it cuts off a long generation that was still producing output. Override it per service with theproxy_timeout_secondsinstall field. Default600.DF_MCP_SSE_SESSION_TTL_SECONDS(mcp_sse_session_ttl_seconds): Seconds an idle MCP SSE session stays alive. A client quiet for longer than this has to open a new session. Default300.DF_MCP_SSE_MAX_SESSIONS(mcp_sse_max_sessions): Largest number of MCP SSE sessions Infra keeps open at once. At capacity Infra drops the oldest session to admit a new one, so a value below your real number of concurrent clients disconnects sessions that are still in use. Default128.DF_METRICS_USERNAME(metrics_username): Username that protects the/metricsendpoint. Generated at install.DF_METRICS_PASSWORD(metrics_password): Password that protects the/metricsendpoint. Generated at install.DF_OTEL_EXPORTER_OTLP_ENDPOINT(otel_exporter_otlp_endpoint): OTLP endpoint that receives traces and logs. Defaulthttp://localhost:4317.DF_OTEL_TRACING_ENABLED(otel_tracing_enabled): Set totrueto export traces over OTLP. Defaultfalse.DF_OTEL_LOGGING_ENABLED(otel_logging_enabled): Set totrueto export logs over OTLP. Defaultfalse.
Deployment Variables
Docker Compose reads these from the same .env file, but Infra itself never reads them. Changing one requires deepfellow infra restart.
DF_INFRA_PORT: Host port the Infra container publishes. Default8086.DF_INFRA_IMAGE: Docker image that runs DeepFellow Infra. Defaulthub.simplito.com/deepfellow/deepfellow-infraat the newest tag the installer finds.DF_INFRA_DOCKER_CONFIG: Path to the Docker client configuration file mounted into Infra. Default~/.deepfellow/infra/docker-config.json, created empty when it does not exist.
Derived Values
deepfellow infra info and deepfellow infra env info print one more key that no file holds. Infra computes it on every run, so setting it in .env changes nothing.
DF_INFRA_MESH_URL: WebSocket address other Infras use to reach this node over a Mesh. Derived fromDF_INFRA_URLby swapping the scheme:http://becomesws://,https://becomeswss://. With the installer's defaultDF_INFRA_URLthe result isws://infra:8086.
To attach a child Infra to a parent, read the parent's DF_INFRA_MESH_URL and DF_MESH_KEY, then pass both to deepfellow infra connect on the child:
deepfellow infra connect ws://PARENT_HOST:8086 PARENT_MESH_KEYThe command accepts an http:// address too and converts the scheme itself. It stores the pair as the child's connect_to_mesh_url and connect_to_mesh_key through the /admin/config API, which makes them dynamic settings rather than .env entries.
A parent address of localhost or 127.0.0.1 will fail. The child Infra runs inside Docker, where those addresses point at the container itself. Use host.docker.internal for a parent on the same machine, and the host's real address otherwise.
Read Connect More Infras for the full procedure.
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.