On-Device LLMs for Laptop Fleets: Pin Your Own Model, Not the OS's

For a laptop fleet, ship your own pinned small model on llama.cpp and add Foundry Local where the NPU pilot passes. OS-provided models change under you, and at Flash-Lite prices the token bill is about $48K a year for 20,000 seats.

By Rajesh Beri·October 11, 2026·16 min read
Share:
A rolling IT cart stacked with closed corporate laptops in a server-room corridor, one laptop open on top showing a progress bar mid-download, a coiled network cable beside it.

Illustration generated using AI

For a small model on twenty thousand corporate laptops, ship your own pinned model on llama.cpp, and add Microsoft's Foundry Local only on the Windows SKUs where a pilot proves the NPU path works. Do not build a fleet feature on the model the operating system provides. Apple updates its on-device model with OS releases, and Microsoft removes Phi Silica from retail Windows in January 2027. Go in knowing that the token bill you are replacing may be smaller than the fleet you are about to run. Data that cannot leave the device, or work that has to happen offline, are the stronger reasons to do this.

Option What you get Silicon it reaches today Can you pin the model? Verdict
llama.cpp + your own GGUF MIT runtime, any GGUF model you choose CPU, Apple Metal, CUDA, Vulkan, Snapdragon Hexagon; Intel NPU via OpenVINO still "in progress" Yes, you ship the file Default pick
Foundry Local (ONNX Runtime GenAI) Microsoft's local runtime and catalog, on an MIT engine CPU, CUDA, DirectML, QNN, OpenVINO, WebGPU execution providers Yes, by model ID; aliases move Pick for Windows NPU battery life
Apple Foundation Models Free ~3B model built into Apple Intelligence Apple silicon, OS-managed No, it updates with the OS Mac-only features you never need to reproduce
Windows AI APIs (Phi Silica) Built-in model on Copilot+ PCs NPU on Copilot+ PCs; GPU in experimental builds No, and it is being replaced Loser: do not start here
LiteRT-LM (MediaPipe successor) Google's Apache 2.0 edge runtime GPU and NPU on Android, iOS, web and desktop Yes Mobile apps, not laptop fleets
ExecuTorch PyTorch's on-device runtime, 1.0 XNNPACK on desktop CPU; Qualcomm NPU on Android Yes Mobile apps you build in PyTorch
Gemini 2.5 Flash-Lite (cloud baseline) Per-token API Google's datacentre Until Google retires it The number to beat: about $48K a year at our workload

Prices and docs checked October 12, 2026.


The Workload, and What the Cloud Meter Actually Costs

The case for local inference usually starts with the token bill, so price it first. Our reference workload is a low-stakes task on 20,000 laptops: 40 requests per user per working day, 1,500 input tokens and 200 output tokens each, 260 working days a year. That is 800,000 requests a day, 1.2 billion input tokens and 160 million output tokens.

At Gemini 2.5 Flash-Lite's published rate of $0.10 per million input tokens and $0.40 per million output tokens (checked October 12, 2026), that is $184 a day, or about $47,840 a year for the whole fleet. Google's deprecations page lists no shutdown date for 2.5 Flash-Lite, but it limits access to customers who already used the 2.5 models and points new projects at 3.5 Flash-Lite. At 3.5 Flash-Lite's $0.30 input and $2.50 output, the same workload costs $760 a day, about $197,600 a year. Our Gemini Flash tool page tracks the family.

That range is the entire prize, before you pay anyone to run a model fleet, and before you subtract the share of requests that still escalate to a cloud model. A team that expects on-device inference to "end the meter" on a cheap model is chasing at most a few hundred thousand dollars a year, and the operating cost below can eat it.

The cases where on-device clearly wins are the ones the meter does not price:

  • Data that cannot leave the device. Prompts and documents stay on the laptop, so the cloud model provider is not a processor for the local share. Your DPA conversation shrinks to the escalated share, and the model licence and your own on-device logs come under scrutiny instead.
  • Offline or degraded-network work: field staff, travel, secure rooms.
  • A task you would otherwise send to a mid-tier model, where per-token prices are many times Flash-Lite's.

Which Small Models Are Safe to Ship?

Ship a model with a permissive licence and an official quantised build from the model's own publisher. A community quantisation from an anonymous uploader is a dependency nobody owns: if it is subtly broken, no one is obliged to fix it, and you cannot prove which weights you shipped. That rules out more than you would expect.

