vLLM as the model provider for Dify

Teams running Dify workflows and agents on their own infrastructure can point Dify's model provider at a self-hosted vLLM server. This page covers the setup, the network boundary, security gaps and testing.

On this page

vLLM as the model provider for Dify: what the connection does

In Dify, the vLLM connection is a model provider that you install from the Model Provider settings and point at the /v1 API endpoint of a vLLM server. Once it is set up, the model calls behind Dify workflows, knowledge base processing and agents go to your own vLLM server. Dify runs from the Docker Compose files it publishes, and vLLM is an OpenAI-compatible server, so the work is configuration and network access, with no custom build involved. The vLLM server, started with vllm serve, exposes endpoints such as /v1/chat/completions, /v1/completions and /v1/embeddings, which are the routes Dify needs for chat, text and embedding models.

The supported method is the one the vLLM Dify guide describes: install the vLLM provider from Dify's Model Provider settings, then enter the server's /v1 endpoint URL. Treat that guide as the reference for the steps and for the Dify version it was written against. Neither the vLLM project nor the Dify project maintains this as a separate connector beyond that guide. Changes to Dify's provider screens or to vLLM's endpoints therefore fall to your team to test after each upgrade, and you should not assume that a newer release of either product has updated the integration for you.

The call path has two hops that need checking. Dify's api and worker services make the outbound request, and the vLLM server receives it. Dify's environment reference says its SSRF_PROXY settings route outbound requests through a proxy that blocks internal and private IP ranges. If your vLLM server sits on a private address, which is common for in-house GPU hosts, confirm how that proxy treats the vLLM URL before go-live. Test from inside the Dify containers, since a test from a workstation proves little about the container network.

Dify stores the vLLM endpoint and any key you configure in its provider settings, so the Dify administrator effectively controls which model server Dify calls. The --api-key option on vLLM protects the /v1 routes, but the vLLM security docs warn against relying on it alone and state that it does not cover endpoints such as /metrics, /health or /invocations. Keep those operational endpoints off the network path Dify uses, and plan a reverse proxy that allowlists only the endpoints Dify needs. Dify's SECRET_KEY signs session cookies and JWTs and encrypts OAuth credentials, so it is a separate control from the vLLM key and should be managed as one.

Before you rely on the connection, record the vLLM version, the model name, the Dify version and the endpoint URL used in your test. vLLM ships minor releases about every two weeks, for example v0.31.0 on October 5, 2026, and Dify ships minor releases roughly monthly, so pin both versions and retest after each change. Models that serve chat completions need a chat template, either built in or supplied with the --chat-template option, so confirm that for every model you register in Dify. If knowledge bases will use an embedding model served by vLLM, ask whoever builds the stack to test that path separately.

Prerequisites for the vLLM model provider in Dify

Dify and vLLM are two separate stacks that must agree on network reachability, model behavior and versions before the provider works. The cards below cover what each side needs, the network path between them, and the access and version checks to complete before installation.

Dify Compose host sizing

The Docker Compose deployment starts the api, worker, web, plugin daemon, PostgreSQL, Redis, Weaviate, Nginx, a code sandbox and an SSRF proxy. The documented minimum is 2 CPU cores, 4 GB of RAM and Docker Compose 2.24.0 or later. Treat that as a floor for a test host, and size the host for your real user count, document volume and vector store before workflows reach production.

Dify release line selection

Dify minor releases arrive roughly monthly, and each release changes the model provider plugin and the services around it. Choose one release line, pin the exact version in your Compose files, and test the vLLM provider on that version in a non-production environment. Upgrading Dify later should be a planned change with its own test pass, not a side effect of pulling the latest images.

Running vLLM server with a chat template

The vLLM server must be running under vllm serve with the model you intend to expose, and it must answer the OpenAI-compatible /v1 routes. Chat completions require a chat template, either shipped with the model or supplied with the chat template option. Confirm that the model's template supports the message roles, tool calls and system prompts your Dify workflows and agents send before you connect them.

