Migrate from the OpenAI API to self-hosted models on vLLM

Moving from the OpenAI API to open-weight models on vLLM is mainly a work of gateway routing, GPU sizing and output validation. This page sets out what moves cleanly, the sequence, and what drives cost and risk.

On this page

Migrate from the OpenAI API to vLLM: what the move involves

Most teams arrive here because of a renewal, a data residency requirement, a model deprecation notice or a per-token bill that keeps growing. The move is mostly an endpoint, validation and capacity change, because the vLLM server started with vllm serve exposes OpenAI-compatible routes such as /v1/chat/completions and /v1/embeddings, so many applications only need a new base URL and a model name. The harder work is proving that prompts written for a hosted model still produce acceptable output from an open-weight model, and sizing GPUs for real peak traffic. Platform engineering usually owns the cluster, the gateway and the rollout. ML or application engineers own the prompt and output evaluation. Security owns the endpoint exposure, keys and logging. Effort and risk depend mainly on how many prompts, structured outputs and tool calls the applications depend on, and on how much of that behavior your current evaluation suite already covers. Confirm those counts with the application owners before estimating anything.

Keep OpenAI as a fallback during cutover. Put a gateway such as the self-hosted LiteLLM proxy between applications and both backends, so each application still calls one OpenAI-compatible endpoint. LiteLLM's router supports priority ordering for failover, retries and cooldowns after repeated failures, which lets you send a small share of traffic to vLLM, compare outputs and roll back by changing routing rules rather than application code. Plan the gateway's own data stores early. LiteLLM's production guide names PostgreSQL as the primary database and requires Redis 7.0 or newer once more than one proxy instance runs, so shared rate limits and router state stay consistent. Also check that the fallback path does not quietly send regulated data to OpenAI when the reason for leaving was residency, and confirm the vLLM fallback behavior with your own load tests.

Expect recurring costs for GPU capacity, the gateway and database, monitoring, patching vLLM (which ships new minor releases about every two weeks) and the people who run the service. Expect one-time costs for hardware or reserved capacity, the initial evaluation build, network and identity work, and the security review of the endpoint. The vLLM security documentation says --api-key does not protect every route, so a reverse proxy that allowlists only user-facing endpoints is part of the design. Ask any implementation partner for a written scope covering validation criteria, cutover steps, rollback tests and handover, and ask what they will not cover. DeployOpen plans and implements this kind of migration in the client's own infrastructure under a fixed scope agreed in writing before work starts.

Which OpenAI API features map cleanly to vLLM and which need rework

This table maps the OpenAI API features your applications likely use to the vLLM endpoints and LiteLLM gateway features that cover them, marked clean, needs rework or gap. Read each row against your own call patterns, because the rework cost depends on which features your code actually calls. The main takeaway is that core chat and embeddings traffic usually moves cleanly, while hosted-only features need confirmation for your chosen model and vLLM version.

FeaturevLLM and LiteLLM mappingStatus
Chat completionsvLLM serves /v1/chat/completions; point the OpenAI client base URL at the LiteLLM gateway, which forwards to vLLMclean
Legacy completionsvLLM serves /v1/completions; confirm prompt formatting and stop tokens for each open-weight modelclean
Responses APIvLLM serves /v1/responses; check which request fields and output item types your version supportsneeds rework
EmbeddingsvLLM serves /v1/embeddings; a different model produces different vectors, so stored embeddings must be regeneratedneeds rework
StreamingServer-sent events are supported through the same endpoints; test client parsers and timeouts through the gatewayclean
Tool and function callingDepends on the model's chat template and the vLLM tool parser configured for it; validate argument JSON on every modelneeds rework
Built-in hosted tools (web search, code interpreter, file search)No direct vLLM equivalent; rebuild as your own tools or services, and confirm each onegap
Files and file storage APINot part of vLLM's serving endpoints; store and retrieve documents in your own object storagegap
Fine-tuned model IDsHosted fine-tunes do not transfer; serve your own adapter or weights and map the new name in LiteLLM routinggap
Batch API behaviorConfirm batch request and result handling for your version; LiteLLM and your job runner may need to replace itneeds rework

What to move, what to rebuild and what to keep at OpenAI

Cutting over from the OpenAI API is less about swapping one endpoint than about sorting what you own into three groups: assets you carry across, assets you rebuild on your own stack, and assets that stay tied to OpenAI until you export them. The cards below cover each group, starting with the items that most often break a cutover silently.