Model Licence Size Context Official quantised build?
Qwen3-4B Apache 2.0 4B 32,768 native Yes: Qwen-published GGUF, Q4_K_M is 2.5 GB
Phi-4-mini-instruct MIT 3.8B 128K Yes: Microsoft's int4 ONNX builds for CPU and GPU
Gemma 3 4B Gemma terms 4B 128K Yes: Google's QAT Q4_0 GGUF, 3.16 GB
Gemma 4 E4B Apache 2.0 4.5B effective, 8B with embeddings 128K Not stated on Google's model card; 386 community quantisations
Llama 3.2 3B Llama 3.2 Community License 3B 8K for the quantised builds Yes: Meta's SpinQuant and QLoRA builds

Qwen3-4B is the default for a llama.cpp fleet: Apache 2.0, and the publisher ships the GGUF files you would otherwise download from a stranger. Phi-4-mini is the default for a Foundry Local fleet, because Microsoft publishes the ONNX builds and the Foundry Local quickstart uses it as its reference model. Gemma 3's QAT build is quantisation-aware trained by Google, so it should lose less accuracy at 4-bit than a build quantised after training, but the Gemma terms carry a use policy your legal team has to read. Gemma 4 moved to Apache 2.0 (our take on what that changed), and its model card does not say which quantisation is Google's own. Llama 3.2 carries a custom licence with a 700-million-MAU clause and an EU carve-out for its multimodal models; the 3B text model is outside that carve-out, but you will still spend a legal review on it that the Apache models do not need.

Who should not ship any of these: a team that cannot run its own evaluation on the target task. A 4B model at 4-bit is a different model from the benchmark card's BF16 numbers, and our quantisation format comparison shows how much the format alone moves results.


The Runtime Decides More Than the Model

The runtime determines which silicon you actually use. Each option below is judged on the same question: can you pin it, and what does it reach on a standard corporate laptop?

llama.cpp: The Default

llama.cpp is MIT-licensed C++ that runs GGUF models on CPU, Apple Metal, NVIDIA CUDA, AMD HIP, Vulkan and a Snapdragon Hexagon backend. Its README lists Intel NPU support through OpenVINO as "In Progress". You choose the model file, you ship it with your own software distribution tool, and the hash on disk is the hash you tested. Nothing about it changes unless you push a change.

Do not pick it if battery life on an Intel or AMD NPU is the requirement: on those chips llama.cpp runs on the CPU or GPU. Do not pick it if nobody on your team will own a fast-moving native dependency through its security updates. Tools built on it inherit the gap. Ollama's request for AMD Ryzen NPU support has been open since June 2024, and a maintainer folded a duplicate into it in July 2026.

Foundry Local: The Windows NPU Path

Foundry Local is Microsoft's local runtime, built on ONNX Runtime GenAI (MIT), whose execution providers cover CPU, CUDA, DirectML, QNN for Qualcomm, OpenVINO for Intel, and WebGPU. It needs Windows 11 24H2 or later, and it downloads the right hardware variant per device: per Microsoft's docs, a QNN NPU variant on Snapdragon, CUDA on NVIDIA, CPU otherwise. Microsoft's Foundry team added Intel and AMD NPU support in v0.7, and AMD has documented phi-4-mini running on a Ryzen AI NPU through Windows ML. It ties into the wider Microsoft Foundry catalog.

The pinning catch: the quickstart warns that "Foundry Local catalog aliases and recommended models can change as the catalog evolves." Pin the full model ID and cache the files yourself. The deeper catch is in the Copilot+ PC developer guide: Windows ML execution providers such as QNN and OpenVINO "are now bundled with Windows or delivered via Windows Update." You can pin the model, but on the NPU path you do not fully control the runtime layer underneath it. Do not pick Foundry Local for a Mac-heavy fleet, or if your change board needs every inference-path component under its own release control.

Apple Foundation Models: Free but Not Yours to Pin

Apple's framework gives Swift apps the on-device model behind Apple Intelligence. Apple describes it as an approximately 3-billion-parameter model compressed to 2 bits per weight, with inference free of charge. Its context window is 4,096 tokens per session, shared between prompt and response, which our reference workload fits but a long document does not.

The fleet problem is version control. Apple's research post says custom adapters must be retrained for each new base model version, and the adapter toolkit page says version 26.0.0 is the last release and is not compatible with OS 27. The model you tested in March is not guaranteed to be the model a user has after an OS update. Your MDM settings also decide whether it runs at all: Apple Intelligence can be restricted per device, and Addigy's guidance notes Apple spread new controls across several payloads from 26.4. We have covered how confidently this model is wrong on audit-style tasks.

Pick it for a Mac-only convenience feature where output can drift between OS versions without anyone filing a ticket. Do not pick it for anything you must reproduce, audit, or run on Windows.