Accelerator capacity for the model

The GPU or other accelerator capacity behind vLLM is usually the largest cost and the main constraint on concurrency. Size it from the model's memory footprint, the context lengths your workflows use and the number of simultaneous Dify users or agent runs. vLLM supports NVIDIA CUDA, AMD ROCm, Intel XPU and several CPU architectures, so confirm the hardware target in the vLLM installation documentation matches the hardware you have.

Reachable /v1 endpoint from Dify

The Dify api and worker containers must reach the vLLM /v1 base URL over the network, which means DNS or IP resolution, routing and firewall rules work from inside the Compose network. A URL that answers from your workstation does not prove it works from the containers. Test the endpoint from inside the api and worker containers, and confirm the host and port the vLLM server binds to are the ones you publish.

Certificates and boundary crossings

If traffic between Dify and vLLM crosses a network boundary, such as a segment, a VPC, a data center or a cloud account, encrypt it with TLS and provide the certificate chain to the Dify containers so the provider accepts it. vLLM does not supply inter-service encryption on its own, and its security documentation expects protected network placement. Decide who issues, renews and rotates these certificates before go-live.

Accounts for provider settings

Someone must hold an account in Dify that can open the Model Provider settings, install the vLLM provider and enter the endpoint URL and model names. Limit that role to the people who own model routing, and record who holds it. If you also protect the vLLM endpoint with an API key, assign ownership for storing and rotating that key so it is not kept in a shared document.

Confirmed vLLM and Dify versions

vLLM ships new minor releases about every two weeks, so the version you tested last month may not be the one you install today. Before the build starts, write down the exact vLLM and Dify versions you will run, confirm them against the official release pages, and check the release notes for changes to the OpenAI-compatible routes or the provider. Repeat this check whenever either side is upgraded.

How Dify calls the vLLM /v1 endpoint

The request path starts in Dify's Model Provider settings, where the vLLM provider is installed and given the base URL of your vLLM server, ending in /v1, along with the model name the server reports. When a workflow LLM node, agent node or knowledge base step runs, the Dify api or worker container builds an HTTP request against that base URL and sends it over the network the Docker Compose stack can reach. Trace this path end to end before go-live. Confirm that the vLLM host is reachable from the Dify containers, not only from an administrator workstation. Then check the outbound proxy. Dify's SSRF_PROXY settings route outbound requests through a proxy that blocks internal and private IP ranges, so a vLLM host on a private address may be refused. Confirm in your Dify version whether that proxy applies to model provider calls, and if it does, plan how to allow the single vLLM address without opening other internal ranges.

vLLM started with vllm serve exposes OpenAI-compatible routes under /v1: /v1/completions, /v1/chat/completions, /v1/responses, /v1/embeddings, and audio transcription and translation. Dify does not need all of them for every feature. Chat and agent style features are expected to use the chat completions route, text generation with completion-style models may use the completions route, knowledge base indexing depends on the embeddings route, and speech features depend on the audio routes. Treat this mapping as something to confirm, not assume, because the provider code and feature set change between Dify releases. Write down each feature you plan to use and the route it calls in your Dify version, then send a direct request to each route before any workflow depends on it.

The chat completions route needs a chat template. The vLLM online serving documentation states that a model must provide one, or be given one with the --chat-template option, before it can serve that API. Many instruction-tuned models ship a template, but some fine-tuned or community checkpoints do not, and the failure can appear only when Dify sends its first chat message. Add a chat request with a messages array to your acceptance test and confirm the rendered turn format matches what the model expects. Record the template source in your deployment configuration, so that a model swap or vLLM upgrade does not change chat behavior without anyone noticing.