Prompts and system messages

Prompts and system messages are yours to move, but they were tuned against OpenAI's models and will behave differently on an open-weight model served by vLLM. Keep them in version control with a record of the model and version each one was validated against. Before cutover, rerun every prompt on the target model and compare outputs, especially for structured output, tool calls and refusal behavior. Confirm which chat template the served model uses, since it affects how system messages are rendered.

Evaluation sets and baselines

Your evaluation sets are the evidence that a self-hosted model is good enough, so they are the first asset to export and freeze. Store each case with its input, expected behavior and the scores from the current OpenAI model as a baseline. A set drawn from production traffic will catch regressions that generic benchmarks miss. Expect to add cases for failure modes you only see after cutover, and agree the pass threshold with the product owner before you run the comparison.

Virtual keys and per-team budgets

LiteLLM virtual keys give each application or team its own key with per-key, per-user or per-team budgets, TPM and RPM limits, and model restrictions, and they require a PostgreSQL database. Recreate your current spend limits as LiteLLM budgets before routing any traffic, so a team that exhausts its quota fails in the gateway rather than in production. Store the master key, which must start with sk-, in a secret manager. Confirm which key types your teams need and who approves budget increases.

Logs and spend history

OpenAI usage dashboards and request logs are not a migration asset you can copy across, so decide what you need to retain before the switch. Export spend history per team and per model from your current billing or usage reports, then set LiteLLM to log requests to the observability system you already run. Records of prompts and responses may hold personal data, so align retention and access rules with your privacy team before they move into your own stores.

Application integrations using OpenAI SDKs

Applications built on the OpenAI SDKs can usually point at the gateway by changing the base URL and key, because vLLM and LiteLLM both expose OpenAI-compatible endpoints. Check each call for features the open-weight stack may not support, such as specific tool-calling formats, the Responses API, embeddings or audio. Test every integration against the gateway in a staging environment, and list the endpoints you expose so a reverse proxy can allowlist only those routes.

Stored files, assistants and fine-tunes

Files, vector stores, assistants and fine-tuned models held on OpenAI's platform do not move through the chat completions path, so they need an explicit plan. Ask OpenAI which of these you can export in what format, and confirm whether a fine-tune's weights can leave the platform at all. Anything that cannot be exported must be rebuilt, which means re-creating training data, retraining or re-embedding on your own infrastructure. Treat this as its own workstream with a named owner.

The migration sequence from inventory to decommission