Windows AI APIs and Phi Silica: The Loser

Phi Silica is the model Windows ships on Copilot+ PCs, the class Microsoft defines by an NPU of more than 40 TOPS. It is the cheapest-looking option on paper, because the model is already on the laptop. It loses on every fleet criterion. Per Microsoft's own page, the APIs are a Limited Access Feature that needs an unlock token, they are not available in China, and Phi Silica is being replaced by Aion Instruct: Insider rollout in November 2026, then "January 2027: Aion Instruct rolls out to retail devices and Phi Silica is removed." Any LoRA you trained has to be retrained. Running it on a GPU instead needs Developer Mode, an Insider build and a driver from the GPU maker, because "default drivers from Windows Update or OEM installations may not be sufficient."

Nobody should start a fleet project on Phi Silica in October 2026. Re-evaluate Aion Instruct when it reaches retail, and expect the same version-control problem Apple has.

LiteRT-LM and ExecuTorch: Right Tools, Wrong Device

Google's MediaPipe LLM Inference API is now in maintenance-only mode, and Google recommends migrating to LiteRT-LM, which is Apache 2.0 and targets Android, iOS, web, desktop and IoT with GPU and NPU acceleration. Its Swift and JavaScript APIs are still early preview. PyTorch's ExecuTorch 1.0 lists XNNPACK as its CPU backend on all platforms and a Qualcomm NPU backend for Android SoCs.

Both are strong choices for a mobile app your team builds. Neither is the shortest path to a managed Windows and macOS laptop fleet, and starting a new project on MediaPipe LLM Inference today means planning a migration on day one.


Fleet Management Is the Cost Nobody Models

Distributing, pinning and supporting a free model on 20,000 machines is where the money goes. Budget for four things:

  1. Distribution and caching. A Qwen3-4B Q4_K_M file is 2.5 GB. One version pushed to 20,000 laptops is 50 TB over your network, and every model update repeats it. Microsoft's Phi Silica docs tell developers to ask for the user's consent before a multi-gigabyte model download, and the GPU build of Phi Silica arrives "in the background through Windows Update."
  2. Version pinning and rollback. Keep two versions on disk (the current one plus the last known good), roll forward in rings the way you do OS patches, and record the model hash and runtime version on every request.
  3. Disk and RAM budget. A 4B model at 4-bit needs roughly its file size in memory plus the KV cache, on a laptop already running Teams, a browser and your security agents. Put it in the standard image spec, or users will find the out-of-memory case for you.
  4. Battery and thermals. This is where the NPU earns its keep. A June 2026 preprint profiling a Snapdragon X Elite Dell XPS 13 measured 4.0x less system energy on the NPU than on the CPU for a 120-query retrieval-augmented generation workload, while the integrated GPU used 6.5x more energy than the NPU. That benefit only exists if your runtime reaches the NPU on that exact chip.

You Lose the Gateway, So Decide the Telemetry Now

On-device inference removes the gateway, and with it your default record of what the model did. In the cloud, every request crosses a proxy you can log. On a laptop, nothing is recorded unless the client is built to record it, a gap we saw when Meta's agent model fit on a laptop and nothing logged it.

Decide before the pilot what each request emits: model ID and file hash, runtime version, prompt template version, the route decision (local or escalated), latency, token counts and a task outcome signal. Prompt and response content stays off by default, because shipping it home rebuilds the data flow you went local to avoid. On Windows, ONNX Runtime already emits ETW events that the Windows Performance Toolkit can read for load time and per-inference latency, which helps a pilot but is no substitute for fleet telemetry.

If you skip this, you cannot answer the first audit question about the feature: which model produced this output, and was it the one you approved?


The Routing Rule and the Escalation Rate

The escalation rate is the number that decides whether on-device saved anything. A routing rule sends each request either to the local model or to a frontier model in the cloud. Every escalated request is billed at the cloud rate, so at a 30% escalation rate the most you can save is 70% of the baseline above.

Router research gives a sense of the range. LMSYS's RouteLLM reported cutting cost by over 85% on MT Bench while keeping 95% of GPT-4's performance, but only 45% on MMLU and 35% on GSM8K. How much you save depends on the task, which is why you measure your own rate in the pilot instead of quoting theirs. Start with a simple rule you can explain to an auditor: input length over the local context budget, a confidence or schema-validation failure, or a task class you have reserved for the cloud. We covered a vendor's auto router that failed 4x as often as Opus on its own test, so do not assume a learned router beats a rule.


What the NPU Badge Does Not Tell You