Dify and vLLM should sit inside the same network boundary, with the vLLM server reachable only from the Dify services that need it. The --api-key option protects the /v1 routes that Dify calls, but the vLLM security documentation warns against relying on it alone and recommends a reverse proxy that allowlists only the endpoints meant for users. Endpoints such as /metrics, /health and /pause sit outside that key's protection, so keep them behind the proxy or on an internal interface that Dify users cannot reach. Store the API key in Dify's secret handling, and rotate it on both sides in the same change window so the provider does not fail mid-rollout.

How the model is served, including parallelism, batching, quantization and accelerator choice, belongs to the vLLM engine and inference scope and is not decided on this page. This page covers only the calls Dify makes once that server is running. Designing agents, prompts and tool use inside Dify, and training or fine-tuning the models themselves, are outside this page and are handled separately.

Configuring the vLLM model provider in Dify, step by step

This sequence connects a self-hosted Dify instance to a vLLM server you run in the same network boundary. It starts with the inference endpoint and ends with a tested prompt inside a Dify workflow, so each layer is verified before the next one is added. Work through the steps in order, because a failure found early is much easier to diagnose than one found at the end.

  1. Start the vLLM server with vllm serve

    Run vllm serve on the accelerator host with the model you plan to use in Dify. If the model has no built-in chat template, pass one with --chat-template now, since the chat completions endpoint will not work without it. Pass --api-key if any client will reach the server, and remember that the key protects only the /v1 endpoints, so a reverse proxy should limit exposure further. Your platform or infrastructure team owns this step because it decides the accelerator, model location and network exposure. The step is done when the startup logs show the model loaded and the server listening.

  2. Confirm the model answers on /v1

    From the Dify host, send a request to the /v1/models endpoint of the vLLM server and check that the response lists the model name you intend to use. Then send a short request to /v1/chat/completions. Run these checks from inside the Dify api container as well as from the host, because container networks often resolve addresses differently. If the request fails from the container but works from the host, the usual causes are a firewall rule, a bind address set to localhost, or a host that the containers cannot reach. Do not continue until both requests return a valid response.

  3. Start Dify from Docker Compose files

    Start Dify from its Docker Compose files on a host with Docker Compose 2.24.0 or later, which the Dify self-hosting docs require. The docs also call for at least 2 CPU cores and 4 GB of RAM. The stack starts the api, worker, web, plugin daemon, PostgreSQL, Redis, Weaviate, Nginx, a code sandbox and an SSRF proxy. Set SECRET_KEY before the first start, because changing it later logs out all users. Your platform team runs this step. It is done when every service reports as running and the Dify console loads in a browser through the address Nginx exposes.

  4. Install the vLLM provider in Dify

    Sign in to the Dify console with an account that can manage model providers in the workspace, and open the Model Provider settings. Find the vLLM provider in the list and install it. Confirm the account's role with your Dify administrator if the option is not visible. The step is done when vLLM appears in the installed providers list and no install error is shown. This step only adds the provider to Dify, so no model is connected until the next step.

  5. Enter the endpoint, model name and key

    Open the vLLM provider settings and enter the base URL of the vLLM server, ending in /v1 and reachable from the Dify containers. Do not use localhost, because inside a container it refers to the container itself. Enter the model name exactly as the /v1/models response reports it. If you started vLLM with --api-key, enter the same key. Save the settings and run the provider's validation. The step is done when the connection test succeeds. A failed test usually points to an incorrect base URL, a wrong model name or a host unreachable from the containers.

  6. Add the model to a workflow node

    Open a Dify app in the workflow editor and add an LLM node, or an agent node if the app uses agent reasoning. Select the vLLM provider and the model you configured, then set the basic parameters such as temperature and maximum output length. Use the parameters your vLLM team has agreed on, and confirm them against the model's documentation. The step is done when the node shows the vLLM model as selected and the editor accepts the configuration without a validation error.

  7. Run a test prompt and check results

    Run a short test prompt through the workflow in Dify's preview or debug mode. The step is done when Dify displays a model response and the vLLM server logs show a matching request. If the run fails, check the three common causes in order: the base URL and its reachability from the containers, the chat template on the vLLM side, and the model name. Keep both stacks on the same isolated network segment, because vLLM's security documentation treats node-to-node traffic as insecure by default and that guidance also applies to the path between Dify and vLLM.