The sequence moves production traffic from the OpenAI API to open-weight models on vLLM one stage at a time, so each stage produces evidence that the next stage depends on. Every application keeps one OpenAI-compatible endpoint through a LiteLLM gateway, and the hosted API stays available as a fallback until the evidence supports removing it.

  1. Inventory endpoints, models and prompts in use

    Engineering leads list every application, service and script that calls the OpenAI API, including the endpoints used (chat completions, responses, embeddings, audio), the model names pinned in code, request volumes, token sizes and any tools or structured outputs the calls depend on. Ask each owning team to confirm its prompts and the behavior it relies on, since undocumented assumptions surface here. The output is an endpoint inventory with owners, a prompt register and a list of features that a replacement model must support. The step is done when every caller is accounted for and each owner has signed off on the list.

  2. Build an evaluation baseline from current traffic

    Before changing anything, the team captures a representative set of real requests and the hosted model's responses, with personal data removed under your own policy. Reviewers from the business side score a sample for accuracy, format compliance, refusal behavior and tone. The output is a versioned evaluation dataset and a baseline score per use case, which becomes the acceptance threshold for every later stage. The step is done when the baseline is stored outside the application repositories and the owners agree which failures block a cutover.

  3. Stand up a pilot model on vLLM

    Platform engineers size GPU capacity for one candidate open-weight model, deploy it with vLLM, and confirm that the vllm serve endpoints used by the inventory respond as expected. vLLM's security guidance says the --api-key option does not cover every route, so a reverse proxy should allowlist only the endpoints meant for users, and inter-node traffic in multi-node runs must sit on an isolated network. The output is a tested model server, a metrics dashboard fed from the /metrics endpoint and a documented version pin. The step is done when a load test on representative prompts meets the latency and throughput targets set by the team.

  4. Route the pilot through a LiteLLM gateway

    The platform team places a self-hosted LiteLLM gateway in front of both the hosted OpenAI models and the vLLM pilot, so applications keep calling one OpenAI-compatible endpoint. Virtual keys, per-team budgets and rate limits are configured, and the gateway's routing is set so that only the pilot's named use cases reach vLLM. LiteLLM's production guidance calls for PostgreSQL, and Redis 7.0 or newer once more than one proxy instance runs. The output is a versioned routing configuration and a runbook for changing it. The step is done when a test application switches models by changing only the model name in the gateway configuration.

  5. Validate outputs against the baseline

    The pilot model answers the evaluation dataset through the gateway, and the results are scored with the same rubric used for the baseline. Failures are grouped by cause, such as prompt sensitivity, output format breaks, tool-call differences or refusal changes, and each group is either fixed through prompt revision or recorded as an accepted difference by its owner. Any prompt revised here must be re-tested against the hosted model before the change is accepted. The output is a validation report with pass rates per use case and a list of approved prompt changes. The step is done when every blocking use case meets its baseline threshold.

  6. Run shadow traffic in parallel

    The gateway sends a copy of selected production requests to the pilot model while the hosted model keeps serving users. Only the hosted response reaches the application, and the pilot responses are stored for comparison under the same data handling rules as the rest of the system. Teams review divergences weekly and check latency, error rates and cost per request in the monitoring stack. The output is a comparison log and a go or no-go recommendation for each use case. The step is done when the shadow results match the offline validation and no new failure category has appeared in live traffic.

  7. Shift traffic gradually with OpenAI as fallback

    The routing configuration moves a small share of each approved use case to vLLM, then increases it in steps, with the hosted OpenAI model kept as a fallback route for errors, timeouts and capacity limits. LiteLLM's router supports retries, cooldowns and priority ordering for failover, which lets the gateway fall back without application changes. Each increase requires the same metrics and evaluation checks as before, and rollback means changing the routing weight back. The output is a traffic-shift log and a tested rollback procedure. The step is done when the target share runs for the agreed period with no unresolved regressions.

  8. Decommission hosted keys and close the fallback

    Once the owners accept the final results, the team removes the fallback route for approved use cases, revokes the OpenAI API keys that applications used directly, and moves the remaining OpenAI credentials into the secret manager used for the gateway. Any OpenAI-dependent use case that was not approved stays on the hosted route under a documented exception. The output is a decommission record listing revoked keys, retained exceptions, final evaluation scores and the cutover runbook for future model upgrades. Confirm the record with the vendor and your compliance lead before closing the project, especially where retention or contractual terms apply.

Sizing GPUs and choosing the vLLM deployment pattern

A single node is the simplest starting point for most migrations. One server hosts the model, and vLLM splits its weights across the GPUs in that machine using tensor parallelism. Because all GPUs share one host, the traffic between them stays inside a single machine, which keeps the operating model small and the failure domain easy to reason about. The trade-off is that one host becomes your capacity ceiling and your single point of failure, so availability depends on a standby node or a planned maintenance window.

  • Tensor parallelism: vLLM shards each layer of the model across the GPUs on the node, so a model too large for one card can run on several cards in the same server.
  • Capacity ceiling: Throughput is bounded by the one machine, so plan headroom for peak concurrency rather than average load.
  • Failover: A second identical node behind your gateway is the usual way to remove the single point of failure.
  • Operations: One host means one set of drivers, one CUDA or ROCm stack and one upgrade path to test.
  • Hardware selection: Confirm with vLLM's installation documentation which GPU families and driver versions your chosen release supports before ordering hardware.

Before you commit, confirm the GPU count with a pilot on the exact model, context length and concurrency you expect in production.

Securing the vLLM endpoint behind a LiteLLM gateway

Do not treat the vLLM --api-key option as the access control for the endpoint. The vLLM security docs state that it protects the /v1, /v2, /inference and /cohere routes but not /invocations, /pause, /resume, /abort_requests, /metrics or /health, and they warn against relying on it alone. The practical control is a reverse proxy that allowlists only the paths your applications need, so the vLLM server is never reachable directly from user networks. Test this from outside the cluster: each unlisted path should return a refusal, and /metrics should be reachable only by your monitoring system. Confirm the current route list against the vLLM security documentation for the version you deploy, because the docs change between releases.

