Start with the same task quality
Cheap tokens are not much help if you spend the afternoon correcting the output. Compare local and hosted models on a completed task: the useful result, failed attempts, review time and the infrastructure needed to deliver it. Then work out what each completion actually costs.
Define the data boundary as well. A workload that must remain inside a particular environment may exclude some deployment choices regardless of their token prices. A task using only public information may have a different set of acceptable options. Make those constraints explicit rather than treating privacy as a percentage in a cost formula.
Keep the cost categories separate
For hosted inference, include model usage, tools, retries, storage and the application infrastructure. For local inference, include any incremental hardware purchase, electricity, maintenance and the operational work needed to keep the service available. Existing hardware has a different decision context from a machine purchased solely for a new workload.
Human review belongs in both models. A hypothetical workflow with 100 reviews per month at three minutes each uses five operator hours. That arithmetic does not establish the actual review burden; measure it with representative tasks before using it in a business case.
| Cost layer | Hosted deployment | Local deployment |
|---|---|---|
| Capacity | Provider usage and relevant service charges | Hardware and serving capacity |
| Operations | Integration and provider dependency handling | Runtime, updates and local availability |
| Quality | Evaluation and review effort | Evaluation and review effort |
| Constraints | Provider data terms and access | Local storage, tools and network boundary |
Use an explicit break-even calculation
Suppose a new local machine costs an incremental $2,000 and ongoing operation is assumed to cost $50 per month. If a comparable hosted workload would cost $150 monthly, the simplified difference is $100 per month and the hardware payback is 20 months. These are invented planning inputs, not market prices or measured savings.
The calculation becomes invalid if task quality, volume, maintenance or availability differs substantially between the two options. Include a sensitivity range and state what is held fixed. A forecast of savings is weaker than an observed post-deployment result and should be labeled accordingly.
Account for utilization and concurrency
A machine serving a few short requests each day may sit idle for much of the month. A heavily used service may face queues or require additional capacity. Compare expected utilization with the measured workload, not only the maximum throughput shown in a benchmark.
Batching can improve aggregate throughput while increasing first-token latency. The owner’s M3 Ultra observations illustrate why these need separate reporting. They do not provide a measured electricity bill, total cost of ownership or cloud-equivalent quality score. Do not derive any of those missing quantities from token speed alone.
Make the next decision reversible
Run a small representative evaluation before buying hardware or committing to a long provider contract. Measure task outcome, latency, review time and actual usage over a stated trial period. Keep confidential information out of tests unless the deployment is approved for it.
Use the cost calculator to separate model, tool, infrastructure and review assumptions. Use the memory planner to check a local resource budget, then validate that budget with real runs. A useful conclusion might be “local works for this bounded workload under these conditions,” rather than declaring a universal winner across all AI tasks.
Implementation map
Sources and limits
Original cost framework and explicitly hypothetical arithmetic. Langfuse usage tracking is a reference for separating observed usage and billed cost; no listed vendor rate is assumed here. Documentation checked October 14, 2026. Recommendations and worked examples are editorial methods, not claims of a completed client engagement.
Owner evidence: M2 Max 64GB
Measured workload, not a hardware ranking.
Owner-supplied oMLX v0.7.0 screenshots show Code (Python), 128 output tokens, and a model label beginning Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Opti… . The full artifact and quantization are not visible.
| Input / batch | Generation tok/s | TTFT ms | E2E seconds | Peak GB reported |
|---|---|---|---|---|
| 1024 / 1× | 81 | 1076.3 | 2.662 | 19.89 |
| 4096 / 1× | 78.4 | 3956.5 | 5.595 | 21.79 |
| 1024 / 2× | 133.2 | 2085.7 | 4.47 | Not shown |
| 1024 / 4× | 213.1 | 3871.2 | 8.526 | Not shown |
At 2× and 4× batching, generation is aggregate throughput, not the rate each user receives. The screenshot reports 1.64× and 2.63× speedup.
All-time serving: a separate view
The All-Time / All Models dashboard reports 215.6 tok/s prompt processing excluding cached tokens and 33.2 tok/s generation. Its date range, model mix and request count are unknown. These are mixed-use averages, not another benchmark or proof of a latency/cost saving. The empty Today history does not invalidate the all-time counters.
The M2 Max specification is 400 GB/s memory bandwidth; the M3 Ultra is 819 GB/s. The supplied tests use different artifacts and oMLX versions (v0.7.0 versus v0.5.4), so their token speeds cannot isolate bandwidth or establish which chip is faster. Inspect both datasets, bandwidth sources and original screenshots →
Bring the problem. We’ll scope the next step.
Something in your workflow keeps breaking, or your team is doing the same manual work every week.
Send the current setup, what failed, and the result you need. I can help with software integrations, local AI infrastructure, agent permissions, failure recovery and deployment.
Useful first details: system or runtime, expected workload, data restrictions and one redacted example. Don’t send credentials or private customer data.Fazal Shah builds AI systems, automation and software products. Based in Pakistan, working with a global audience. About Fazal →