How Dify provider fields map to vLLM settings

This table pairs each field in Dify's vLLM provider form and each model selector in a workflow or agent with the vLLM value it must match. Read it as a checklist: a mismatch in any row usually produces a connection, not-found or context error on the first call. Confirm field names against the Dify version under test, since console labels can change between releases.

Dify settingMust match in vLLMHow to check
Endpoint URLThe base address of the vLLM server with /v1 appended, reachable from the Dify api and worker containers.Run curl from inside the Dify api container against the /v1/models path.
Model nameThe exact identifier vLLM serves: the model path given to vllm serve, or the value of --served-model-name if set.Compare the id in the /v1/models response character for character with the form entry.
API keyThe same value passed with --api-key on vllm serve. If the flag is not set, the server accepts any value.Send one request with the key and confirm a 200 response. Remember --api-key does not cover every endpoint.
Context lengthThe maximum context the server runs with, set at startup through --max-model-len where used.Read the configured length from the vLLM startup log and enter the same figure in Dify.
Model typeChat or completion, matching how the Dify node calls the model. Chat calls need a chat template on the model or passed with --chat-template.Send a short chat request and confirm the server returns a completion without a template error.
Workflow or agent node model selectorThe node must select the vLLM provider and the model name from the form, not a model with the same name from another provider.Open each LLM and agent node after saving the provider and confirm the selected provider label is vLLM.
Route reached by the callChat calls from Dify should reach /v1/chat/completions. Confirm which route each node type uses in the Dify version under test.Check the vLLM access log or request metrics after one test run of the workflow.
Console labels and menu pathsField names and navigation can change between Dify releases, so the mapping must be rechecked after each upgrade.Record the Dify version next to this map and re-verify the form fields before each release change.

Security settings for the Dify to vLLM connection

Dify calls vLLM over the network, so the protection of that path depends on settings in both products. The cards cover the vLLM API key and its gaps, the Dify settings that protect secrets and outbound traffic, and the license terms that govern how the platform can be operated.

vLLM API key and its limits

The vLLM --api-key option protects the /v1, /v2, /inference and /cohere endpoints, but not /invocations, /pause, /resume, /abort_requests, /metrics or /health. The vLLM security documentation warns against relying on the key alone and recommends a reverse proxy that allowlists only the endpoints users need. Confirm which paths the Dify provider calls and which paths are reachable from the Dify network segment.

Reverse proxy allowlist for vLLM

Place a reverse proxy in front of the vLLM server and allow only the routes Dify needs, such as the /v1 API endpoints used for model calls. Block or restrict the control and metrics paths from every network except those of the operators who need them. Test the allowlist with requests to each blocked path, and record the result as evidence for your security reviewers.

Dify SECRET_KEY management

Dify uses SECRET_KEY to sign session cookies and JWTs and to encrypt OAuth credentials. Changing it after deployment logs out all users, so set it before the first production start and store it in your secrets manager. Plan any rotation as a scheduled event with users informed, and confirm that backups of the key are kept with the database backups they must match.

Workspace encryption keys

Dify can store workspace encryption keys locally or in Azure Key Vault. Decide which option fits your key custody model before storing provider credentials for vLLM or other model providers. If you choose local storage, define who can read the host and how the key is backed up. If you choose Azure Key Vault, confirm access policies, key rotation and recovery steps with the team that owns the vault.

SSRF_PROXY for outbound requests

The SSRF_PROXY settings route Dify's outbound requests through a proxy that blocks internal and private IP ranges. This limits how a workflow or tool can reach addresses inside your network. Confirm that the vLLM endpoint address is permitted through the proxy as intended, and test that internal services are unreachable from Dify workflows and tools.

License limits on multi-tenant use