Place LiteLLM as the only client-facing entry point. Its virtual keys, which require a PostgreSQL database, carry per-key, per-user and per-team budgets, TPM and RPM limits and model restrictions, so a leaked application key can reach only the models and spend it was issued for. Set LITELLM_MASTER_KEY, which must start with sk-, in a secret manager rather than in a configuration file or container image, and issue day-to-day keys from it instead of sharing the master key. Routing and fallbacks also belong here: if the vLLM deployment is unavailable, LiteLLM can fail over to the hosted OpenAI API only if you deliberately configure that route, which makes the fallback path a data-handling decision to document and approve, not a silent default. Confirm which SSO and secret manager integrations your license tier covers before you plan the admin access model.

Multi-node vLLM deployments need their own network protection. The vLLM security docs state that communication between nodes is insecure by default, with no authorization or encryption, so the nodes running pipeline or data parallel workers, and any Ray cluster they use, must sit on an isolated network that only the inference nodes can reach. Keep LiteLLM, its PostgreSQL database and Redis on separate segments from the GPU nodes, and restrict egress from the inference nodes so they cannot send traffic to arbitrary destinations. Review these rules in your network policy and firewall configuration, and have a security engineer test them, because a single-node pilot can pass every check while a later multi-node expansion quietly opens an unprotected path.

What usually goes wrong and how to prevent it

Most failed migrations from a hosted API do not fail on day one. They fail quietly: outputs drift, capacity runs short at peak, an admin route is reachable, or a fallback sends data back to the hosted provider. Each card below names one failure, why it matters during the move from the OpenAI API to vLLM, and the check that prevents it.

Silent output drift after switching models

An open-weight model can answer the same prompt differently from the hosted model, even when the request format is identical. Prompts tuned for one model often produce different formatting, refusals or tool-call arguments on another, and nothing in the HTTP status code shows it. Build a fixed evaluation set from real production prompts, score the candidate model against the current OpenAI outputs, and review failures by task before any traffic moves. Pin the model version and the serving configuration so a later change is a deliberate release.

Unmeasured GPU capacity under peak load

Teams often size GPUs for average traffic and discover the gap at month-end or during a launch. Throughput depends on model size, context length, concurrency and output length, so a load test using your own prompt mix is the only reliable input. Use the metrics vLLM exposes on its API server, including request counts, token throughput, latency histograms and KV cache use, to see where queueing starts. Ask your GPU vendor or cloud provider to confirm the reserved capacity and failover options for a second node before you commit.

Exposed metrics or admin routes

The vLLM --api-key option protects the /v1 endpoints but not /metrics, /health, /pause, /resume or /abort_requests. A service that looks protected can still let anyone on the network read traffic statistics or stop generation. Put a reverse proxy in front of vLLM that allowlists only the endpoints applications need, keep the server on a private network segment, and test the unlisted routes from outside the cluster after every deployment.

Fallback to OpenAI reintroducing data egress

LiteLLM fallbacks are useful during cutover, but a route configured to fall back to the hosted API sends prompts out of your environment the moment the self-hosted deployment fails. For a team whose reason to migrate was data control, this reverses the decision without anyone noticing. Keep the fallback in a separate model group, restrict which virtual keys can reach it, and alert on any request served by an external provider in the LiteLLM logs.

Redis missing with multiple proxy instances

A single LiteLLM proxy can keep rate limits and router state in memory, but once more than one instance runs, each one counts requests separately and limits stop being enforced. LiteLLM's production guide requires Redis 7.0 or newer in this case, for shared rate limits, router state and cache. Deploy Redis before the second replica, confirm that a key's TPM or RPM limit holds when requests are split across pods, and keep PostgreSQL as the primary database for virtual keys and spend tracking.

Undocumented prompt dependencies

Applications often depend on behavior the hosted API handled implicitly, such as default system messages, token limits, JSON mode or a specific tool-call schema. These dependencies live in code and prompt templates that nobody has listed, so they break only when the new model is used. Inventory every call site, record the parameters and output contract each one assumes, and keep that list in version control next to the prompt templates and evaluation set so each model change is checked against the same inventory.

What drives cost and duration, and how to keep each down

This table lists the cost and effort drivers for moving production traffic from the OpenAI API to vLLM behind LiteLLM, with who pays for each and what to ask for in a written scope. Read each row as a lever: the first column names the driver, the second says what changes the cost, and the third says how to keep it down. vLLM itself has no paid edition, so most of the spend sits in GPUs, operations and the people who run them.

