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_URL: AMQP connection URL that seeds therabbitmqsection on any boot where that section is not configured yet. Once the section is saved, the server ignores it and logs a warning at boot if it names a different broker. In.envthe installer writes only the host and port,rabbitmq:5672, and Docker Compose builds the full URL from them,DF_RABBITMQ_USER, andDF_RABBITMQ_PASSWORD. Set a different host and port with--rabbitmq-urlondeepfellow server install.DF_RABBITMQ_CONNECT_TIMEOUT_SECONDS: Seedsrabbitmq.connect_timeout_secondstogether withDF_RABBITMQ_URL. Once the section is saved, the server ignores it. Default10.DF_NIGHTSHIFT_CONFIG_POLL_INTERVAL_SECONDS: Seconds between two checks ofconfig.jsonby the Nightshift worker. See Configuration Reload. Default5.DF_NIGHTSHIFT_RELOAD_DRAIN_TIMEOUT_SECONDS: Seconds the Nightshift worker waits for messages in progress to finish before it restarts on a configuration change or stops. Keep the worker container's stop timeout above it. See Stop the Worker. Default300.DF_NIGHTSHIFT_METRICS_PORT: Port of the Nightshift worker's Prometheus/metricsendpoint, from1to65535.0is replaced with9464, and the worker logs a warning. See Monitoring. Default9464.DF_NIGHTSHIFT_METRICS_HOST: Address the Nightshift worker's/metricsendpoint listens on. The installer sets0.0.0.0on thenightshiftcontainer, so the endpoint is reachable on the Docker network but not published on the host. Default127.0.0.1outside the installer's Docker setup.DF_NIGHTSHIFT_METRICS_URL: Address DeepFellow Server fetches the Nightshift worker's metrics from, to serve them on its own/metricsendpoint. An empty value turns this off. See Nightshift Metrics. Defaulthttp://nightshift:9464/metrics.DF_VECTOR_STORE_FILE_PROCESSING_MAX_ATTEMPTS: Number of attempts Nightshift gives a file it adds to a vector store before the file fails. Default5.DF_VECTOR_STORE_MIGRATION_MAX_ATTEMPTS: Number of attempts Nightshift gives a file it re-embeds during a vector store migration before the file fails. Default5.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. With aDF_SERVER_BIND_ADDRESSset at install, the installer puts that address in place oflocalhost, for examplehttp://127.0.0.1:8000.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_INFRA__ADMIN_API_KEY(infra.admin_api_key): DeepFellow Infra's admin key, which the server uses to install the versions fine-tuning pipelines promote. Pipelines are disabled while it is empty. The variable only seeds a new install; on an existing install, set it withdeepfellow server config set. Default empty.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", "ti_fail_open": "false"}. Every value is a string or a list of strings. It also carries the Threat Intelligence keys:ti_urlandti_fail_open, which both guards share, andti_input_workflow_nameandti_output_workflow_name, one per guard. The guards' API key lives outside this object, inti_api_keybelow. Default{}.ti_api_key: API key the two Threat Intelligence guards,df_ti_input_guardanddf_ti_output_guard, use to authenticate with the Threat Intelligence service. Both guards share it. It has no.envequivalent, so set it from the Server Configuration card or withPUT /admin/config. When it is empty, the guards fall back to theTI_API_KEYenvironment variable, which each guard's own configuration file names inti_api_key_env. Default empty. See Threat Intelligence Guards.DF_RABBITMQ_URL(rabbitmq.*): AMQP connection URL of the RabbitMQ broker. On any boot where therabbitmqsection is not configured yet, the server splits it into that section ofconfig.json:rabbitmq.host,rabbitmq.port,rabbitmq.username,rabbitmq.password,rabbitmq.vhost, andrabbitmq.ssl. Defaultslocalhost,5672,guest,guest,/, andfalse. See RabbitMQ Connection.DF_RABBITMQ_CONNECT_TIMEOUT_SECONDS(rabbitmq.connect_timeout_seconds): Seconds the server waits for a RabbitMQ connection before it gives up. Default10.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_MAX_CONCURRENT_REQUESTS(max_concurrent_requests): Maximum concurrent requests the server declares it can handle, reported in theX-Max-Concurrent-Requestsresponse header and inGET /infofor external monitoring and autoscaling. Informational only. The server does not enforce it. Default100. The server also reports how much of that limit is free at any moment: the difference betweenmax_concurrent_requestsand the number of requests it is currently processing, exposed as theX-Available-Capacityresponse header and theavailable_capacityfield ofGET /info.
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.DF_VECTOR_STORE_EXPIRY_SWEEP_INTERVAL_SECONDS(vector_store_expiry_sweep_interval_seconds): Seconds between two sweeps that delete vector stores past theirexpires_afterpolicy, at least1. An expired store survives until the next sweep, though requests reject it as soon as it expires. Default300.
Document Processing
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. Defaultgemma4:e4b(the chat model installed bysuite install, which also handles images).DF_DOC_CHUNKER_STT_MODEL(doc_chunker_stt_model): Speech-to-text model Doc Chunker uses to transcribe audio and video files. DefaultSystran/faster-whisper-large-v3.DF_DOC_CHUNKER_CONVERT_TIMEOUT_SECONDS(doc_chunker_convert_timeout_seconds): Seconds the server waits for one Doc Chunker conversion, including the time the file waits in Doc Chunker's queue. Keep it belownightshift_jobs_timeout_seconds. For a Doc Chunker image without the job API, also keep it no higher than theproxy_timeout_secondsof thedoc_chunkerinstall on DeepFellow Infra. See Conversion Timeouts. Default7200.DF_DOC_CHUNKER_POLL_INTERVAL_SECONDS(doc_chunker_poll_interval_seconds): Seconds between two reads of a Doc Chunker conversion job's status. Default5.DF_DOC_CHUNKER_REQUEST_TIMEOUT_SECONDS(doc_chunker_request_timeout_seconds): Seconds one file upload to Doc Chunker or one result download takes at most. It does not limit the conversion, whichdoc_chunker_convert_timeout_secondscaps. Default300.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_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.DF_METADATA_EXPANSION_CONCURRENCY(metadata_expansion_concurrency): Number of documents each Nightshift worker expands at once, from1to64. Default4.
Document Summarization
These configure Document Summarization.
DF_SUMMARIZATION_MODEL(summarization_model): Model that writes document summaries. Defaultgemma4:12b. An existing install keeps the model stored in itsconfig.json.DF_SUMMARIZATION_MAX_ATTEMPTS(summarization_max_attempts): Number of attempts a document gets before it is markedfailed. It is also the queue's delivery limit. Default3.DF_SUMMARIZATION_CONCURRENCY(summarization_concurrency): Number of documents each Nightshift worker summarizes at once, from1to64. Default4.
Nightshift and RabbitMQ
These configure Nightshift Background Jobs and its connection to RabbitMQ.
DF_NIGHTSHIFT_JOBS_TIMEOUT_SECONDS(nightshift_jobs_timeout_seconds): Maximum time, at least1second, a single document's extraction or summarization step runs before it counts as a failed attempt. It includes the time a document waits behind the others a worker processes at once, so raise it when you raisemetadata_expansion_concurrencyorsummarization_concurrency. It has to stay abovedoc_chunker_convert_timeout_seconds, andPUT /admin/configrejects a value that does not. See Job Timeouts. Default10800.
The rabbitmq section holds the RabbitMQ connection. It has no .env variables. The server seeds it from DF_RABBITMQ_URL and DF_RABBITMQ_CONNECT_TIMEOUT_SECONDS on any boot where it is not configured yet, which means missing from config.json or equal to the built-in defaults. The seed drops any query parameters in the URL. Until DF_RABBITMQ_URL is set, the built-in defaults apply without being written to config.json. After a non-default section is saved, it behaves like any other dynamic setting, with one exception: while DF_RABBITMQ_URL names a broker other than the defaults, a change that sets the section back to the defaults returns 400 Bad Request. See RabbitMQ Connection.
rabbitmq.host: Hostname of the RabbitMQ broker. Defaultrabbitmq, the bundled RabbitMQ container.rabbitmq.port: Port of the RabbitMQ broker, from1to65535. Default5672, or5671for anamqps://URL.rabbitmq.username: RabbitMQ username. Generated at install, asDF_RABBITMQ_USER.rabbitmq.password: RabbitMQ password. Generated at install, asDF_RABBITMQ_PASSWORD.rabbitmq.vhost: RabbitMQ virtual host. Default/.rabbitmq.ssl: Set totrueto connect to RabbitMQ over TLS. Defaultfalse, ortruefor anamqps://URL.rabbitmq.connect_timeout_seconds: Seconds the server waits for one RabbitMQ connection attempt, greater than0. Default10.
Knowledge Graph
The graph section configures Knowledge Graph: the FalkorDB connection, the models used for extraction and answers, and ontology discovery. Its settings follow the DF_GRAPH__FIELD (graph.field) pattern, for example DF_GRAPH__ENABLED (graph.enabled). The installer sets DF_GRAPH__ENABLED, DF_GRAPH__HOST, DF_GRAPH__PORT, and DF_GRAPH__PASSWORD when you pass --falkordb-active. For every setting and its default, see Knowledge Graph Settings.
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.finetune_pipelines: Settings of fine-tuning pipelines, such as the generation and judge models and the number of runs in progress at once. It has no.envequivalent, so set it withdeepfellow server config setorPUT /admin/config. The Server Configuration card doesn't show it.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.sentry_enabled: Set totrueto report unhandled exceptions and errors to Sentry. It has no.envequivalent, like the other two Sentry settings, so set it from the Server Configuration card or withPUT /admin/config. Defaultfalse.sentry_dsn: DSN of the Sentry project that receives the events, on Sentry SaaS or a self-hosted instance. Masked like other credentials. Default empty.sentry_environment: Environment tag attached to every Sentry event. Default empty, reported asproduction.
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_BIND_ADDRESS: Host address the server container publishesDF_SERVER_PORTon, for example127.0.0.1. An IPv6 address goes in brackets, for example[::1], whichdeepfellow server env setadds for you. An empty value publishes the port on all interfaces. Set it with--bind-addressondeepfellow server install. Default empty. See Published Ports.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 onDF_INTERNAL_BIND_ADDRESS. Default27017.DF_INTERNAL_BIND_ADDRESS: Host address the bundled MongoDB container publishes its port on. The same address applies to every port that--devpublishes. An IPv6 address goes in brackets, for example[::1], whichdeepfellow server env setadds for you. An empty value publishes the ports on all interfaces. The installer doesn't write it.deepfellow server updatesets it to an empty value if you decline moving the ports of an older install to127.0.0.1. See Published Ports. Default unset, which means127.0.0.1.DF_MONGO_INITDB_ROOT_USERNAME: Root user the bundled MongoDB container is initialized with. Generated at install. On an install wheredeepfellow server updateswitched the server to a dedicated account, it holds the previous value ofDF_MONGO_USER. See MongoDB Account.DF_MONGO_INITDB_ROOT_PASSWORD: Password of that root user. Generated at install. On an install wheredeepfellow server updateswitched the server to a dedicated account, it holds the previous value ofDF_MONGO_PASSWORD.DF_INFRA_DOCKER_SUBNET: Docker network the server shares with the infrastructure services. Defaultdeepfellow-infra-net.DF_RABBITMQ_USER: RabbitMQ username Docker Compose puts intoDF_RABBITMQ_URL. It also creates that user in the bundled RabbitMQ container. Generated at install for the bundled container, or prompted for when you connect to an existing instance.DF_RABBITMQ_PASSWORD: Password of that RabbitMQ user. Generated at install for the bundled container, or prompted for when you connect to an existing instance.
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_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_CONTAINER_NAME_SUFFIX(container_name_suffix): Suffix Infra appends to each service container's name so two instances sharing a Docker host don't collide, for example_infra_a1b2c3. Infra generates one automatically at first boot, using only letters, digits, underscores, and hyphens; a change applies only to new installs and reinstalls, not already-running containers. Default: a random suffix generated at first boot.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 and private models and to check access to them when you add a custom vLLM model. 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. A custom-service model that declares its own default, such asdoc_chunkerwith 7200 seconds, uses that default instead. 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_BIND_ADDRESS: Host address the Infra container publishesDF_INFRA_PORTon, for example127.0.0.1. An IPv6 address goes in brackets, for example[::1], whichdeepfellow infra env setadds for you. An empty value publishes the port on all interfaces. Set it with--bind-addressondeepfellow infra install. Default empty. See Published Port.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.