The Dify Open Source License is a modified Apache License 2.0 that does not allow using the source code to operate a multi-tenant environment, where one tenant is one workspace, without written authorization. It also forbids removing or modifying the logo or copyright information in the console. Have legal counsel review these terms against your intended number of workspaces and any branding plans before deployment.

Keeping Dify and vLLM inside one network boundary

The first decision is where traffic is allowed to flow. Place the Dify containers, the vLLM host and the reverse proxy in one controlled network segment, and give vLLM no route from outside that segment. Dify's Docker Compose deployment starts the api, worker, web, plugin daemon, code sandbox and SSRF proxy alongside PostgreSQL, Redis and Weaviate, so the Dify side already spans several containers that must reach each other. The only inbound path should be the one your users need, which is the Dify web and API entry point. The vLLM server should accept connections only from Dify's outbound path and your monitoring network. Confirm that the vLLM host has no public address and that no security group or firewall rule exposes the vLLM listening port or its management paths to the internet. Write the segment layout and firewall rules down before the first model call, because a reviewed diagram is far easier to defend in an audit than a reconstruction made afterward.

The SSRF proxy is where most teams meet an unexpected failure. Dify routes outbound requests through the proxy configured by its SSRF_PROXY settings, and that proxy blocks internal and private IP ranges. Self-hosted vLLM usually sits on a private address, so the proxy can refuse Dify's calls even though both services share a segment. Do not resolve this by disabling the proxy or adding a broad bypass for private ranges, because that opens the same path to every other internal host Dify can reach. Instead, read the environment variable reference for your exact Dify version to confirm how model provider traffic is routed and whether an allowlist entry is required. If one is required, scope it to the single vLLM host and port. Then test two things: a model call from Dify must succeed, and a request from Dify to an unrelated internal address must still be blocked.

The vLLM --api-key option does not cover every path. According to the vLLM security documentation, the key protects /v1, /v2, /inference and /cohere, but not /invocations, /pause, /resume, /abort_requests, /metrics or /health. The documentation warns against relying on the key alone and recommends a reverse proxy that allowlists only the endpoints users should reach. For Dify, that means forwarding the /v1 paths Dify calls and rejecting everything else at the proxy. Metrics need separate handling. vLLM exposes Prometheus-format metrics at /metrics, covering request counts, token throughput, latency histograms and KV cache use. Let Prometheus scrape that endpoint from a dedicated monitoring network, keep /metrics off the route Dify and users reach, and confirm the scrape source addresses in your firewall rules. Restrict who can query the Prometheus server as well, because usage and latency data reveals how the model is being used.

If vLLM spans more than one node, the network boundary becomes a cluster boundary. The vLLM security documentation states that communication between nodes in a multi-node deployment is insecure by default, with no authorization or encryption, and that nodes must be protected by placing them on an isolated network. Multi-node runs use Ray or vLLM's own multiprocessing backend for this traffic, so the node-to-node network should be a dedicated segment that Dify, end users and the monitoring network cannot reach. Include that segment in your threat model as part of the trust boundary. Agree with the platform team, before go-live, on who can add nodes and how those changes are reviewed. The KubeRay sibling page covers the Ray-specific isolation details, so this section sets the requirement only. A single-node deployment avoids this node-to-node path, but it still needs the proxy and metrics controls described above.

Testing Dify workflows and agents against vLLM before go-live

Connectivity testing confirms that the Dify api container can reach the vLLM server, and that the parts of vLLM never meant for users cannot be reached from user networks. Start from inside the Dify stack, because that is the path the model provider uses in production. Record the result of each check so the platform owner can compare it with the design.

  • Requests from the Dify api container: send a model call from the api container to the vLLM /v1 endpoint URL configured in Dify's Model Provider settings, and confirm a response returns.
  • Route checks against /v1: confirm the chat and completion routes the workflows use respond, and that the model name registered in Dify matches the model vLLM reports.
  • Metrics and health not reachable from user networks: from a host on a user network, confirm that /metrics and /health do not respond through the proxy.
  • Sign-off: the platform owner signs off once all three checks pass in the test environment and the results are saved.