DriverWhy it changes cost or effortHow to keep it down
GPU capacity and utilizationvLLM has no license fee, so accelerator capacity is the largest recurring cost. Idle GPUs cost the same as busy ones, and peak sizing for traffic spikes leaves capacity unused most of the day.Measure real token throughput and KV cache use from the /metrics endpoint before buying capacity. Confirm with your cloud or hardware provider whether reserved or on-demand pricing fits your traffic pattern.
Models and prompt families to validateEach model version and each prompt family needs its own output checks against current prompts. The count drives one-time evaluation work and recurring re-validation after each model or vLLM upgrade.Group prompts by task, keep a fixed golden set per family, and limit the first cutover to the families with the highest OpenAI usage.
Gateway and database operation (LiteLLM, PostgreSQL, Redis 7.0 or newer)LiteLLM virtual keys need PostgreSQL. Redis 7.0 or newer becomes required once more than one proxy instance runs for shared rate limits and router state. Both need backups, patching and monitoring.Run one Uvicorn worker per pod and scale horizontally, as LiteLLM recommends. Confirm whether your platform team already operates managed PostgreSQL and Redis so the gateway adds no new database estate.
Monitoring and loggingPrometheus metrics, gateway logs and trace storage add retention and storage costs, and dashboards need someone to maintain them.Reuse the existing Prometheus and Grafana stack. Set retention per data class and keep prompt content out of logs unless policy allows it.
Security hardeningThe vLLM --api-key option does not cover /metrics, /health or /invocations, and inter-node traffic is unauthenticated by default. Reverse proxy rules, network isolation, secret handling and access reviews all take time.Put a reverse proxy in front of vLLM that allowlists only user-facing endpoints. Keep LITELLM_MASTER_KEY in a secret manager. Confirm the hardening scope in writing before work starts.
Integration countEach application that calls OpenAI needs a configuration change to point at the gateway, plus testing of tool calling, streaming and error handling. Count the applications and SDK versions in scope.Inventory every caller first. Applications that already use the OpenAI SDK with a configurable base URL need the least change.
Fallback to OpenAI during cutoverKeeping OpenAI as a fallback means paying for both APIs during the transition and maintaining routing rules that send traffic in both directions.Define the fallback trigger, the traffic share and the exit date in the cutover plan. Remove the fallback once the self-hosted path meets the agreed checks.
Staff who run inferenceSomeone must own on-call response, model upgrades, vLLM release tracking (minor releases arrive about every two weeks) and capacity changes. This is the largest recurring effort and is often underestimated.Name an owner and a backup before cutover. Ask the provider to document the runbook and to train your team on it.
One-time versus recurring workOne-time costs include design, gateway setup, output validation, migration and hardening. Recurring costs include GPUs, databases, monitoring, upgrades, re-validation and on-call.Ask the quote to split these two groups separately and to state which items are fixed-scope deliverables and which are retainers.

Questions teams ask before moving off the OpenAI API

What does a migration from the OpenAI API to vLLM cost?

The cost is mostly GPU capacity, the infrastructure around it and the people who run it, because vLLM itself has no paid edition. GPU or accelerator capacity is the largest recurring line, and it recurs whether the GPUs are rented or owned. Other recurring costs include the gateway, monitoring, storage and on-call coverage. One-time costs include implementation, load testing, prompt revalidation and cutover work. What drives the total is your traffic volume, how steadily the GPUs are used, the model size you need and whether you run in more than one region. Ask any implementation partner for a quote built from a written scope, and compare it with your current per-token spend at realistic utilization. The vLLM project page describes the engine's scope, which is a good starting point for the infrastructure discussion.

How long does it take to move production traffic to vLLM?

The duration depends on how many applications call the API, how much prompt and output validation they need and how many environments you run. Typical phases are capacity planning, building the gateway, validating outputs against your current prompts, a staged traffic shift and a monitored period with OpenAI kept as fallback. Confirm the timeline in a written scope with your partner or internal team, and ask which phases are included and which depend on your procurement and hardware lead times. Your own environment, especially GPU availability in your cloud or data center, will often set the critical path.

What does our team need to provide for the migration?

You need to supply GPU capacity or a cloud account that can provision it, a list of applications and the OpenAI endpoints and models they call, representative prompts and expected outputs, and an owner for each application who can approve behavior changes. You also need a secrets manager for the gateway master key, a PostgreSQL database for the gateway's virtual keys and a Redis 7.0 or newer instance once more than one gateway instance runs. Security and network teams must agree on how nodes and endpoints are isolated, because vLLM's multi-node communication is insecure by default.

Can our own engineers do this migration without an outside partner?

