Article · Strategy

How to Avoid AI Model Lock-In

Summary

AI model lock-in happens when your workflows, credentials, and tooling are so tightly coupled to one provider that switching costs more than staying. This article explains where lock-in actually comes from, how to design against it, and how DAVE's provider model keeps your options open.

Where AI model lock-in actually comes from

Lock-in is not a single decision. It accumulates across three layers, and each layer makes the next one harder to change.

Layer 1: Credential coupling

If API keys are embedded directly in workflow logic, in individual agent configurations, or scattered across your tooling, rotating a key or switching a provider requires finding and updating every reference. Teams that build this way discover the scope of the problem only when they need to change something urgently: a key is compromised, a provider raises prices, or a better model becomes available. The fix is centralization: one credential record per provider, referenced by all agents that use it, so a single edit propagates everywhere.

Layer 2: Workflow logic that assumes a specific model

Prompts written for one model's behavior, context window assumptions sized to one model's limits, and output parsing logic tuned to one model's response format all create implicit dependencies on that model. When you swap the model, the workflow breaks in ways that are not always obvious until you test. The fix is to design prompts and output handling to be as model-agnostic as possible, and to test against alternative models before you need to switch under pressure.

Layer 3: Platform coupling

The deepest form of lock-in is when the platform itself controls which models you can access, proxies your API calls so you cannot see the underlying provider relationship, or makes it technically difficult to point your workflows at a different service. At this layer, switching is not just a configuration change: it may require migrating your entire workflow library to a different platform. This is the layer that is hardest to escape once you are in it, and the one that is easiest to avoid by choosing the right platform architecture at the start.

How DAVE's provider model separates credentials from workflow logic

DAVE addresses all three lock-in layers through a single architectural decision: provider records are centralized, named configurations that live at Admin, then API Management, then Providers, completely separate from the workflow graphs and agent definitions that reference them.

Each provider record stores four things: the service type, your API key, the base URI for the service, and a catalog of the models you want to make available. Agents reference a provider and a model from that provider's catalog. Workflow nodes reference agents. The chain is: workflow node references agent, agent references provider, provider holds the credential. The credential is never embedded in the workflow or the agent.

This separation means:

  • Rotating a key means editing one provider record. Every agent that references that provider picks up the new key on its next invocation. No workflow graphs change. No agent definitions change.
  • Switching a model means editing the agent's model selection to point to a different model in the same provider's catalog, or to a model in a different provider's catalog. The workflow graph does not change.
  • Switching a provider entirely means creating a new provider record, updating the agent to reference it, and verifying the workflow still behaves as expected with the new model. The workflow graph structure is unchanged.

The provider record is the only place where the credential lives. It is stored encrypted using AES-256-GCM authenticated encryption and is never returned through the API once stored. The key field is masked by default in the Admin UI, with an eye icon to reveal it temporarily. Keys are transmitted only over HTTPS and are never logged in plain text.

Seven provider types: what each one enables

DAVE supports seven provider types. The breadth of that list is itself a lock-in mitigation: you are not limited to the providers the platform has chosen to support commercially. You connect to any service that fits one of these types using your own API key.

Provider TypeDefault Base URIModel Fetch
OpenAIhttps://api.openai.com/v1Yes
Anthropichttps://api.anthropic.com/v1Yes
Azure OpenAIYour Azure endpointYes
Google AIhttps://generativelanguage.googleapis.com/v1betaYes
OpenAI-CompatibleYour endpointYes
Local (Ollama)http://localhost:11434/v1Yes
CustomYour endpointNo (JSON catalog)

A few of these deserve specific attention for lock-in avoidance:

OpenAI-Compatible

The OpenAI-Compatible type lets you point DAVE at any service that implements the OpenAI API contract, regardless of who runs it. A growing number of providers, open-source inference servers, and cloud platforms expose an OpenAI-compatible endpoint. This means the set of services you can use with DAVE is not limited to the seven named types: it includes any service reachable via a compatible endpoint.

Local (Ollama)

The Local (Ollama) type connects DAVE to an Ollama instance, which can run open-weight models. This is model hosting, not platform hosting: DAVE itself is fully managed and hosted by voolama LLC, but your agents can call a model running on hardware you control. For teams that want to run certain workloads on open-weight models without sending data to a commercial API, this is the path.

Custom

The Custom type accepts any endpoint and a manually supplied model catalog in JSON format. It does not support automatic model fetch, but it imposes no constraints on what service sits behind the endpoint. This is the option for services that do not fit any other category.

Switching providers in practice: what changes and what does not

The practical test of a lock-in-resistant architecture is how much work a provider switch actually requires. In DAVE, the answer depends on which layer you are changing.

Switching the model within the same provider

Edit the agent configuration and select a different model from the provider's catalog. If the new model is not yet in the catalog, edit the provider record at Admin, then API Management, then Providers, click Fetch Models, and add it. Then update the agent. The workflow graph is unchanged. Test the agent's output with the new model before promoting the change to production workflows.

Switching to a different provider of the same type

Create a new provider record with the new service's API key and base URI. Fetch or manually configure its model catalog. Update the agent to reference the new provider and select the appropriate model. The workflow graph is unchanged. The old provider record can remain in place until you are confident the new one is working correctly, then delete it.

Switching to a different provider type

The process is the same as above. Create the new provider record with the correct type, for example switching from OpenAI to Anthropic. The provider type determines the default base URI and the model fetch behavior. Update the agent. The workflow graph is unchanged. The main work is validating that the agent's prompts and output handling work correctly with the new model's behavior, which is a testing task, not a migration task.

What does not change in any of these scenarios

The workflow graph structure, the node connections, the routing logic, the human review configuration, and the API call definitions are all independent of the provider. They reference agents, not providers directly. Switching a provider is a configuration change at the agent and provider layers, not a rebuild of the workflow.

Before deleting a provider record, verify that no active agents still reference it. An agent that references a deleted provider will fail on its next invocation. The fix is to edit the agent and point it to a valid provider before the next workflow run.

Who controls provider configuration and why that matters for lock-in

Lock-in risk is not only technical. It is also organizational. If provider configuration is controlled by one person and that knowledge is not documented or accessible to others, the organization is locked in to that person's decisions even if the platform architecture is flexible.

DAVE addresses this through role-based access. The Providers page at Admin, then API Management, then Providers is restricted to the Admin role. DAVE ships with six default tenant roles: Admin, Create, Curate, Use, Reporting, and Financial. All roles are editable by your administrator.

ActionAdminCreateCurateUseReporting
View provider listYesNoNoNoNo
Create providersYesNoNoNoNo
Edit providersYesNoNoNoNo
Delete providersYesNoNoNoNo
Fetch modelsYesNoNoNoNo

Restricting provider management to the Admin role means that credential changes, provider additions, and model catalog updates are controlled operations with a clear owner. The people building workflows (Curate role) and the people running them (Use role) cannot change the underlying provider configuration.

For lock-in avoidance, the governance recommendation is: assign the Admin role to at least two people, document every provider record with its purpose and key rotation schedule, and review the provider list periodically to confirm it reflects your current AI strategy. A provider record that no active agent references is dead configuration: delete it to keep the list accurate and the surface area small.

Call to action
Add your first provider at Admin, then API Management, then Providers.