Confirm that the tested network path matches the production network layout, since a test from a different segment proves little about the live boundary.

Common failures when connecting Dify to vLLM

This table lists the failures teams most often hit when Dify's model provider points at a vLLM server, with the likely cause and the first check for each. Read the rows in order, since the connection and routing checks rule out network problems before you look at model behavior. Most failures trace back to the endpoint URL, the chat template, the API key or proxy path, or timeouts that were never set for a self-hosted model.

SymptomLikely causeFirst check
Provider test fails with a connection errorThe base URL is missing the /v1 path, or the vLLM host is not reachable from the Dify api and worker containers, or the SSRF proxy blocks the private addressConfirm the URL ends in /v1 and run a request from inside the Dify api container to the same address, then review the SSRF proxy settings
Chat calls fail while completions workThe served model has no chat template and none was passed with --chat-template, so /v1/chat/completions cannot format messagesCheck the vLLM startup log for template errors, then restart vLLM with a chat template supplied for that model
Authorization errors (401 or 403)The API key in Dify does not match the key vLLM was started with, or a reverse proxy or allowlist rule blocks the path Dify callsCompare the key set in the vLLM --api-key option with the Dify provider entry, then test the same path with curl through the proxy
Agent or workflow nodes time outThe model generates too slowly for the accelerator it runs on, or the Dify request timeout is shorter than a typical multi-step generationMeasure time to first token and tokens per second on vLLM directly, then compare with the timeout values configured in Dify
Model name rejected or model not foundThe model name entered in Dify does not match the identifier vLLM reports when it serves the modelCall /v1/models on the vLLM endpoint and copy the exact identifier into the Dify model configuration
Provider form or calls change after a Dify upgradeA new Dify release changed the vLLM provider fields or the request path that Dify uses, so saved settings no longer matchReview the Dify release notes for the provider, re-enter the provider settings in a staging copy and rerun the provider test and a chat call

Questions buyers ask before connecting Dify to vLLM

What does it cost to connect Dify to a self-hosted vLLM server?

Connecting the two platforms carries no license fee for vLLM, and Dify Community is free, so the cost comes from the work around them. Accelerator capacity is usually the largest recurring item, since vLLM needs GPUs or other supported hardware sized for the models and traffic you plan to serve. Surrounding infrastructure covers the Docker hosts for Dify, network paths, storage and monitoring. Implementation and operators are paid as one-time build effort and as ongoing staff time. Dify Enterprise is custom priced and adds SSO, multiple workspaces and professional support, so it is quoted separately. Ask any implementation partner for a line-item quote that separates one-time setup from recurring infrastructure and staff time.

How long does it take to connect Dify to vLLM?

The timeline depends on how much of the vLLM serving and network work already exists. If a working vLLM endpoint is reachable from the Dify host, the connection itself is a small change in Dify's Model Provider settings, pointed at the vLLM /v1 endpoint. If the serving layer, hardware drivers, model choice or network rules still need work, that work sets the schedule. The Dify side follows the standard Docker Compose path, but testing with your workflows, access rules and approvals usually takes longer than the connection. No duration can be fixed before the facts are known. Ask for a written scope that lists which items already exist, which are new, and the acceptance tests that close the work.

What do we need to provide before a vLLM and Dify integration starts?

Name one owner for the vLLM serving stack and one owner for Dify, and confirm that each can make decisions about configuration and upgrades. Your network team must approve the traffic path between Dify and the vLLM /v1 endpoint, and that approval should be recorded before work begins. Provide access to the models you plan to serve, including the rights to use their weights, and confirm the chat template each model needs, since vLLM requires one to serve chat completions. Supply test data and sample prompts that reflect your actual workflows, along with the responses you expect. Restrict what reaches users, because the vLLM --api-key option does not cover every endpoint, so a reverse proxy allowlist is part of the requirement.