Yes, if your team already runs GPU workloads, Kubernetes, PostgreSQL and a reverse proxy, and has time to own the result after cutover. vLLM is Apache-2.0 licensed, its server exposes OpenAI-compatible endpoints, and LiteLLM is MIT licensed outside its enterprise directory, so there is no license barrier. The harder parts are sizing GPUs, locking down the endpoint, validating outputs and running the system on call. Decide which of those your staff can own today. Many teams do part of the work in-house and bring in an outside partner for a fixed-scope hardening or validation piece, which DeployOpen offers under a written scope.

Can OpenAI stay in place as a fallback during cutover?

Yes. A LiteLLM gateway supports fallbacks and priority ordering for failover, so a route can send requests to vLLM first and to OpenAI when the self-hosted backend is unhealthy or overloaded. The router also supports retries and cooldowns after repeated failures. Keep fallback rules explicit and logged, because a silent fallback can mix model behavior in ways your validation did not cover. Confirm with your security and compliance owners that routing data to OpenAI during fallback is acceptable for each data class, since the fallback path reintroduces a third-party processor.

How do vLLM releases affect upgrades after go-live?

vLLM ships new minor releases about every two weeks, so an unplanned upgrade cycle can arrive quickly. The supplied release dates include v0.28.0 on August 26, v0.29.0 on September 9, v0.30.0 on September 22 and v0.31.0 on October 5, 2026. Pin the version you validated, test each candidate against your regression set in staging, and promote only after outputs and latency are checked. Plan a standing upgrade process with an owner, because skipping releases for long periods makes each later jump harder. Read each release note for changes to the OpenAI-compatible endpoints your applications use.

How do we verify that model output quality holds after switching?

Verify quality with your own test set, not with general benchmarks. Build a regression suite from real prompts, with expected behavior for each application, then run the same suite against the current OpenAI model and the candidate open-weight model. Score format compliance, factual accuracy, refusal behavior and any structured output your code parses. Track latency and token throughput with vLLM's Prometheus metrics at /metrics. Repeat the suite after each vLLM or model upgrade. Expect some prompts to need rewriting, because open-weight models often respond differently to the same instructions.

What security steps does a vLLM endpoint need before production?

The vLLM --api-key option is not enough on its own. According to the vLLM security docs, it protects endpoints under /v1, /v2, /inference and /cohere, but not /invocations, /pause, /resume, /abort_requests, /metrics or /health. The docs recommend a reverse proxy that allowlists only the endpoints meant for users. Also place multi-node traffic on an isolated network, restrict access to the metrics endpoint and keep the gateway master key in a secret manager. Ask your security team to review these controls against your own policy before cutover.

How DeployOpen scopes and runs the migration

DeployOpen is a Chainscore Labs company that plans, implements, integrates, hardens, documents and supports self-hosted open-source platforms inside the client's own cloud accounts, data centers or air-gapped networks. For a move from the OpenAI API to vLLM, that means the work covers the GPU node pool, the vLLM serving configuration, a LiteLLM gateway with virtual keys and fallbacks, the reverse proxy that allowlists only user-facing vLLM endpoints, metrics collection, and the cutover runbook. Most engagements are fixed-scope, so the written scope should name each of these components, the model and version to be pinned, the applications being moved, and the traffic percentages planned for each cutover stage before any work starts.

The written scope is also where the cost and risk decisions get made. Ask for a quote that separates one-time work (architecture, deployment, prompt and output validation against your current prompts, load testing, hardening and documentation) from recurring work (upgrades, security patches, model changes and on-call support). Confirm who owns the GPU capacity contract, who receives the vLLM release notes, and what acceptance criteria end the cutover phase. DeployOpen can prepare systems, controls and evidence for a compliance assessment, but it does not issue audit reports or certifications. Your auditor or certification body performs that assessment, so the scope should list the evidence you expect them to request.

Once the migration is complete, the ongoing work is usually handled under a retainer. A retainer typically covers tracking vLLM releases, which ship about every two weeks, testing each upgrade against your pinned model and prompts, rotating the LiteLLM master key and virtual keys, reviewing gateway spend and rate limit data, and keeping the OpenAI fallback path tested. Confirm the response expectations in writing, including who is on call for GPU node failures and how the team handles an upgrade that changes output behavior. Retainers and fixed-scope work can be combined, so you can agree a delivery phase now and a support term afterward, with each defined in its own written agreement.

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.