Roll out models

Two ways to get every employee's AI client routing through Merge Gateway, and how to choose between them

Applies to: Merge Gateway

Pointing one machine at Gateway takes two minutes: a base URL, an API key, a model name. Pointing every machine at it is a different problem. What you are choosing is how that configuration reaches the machine, and what happens when someone changes it back.

There are two ways, and most companies run both: the desktop client for the fleet, and self-setup for whatever it has not reached yet.

Governance is the reason to do this: routing policies, spend caps, model restrictions, and a per-person request log. Employee experience is the reason it lasts. A rollout that takes tools away, or makes people fight their own config, moves the work to personal accounts where you see none of it.

Your MDM deploys the client, not the configuration

Your MDM is how the desktop client reaches the fleet, and that is the whole of its job here. Writing Gateway base URLs and keys into each AI client’s own config from your MDM instead buys you a per-client script library and a drift window the length of your check-in interval, for something the client does continuously, with no per-employee attribution. See Plan your deployment for the Jamf, Intune, Mosyle, Workspace ONE, and Group Policy mechanics.

Decide the inputs once

Every AI client asks for the same three values.

InputValueFleet guidance
Base URLhttps://api-gateway.merge.dev/v1/openai for OpenAI-compatible clients, https://api-gateway.merge.dev/v1/anthropic for Claude Code and Claude DesktopFixed, same for everyone. Sending an Anthropic client to the OpenAI prefix is the most common setup mistake
API keyMinted per employee by the desktop client, or a project API key from a project’s API keys tabThe decision that matters, covered below
Model nameprovider/model, or default_routingUse default_routing for fleets, so model choice lives in your routing policy rather than in nine config files

Choose your key strategy first

The key decides who gets attributed and which budget applies.

  • Per-employee, provisioned automatically. The right answer, and both the desktop client and the Workforce CLI do it. Spend attributes to the person, and there is no key for you to distribute. The client refuses to mint until the device resolves to an employee.
  • Project key per team. The project’s routing policy and budget apply with nothing else to configure. Use this for self-setup, where there is no client to mint anything.
  • Organization key, shared. No per-person attribution and no per-team budget. Fine for a pilot, not for a fleet.

Any key that lands on a laptop can be read by the person using it. That is the argument for per-employee minting, and for project keys over an organization key when you do hand one out: a leaked project key is scoped to one budget and policy, and rotates without touching the fleet. Never distribute an organization key that also has Management API access.

Compare the two paths

Desktop clientSelf-setup
Who configures the machineThe Merge clientThe employee
PrerequisiteMDM-managed fleet, SSO and SCIM connectedNone
Clients coveredAll except CursorAll nine, Cursor partially
Per-employee attributionYes, automaticYes through the Workforce CLI, otherwise no
Survives an employee changing it backYes, reverted continuouslyNo
Shadow AI visibilityYesNo
Effort to stand upHigher, onceLowest, per employee

A reasonable default: the desktop client for the fleet, and self-setup for Cursor and for anyone the client has not reached yet.

Path 1: the Merge desktop client

The client is a background service you deploy through your MDM. It provisions the governed AI stack, mints each employee’s Gateway key, and reports what AI tooling is installed. It needs an MDM-managed fleet, because several of the macOS permissions it uses can only be granted by a configuration profile.

1

Connect SSO and SCIM

Identity resolves against SCIM-synced employees, and access follows their Groups. Confirm your employees appear in Agent Handler first.

2

Generate an enrollment token and download the artifacts

In Devices → Deployment. One organization-scoped token covers the fleet, and the raw value is shown once. Take the macOS package, the Windows installer, and the configuration profile, which arrives pre-filled with your token, organization slug, and API URLs. Plan your deployment has the full key reference.

3

Deploy to a canary group in observe mode

Five to ten machines in your own IT team, software provisioning only. PolicyMode: observe in your MDM is a device-level ceiling the dashboard cannot override, so you can prove the client is safe before any enforcement takes effect.

4

Have those employees sign in once from the menu bar

This resolves identity and provisions their Gateway key. Claude Code and Codex CLI then each show a Use Gateway action in the menu bar that switches them over in one click.

5

Confirm traffic is arriving

A provisioned employee runs Claude Code, and the request appears in the Gateway dashboard within a few seconds, attributed to them.

6

Expand in rings

Widen the deployment, then lift the PolicyMode ceiling wave by wave.

What the client covers. Every AI client except Cursor. Each of them keeps its settings in a home-directory file or a preference domain that a process on the machine can write.

Automatic install and re-install on removal is configurable now and not yet in force: the setting is saved and the settings page says so. Enforcement travels in a signed policy document that is waiting on production signing keys. Until then, the one-click Use Gateway action is what routes a client.

Path 2: self-setup

Employees configure their own tools. This is how you cover Cursor, and anything the desktop client has not reached yet.

Remove the two things that actually stop people:

  1. Give them credentials they do not have to ask for. For employees comfortable in a terminal, the Workforce CLI is cleaner: they sign in against your identity provider and get a per-device credential, so there is no key for you to hand out and spend still attributes to the person. Otherwise put a team’s project API key where that team already looks.
  2. Send one link, not a wiki page. Every client has a dedicated setup guide, each about five minutes end to end.

Then measure it. The Gateway dashboard shows who is actually routing, which is the only number that tells you whether this is working. A team still flat after two weeks needs the desktop client, not another reminder.

Self-setup gives you coverage, not control. Anyone can stop routing by editing their own config, and you will not know, because a client that is not routing produces no telemetry. Absence of traffic looks the same as absence of work.

Client coverage

Covered by the desktop client. Claude Code, Codex CLI, Codex desktop app, Claude Desktop, Zed, Continue.dev, OpenCode, Pi, and Factory Droid. Self-setup covers the same nine.

Not covered on any path. Cursor, and only Cursor. Its base URL and API key are entered through the GUI and held in encrypted local application state, so there is nothing for either path to write. Restrict it through Cursor Business or Enterprise team admin settings, or block the provider endpoints at your network. Its agent mode does not accept a custom API key at all, so even a hand-configured Cursor routes only Ask and Plan traffic, and Tab autocomplete never routes.

Verify the rollout

Configuration pushed is not traffic routed. Check all three:

  1. The Gateway dashboard. Requests appear within a few seconds. This is the only source that proves traffic is flowing, and it needs nothing on the endpoint.
  2. The client’s own check. Claude Code’s /status should report Auth token: ANTHROPIC_AUTH_TOKEN and the Gateway base URL. Claude Desktop’s Test connection runs discovery and a real inference request.
  3. Coverage, not only success. Compare who is routing against your employee list. The fleet view does this for you, including devices that enrolled but never resolved an identity.

Finish all three on a canary group before widening. Configuration that landed everywhere and reports traffic from four people has landed and is being bypassed.

Limits worth stating up front

Tell your security team these before they find them:

  • Every path short of network blocking is client-side. Someone with local admin can edit a config file. The desktop client reverts it at its next check, which makes compliance the default and drift reversible, not bypass impossible.
  • The controls that cannot be bypassed from the endpoint are server-side: Gateway’s own authentication and your network egress policy. An unmanaged config cannot mint a Merge key.
  • Cursor never routes on a managed path, and its agent mode and Tab never route at all. All of that is Cursor-side.
  • Coverage is not enforcement. Until direct provider endpoints are blocked, a routed client is one that is currently choosing to route.

Next steps