Can our internal team connect Dify to vLLM without a partner?

Yes, for a narrow case. A single Dify workspace on the Community edition, with a team that already has Docker and vLLM skills, is a reasonable internal project. A partner becomes more useful as requirements grow. Community edition is limited to one workspace, so multiple workspaces point toward Enterprise. SSO through OpenID Connect, SAML or OAuth2 adds identity integration work, and compliance evidence adds documentation work. A multi-node vLLM deployment adds network isolation work. The decision also depends on who will own upgrades after launch, not only the first install. Check whether the people responsible have time for vLLM minor releases every two weeks and Dify releases about monthly.

How often do vLLM and Dify need upgrade checks?

Both need a scheduled upgrade check, because both ship often. vLLM publishes new minor releases about every two weeks, for example v0.31.0 on October 5, 2026 in its GitHub releases. Dify minor releases arrive roughly monthly, for example 1.17.0 on August 25, 2026 and 1.17.1 on September 10, 2026. Each check should confirm that the vLLM OpenAI-compatible endpoints Dify calls still behave as expected, that the model provider settings still work, and that security changes in Dify's release notes have been reviewed. Treat each upgrade as a change with a test run against your saved prompts, not as a routine restart.

Does Dify keep vLLM traffic inside our network boundary?

Dify keeps traffic inside your boundary only when you design the network to do so. The Dify Docker Compose stack includes an SSRF proxy that routes outbound requests and blocks internal and private IP ranges, so reaching a vLLM host on a private address may need an explicit rule in that proxy configuration. Confirm the exact behavior for your Dify version before relying on it. Separately, vLLM multi-node communication is insecure by default and must sit on an isolated network. Check each hop: browser to Dify, Dify to vLLM, and vLLM to any other nodes. Record the rule that allows each one, and review those rules at every upgrade.

What should we verify after Dify is connected to vLLM?

Verify the integration with a short test plan that covers the model, the workflows and the controls around them. Confirm that the vLLM model appears in Dify's model provider settings and that a chat completion returns from the /v1 endpoint. Run your saved workflows and agents against representative prompts, and record latency and error rates. Scrape the vLLM /metrics endpoint with Prometheus to confirm that request counts and KV cache use are visible. Test from outside the allowed path to confirm that endpoints not meant for users, such as /metrics and /health, are blocked at the proxy. Keep these test cases so they can run again after each vLLM and Dify upgrade.

How DeployOpen scopes and delivers the Dify and vLLM connection

DeployOpen treats the Dify and vLLM connection as one piece of a self-hosted stack that stays inside your network boundary. We scope the work in writing first, build and test the connection in your infrastructure, and hand over documented configuration and operating notes your team can run.

How we scope

  • Confirm which vLLM models, chat templates and endpoints Dify workflows and agents will call.
  • Record where Dify and vLLM run, and how traffic between them stays on private addresses.
  • Agree in writing which Dify edition, workspaces and vLLM endpoints are in scope before work starts.

How we build

  • Install the vLLM model provider from Dify's Model Provider settings and point it at the vLLM /v1 endpoint.
  • Restrict the vLLM endpoints that Dify needs, since the vLLM --api-key option alone does not cover every route.
  • Test chat, completion and embedding calls from Dify workflows and agents, and record the results.

How we hand over

  • Deliver the Docker Compose configuration, environment settings and vLLM startup parameters used in the connection.
  • Document the network rules, secret handling and the endpoints allowed through the reverse proxy.
  • Walk your operators through model changes, rollback steps and where logs and metrics are read.

How we support

  • Plan vLLM and Dify upgrades separately, checking the release notes of each before changing the connection.
  • Offer ongoing support, upgrades and continuous testing as a retainer, following the agreed scope.
  • Confirm with your team and the vendors which versions and support terms apply to your deployment.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.