A TOPS figure and a Copilot+ badge say nothing about which runtimes, models and quantisations work on your exact SKU and driver. The evidence is all in the vendors' own documentation. Phi Silica's GPU path depends on a GPU-maker driver that OEM updates can overwrite. Foundry Local picks a different model variant per device. llama.cpp's Intel NPU support is still in progress, and Ollama has had an open request for AMD NPU support since mid-2024.

So pilot on the real hardware before the refresh order. Test a matrix of each candidate laptop SKU, its shipping driver, your chosen runtime and your chosen quantised model, and record tokens per second, energy on battery and task accuracy. If the NPU path fails on a SKU, you want to know while you can still change the order.


How to Decide

Four questions predict regret better than any benchmark.

  • Can you name the model version on every laptop? If not, you cannot audit it. That rules out the OS-provided models for anything regulated.
  • Is the reason data or offline use, or is it the token bill? If it is only the bill and your cloud model is Flash-Lite class, the fleet cost probably exceeds the savings. Re-run the math with your own volumes.
  • What is the measured escalation rate? Above roughly half, you are running two systems to save less than half the bill.
  • Is the fleet mostly Windows on Copilot+ silicon? Then Foundry Local on the NPU is worth the Windows Update dependency for battery life. Mixed or Mac-heavy: llama.cpp everywhere.

What changes the answer: a cloud price rise on your baseline model, a regulator or customer contract that forbids the data flow, or Aion Instruct shipping with a version-pinning story that Phi Silica never had.


What to Do Next

This Week:

  1. Pull last month's token logs for the candidate task and compute the real annual bill at your current model's price. If it is under the Flash-Lite range above, write down the non-cost reason for going local or stop here.
  2. Ask your endpoint team which laptop SKUs, drivers and OS builds are in the current image and the next refresh order.

This Month:

  1. Run Qwen3-4B on llama.cpp and Phi-4-mini on Foundry Local against 500 real requests from the task, with your evaluation, on three representative SKUs.
  2. Define the telemetry schema and the routing rule, and measure the escalation rate.

Before the Refresh Order:

  1. Put the model's disk and RAM budget into the standard image spec.
  2. Make the NPU test matrix a purchase requirement: no SKU goes on the order until your runtime and model pass on its shipping driver.

The Bottom Line

Desktop teams have done this before with antivirus signatures and browser runtimes: a large, versioned artifact pushed to every machine, rolled out in rings, with a rollback plan. A local model is that kind of artifact, and it needs the same release discipline. The OS-provided models skip that discipline by design, which is why they fail a fleet test. Start with Qwen3-4B on llama.cpp, add Foundry Local on the Windows SKUs that pass the NPU pilot, and make the escalation rate the first number you report.

Continue Reading

Share:

Frequently Asked Questions

What is the best runtime for running a small LLM on a corporate laptop fleet?

llama.cpp with a publisher-quantised model such as Qwen3-4B's official GGUF is the default: it is MIT-licensed, runs on Windows and macOS, and you control exactly which model file is on every machine. On Windows Copilot+ PCs where battery life matters, Foundry Local can reach the NPU, but its execution providers arrive through Windows Update.

Can I use Apple's Foundation Models framework for an enterprise feature?

Yes for Mac-only features where output can change between OS versions. Apple updates the roughly 3-billion-parameter model with OS releases, custom adapters must be retrained per base model version, and the context window is 4,096 tokens per session shared by prompt and response, so it is a poor fit for anything you must reproduce or audit.

Is Phi Silica still a good option for on-device AI on Windows?

Not for new projects. Microsoft says Phi Silica is being replaced by Aion Instruct, which reaches Insider devices in November 2026 and retail devices in January 2027, when Phi Silica is removed. It also requires a Limited Access Feature unlock token and is not available in China.

Does running AI on-device save money compared with a cloud API?

Often less than expected. A workload of 800,000 requests a day across 20,000 laptops costs about $47,840 a year at Gemini 2.5 Flash-Lite's $0.10 input and $0.40 output per million tokens (October 12, 2026), before subtracting requests that still escalate to the cloud. Data residency and offline use are usually stronger reasons than the bill.

Does an NPU or Copilot+ badge mean my local LLM will run on it?

No. The NPU is only used if your runtime has a backend for that chip and driver. llama.cpp's Intel NPU support via OpenVINO is still in progress, and Ollama's AMD NPU request has been open since June 2024. Pilot your exact runtime, model and driver on each laptop SKU before the refresh order.

Newsletter

Stay Ahead of the Curve

Weekly enterprise AI insights for technology leaders. No spam, no vendor pitches—unsubscribe anytime.

Subscribe

Latest Articles

View All →