Amortized hardware, power-by-jurisdiction, opportunity cost, and the value of privacy, modelled at 10/100/1000/10000 calls per day. Break-even sits between 700 and 1,200 calls per day depending on the cloud tier you actually need, but the inputs that move the line are not the ones the listicles emphasize.

Self-Hosted AI vs Cloud APIs: The Real Total Cost

The break-even sits between 700 and 1,200 calls per day depending on the cloud tier you actually need, and the inputs that move the line are not the ones the listicles emphasize.

Below the break-even, cloud is cheaper. Above the break-even, self-hosted is cheaper. That much is a clean mathematical answer. The interesting question is what counts as a “call,” which jurisdiction you operate from, what you value privacy at, and how much your time is worth during the eighty hours of setup work that the self-hosted path requires before it returns its first response. This article walks the model row by row and shows where the sensitivity is.

Quick Take

  • The arithmetic break-even on dollar cost alone is around 800 calls per day for a workload that maps to a $4,699 DGX Spark (post-Feb-2026 MSRP) amortized over 3 years, against Claude Opus 4.7 at the vendor list price of $5 input / $25 output per million tokens.
  • Power cost shifts the line by 200 to 400 calls per day depending on jurisdiction. Germany pushes self-hosted higher; Texas, Quebec, Iceland, and India push it lower.
  • Opportunity cost of setup time dominates the first year. 80 hours at €100/hour is €8,000, which by itself is more than the hardware. The setup time is paid once; the cloud margin is paid forever.
  • Privacy is not modelled by the calculator and does most of the actual deciding. The customers who pay for self-hosted AI consulting are not optimizing dollars per token. They are buying the architectural fact that the inference never leaves their premises.
  • The honest answer: self-host if you are at 1,000+ calls per day AND privacy is a real customer requirement; stay on API if you are below break-even OR if your only constraint is unit economics; go hybrid if your workload splits cleanly between heavy-and-steady and mini-and-bursty.

The cost model, row by row

The cost model has six rows. Each one is independently auditable.

Row 1: hardware capital, amortized

ItemCostAmortizationPer-month
DGX Spark Founders Edition (post-Feb-2026 MSRP)~€4,80036 months€133/mo
Mac Studio M4 Max at 128 GB unified~€4,80036 months€133/mo
Mac Studio M3 Ultra at 96 GB unified~€4,10036 months€114/mo
Mac Studio M3 Ultra at 512 GB unified~€9,500+36 months€264/mo
Used dual RTX 3090 build (alt)~€2,10036 months€58/mo
Strix Halo mini-PC (alt, 128 GB)~€2,70036 months€75/mo

NVIDIA raised the DGX Spark Founders MSRP from $3,999 to $4,699 in late February 2026 (memory supply constraints). EUR conversion sits around €4,800 at current exchange. Partner editions from Acer (Veriton GN100), ASUS (Ascent GX10), Dell (Pro Max GB10), and MSI (EdgeXpert MS-C931) are available at similar pricing with inconsistent inventory in May 2026. The Mac Studio M3 Ultra at 512 GB unified is a category-killer on memory ceiling but lives in a different price tier.

For this comparison, take the Spark Founders as the baseline because it is the configuration most readers are weighing against cloud-API economics on a $4,500 to $5,500 budget. (For the hardware comparison that produces this baseline, the companion DGX Spark vs M3 Ultra: Local LLM Decision walks the architectures.)

Amortization is straight-line over three years. Most operators run the asset longer than this, which makes the post-amortization period free margin. Most operators also encounter the next-generation hardware before three years are up (the Apple M5 Ultra Mac Studio is expected to ship around October 2026, delayed by global memory chip shortages), which makes the asset partially obsolete in year three. Both effects roughly cancel; the 36-month line is a reasonable centerline.

Row 2: power, per jurisdiction

Jurisdiction€/kWh (Q4 2025)Monthly cost at 200 W avg loadPer million tokens (est.)
Germany (household tariff)€0.38€55€0.92
France (regulated EDF)€0.21€30€0.50
United States (Texas)€0.13€19€0.32
United States (California)€0.28€40€0.67
Quebec (hydro)€0.06€9€0.15
Iceland (geothermal)€0.10€14€0.23
India (urban average)€0.07€10€0.17

The “200 W average load” figure is a working estimate, not an instrumented measurement. The Spark’s TDP is published by the vendor; sustained inference load sits somewhere between idle (~50 W) and peak (vendor-published). The 200 W centerline is consistent with operator reports on the NVIDIA developer forum and matches the lived experience of running a single Qwen 3.6 MoE workload most of the working day. For the throughput numbers that produce the per-million-tokens calculation, see Spark Arena Rank 4 Made Me Add Qwen3.6, which records 57 to 62 tok/s sustained interactive under DFlash speculative decoding on the production config.

Row 3: opportunity cost of setup

PhaseHoursAt €100/hourAt €200/hour
Hardware unboxing, OS install, driver baseline8€800€1,600
First model deployment, systemd wiring10€1,000€2,000
Observability + dashboards + alerts12€1,200€2,400
Crash + recovery rehearsal, runbook authoring6€600€1,200
First production workload integration16€1,600€3,200
First three crashes and their postmortems20€2,000€4,000
Documentation for the customer or successor8€800€1,600
Total setup (months 0-2)80€8,000€16,000
Ongoing maintenance per month (steady state)4€400€800

The setup hours are real and are the reason most “I should self-host AI” conversations end without a purchase. Eighty hours at one’s actual billable rate is a serious investment, and the operator does not get the time back. The cloud-API alternative requires roughly 30 minutes to set up an account and start making calls.

The “first three crashes and their postmortems” line item is the one most beginners scoff at and most experienced operators recognize. On Spark specifically, the page-cache hijack pattern (where the kernel holds stale model weights after engine crashes and triggers a 95 GB OOM on relaunch unless echo 3 > /proc/sys/vm/drop_caches runs first) is the canonical example of a crash that costs the operator a few hours to learn. The vLLM FlashInfer-MoE freeze on SM 12.1 is another: the default backend bricks the Spark in a way that pulls the desktop session down, and the fix is VLLM_FLASHINFER_MOE_BACKEND=latency. (See Fixes: vLLM MoE Throughput sm121 Desktop Freeze for the debug log.) Each of these counts as one of the twenty hours in the “first three crashes” line.

The ongoing maintenance is the line most beginners underestimate. Four hours per month is the working figure for a single-operator stack in steady state, and it includes the kernel updates, the inference-engine version bumps, the periodic OOM postmortems, and the dashboard checking. Operators who do not budget for this hit a wall at about month six when the deferred maintenance catches up.

Row 4: cloud-API call cost, per vendor (corrected May 2026)

APIInput price / 1M tokens (USD)Output price / 1M tokens (USD)Effective $/typical call
Claude Opus 4.7$5.00$25.00$0.0475 (raw) / $0.064 (with 35% tokenizer overhead)
Claude Sonnet 4.6$3.00$15.00$0.029
Claude Haiku 4.5$0.80$4.00$0.0076
GPT-5.5 (heavy tier, as of 2026-04)$5.00$30.00$0.055
GPT-5.5 mini$0.30$2.30$0.0035

“Typical call” assumes 2,000 input tokens + 1,500 output tokens, which matches a typical agent or coding-assistant turn. The 35 percent tokenizer overhead row for Opus 4.7 deserves its own callout: the model’s new tokenizer uses up to 35 percent more tokens for the same fixed text compared to Opus 4.6 and earlier, which means the effective per-call cost is higher than the per-token price suggests. The sticker price did not change relative to Opus 4.6, but the bill does.

Volume-tier discounts (90 percent savings with prompt caching, 50 percent with batch processing) and committed-spend negotiations can reduce these by 20 to 40 percent at enterprise scale. The honest cloud-economics observation: the cheap mini-tier models (GPT-5.5 mini, Claude Haiku 4.5) make the cloud-vs-self-hosted comparison much closer to “cloud always wins” than the heavy-tier comparison does, because the per-call cost falls into the fraction-of-a-cent range. If your workload genuinely fits on a mini-tier model, you should be on the mini-tier model, not on a self-hosted Spark. The comparison below uses Opus 4.7 and GPT-5.5 heavy tier as the relevant cloud baselines because most users who consider self-hosting do so to replace the heavy-tier models, not the mini-tier.

Row 5: privacy, opportunity, and lock-in

The value of these depends on the buyer. For a sovereign-AI consulting customer (a law firm, a medical practice, a journalist, a defense contractor), the value of “the inference does not leave our premises” is the entire reason for the engagement. For a developer building a side project, the value may be close to zero.

Privacy attributeCloudSelf-hosted
Inference data leaves your networkyesno
Inference data subject to vendor logging policyyesno
Vendor can change ToS unilaterally and block useyesno
Vendor can deprecate the model mid-engagementyesno
Inference cost can change at vendor discretionyesno
Vendor can change the tokenizer and raise effective priceyes (see Opus 4.7)no

These rows are the architectural facts. Each row is worth something different to different buyers, and the total cannot be computed in EUR without naming the buyer. The Opus 4.7 tokenizer change is a small but pointed example of the last row: the headline price did not move, but customers are paying more per call as of the rollout. Self-hosted operators are not subject to that class of vendor-side cost surprise.

Row 6: total monthly cost, all in

The break-even is best read off the total-monthly-cost line at each volume tier. The table below assumes:

Calls per daySelf-hosted total/moCloud-API (Opus 4.7) total/moWinner
10€810€17Cloud (48x cheaper)
100€810€174Cloud (4.7x cheaper)
800€810€1,392Self-hosted (1.7x cheaper)
1,000€810€1,740Self-hosted (2.1x cheaper)
10,000€810€17,400Self-hosted (21x cheaper)

The break-even sits between 400 and 800 calls per day, which is the same range most one-person teams find themselves in. The sensitivity analysis below shows what moves that line.

Sensitivity analysis: what actually shifts the break-even

The break-even line of “around 800 calls per day on Opus 4.7” is the result of the row-by-row model above. Five inputs swing it materially.

VariableDirectionMagnitude on break-even
Power jurisdiction (Quebec / Iceland vs Germany)down-200 calls/day
Operator hourly rate (€200 vs €100)up+200 calls/day
Cloud-API vendor tier (Sonnet 4.6 vs Opus 4.7)up+600 calls/day
Cloud-API vendor tier (Haiku 4.5 vs Opus 4.7)up+2,500 calls/day
Hardware reuse (5-year amortization vs 3-year)down-200 calls/day
Maintenance hours (8/mo vs 4/mo)up+150 calls/day

The big swing variable is the cloud tier. If your workload fits Sonnet 4.6 rather than Opus 4.7, the cloud is competitive up to roughly 1,400 calls per day. If your workload fits Haiku 4.5, the cloud wins until you reach 3,000+ calls per day. If your workload genuinely requires Opus or GPT-5.5 heavy, the cloud loses around 800. The decision pivots on “which tier do I really need,” which is a workload question, not a deployment question.

The second-largest swing is the operator’s hourly rate. Self-hosted is cheaper in dollar terms but the setup cost is bounded by the operator’s time, not by the hardware price. At €200/hr the eighty-hour setup is €16,000, which adds roughly two cloud-years of margin to the self-hosted path before it breaks even on dollars alone. (This is the case for the operator who is also a paying customer of their own time, e.g. a consultant or solo founder. For salaried operators, the calculation is different because the time is already budgeted.)

The third-largest swing is the prompt-caching multiplier. Anthropic’s prompt caching can drop cached input costs to 10 percent of the standard rate, which on Opus 4.7 means $0.50 per million input tokens instead of $5.00. If your workload has stable system prompts and tool definitions that benefit from caching, the cloud number drops by 30 to 50 percent and the break-even moves out by several hundred calls per day. The same workload on self-hosted gets free input caching by default (the model is already in memory).

Three buyer profiles and the recommendation each one gets

The same model produces different recommendations for different buyers. Three worked profiles.

Profile A: Solo developer building a side project. Workload: 50 to 200 calls per day. Heavy-tier model needed for code complexity. Operator hourly rate: notional, since this is unpaid project time. Recommendation: stay on API. The setup cost dominates; the break-even is years away even at the modest call volume. The cloud bill is €30 to €350/month, which is the price of optionality. Buy the optionality.

Profile B: One-person consulting practice with privacy-sensitive customers. Workload: 200 to 1,500 calls per day across customer engagements. Customers are paying partly for the “on-premises inference” architectural fact. Recommendation: self-host. The dollar break-even is comfortable, the privacy dimension is dispositive, and the equipment becomes a sales asset on top of being an operational tool. (For the consulting-pricing reasoning, the companion How I Priced Sovereign AI Consulting walks the rate logic.)

Profile C: Small product company with mixed workloads. Workload: 800 to 4,000 calls per day, half on a heavy model and half on a mini. Privacy: not a customer requirement; cost-conscious but not desperate. Recommendation: hybrid. Route the heavy-model calls to self-hosted infrastructure once volume passes 1,000/day; keep the mini-tier calls on the cloud where Haiku 4.5 and GPT-5.5 mini are nearly free. The hybrid pattern is operationally messier than either pure path but the dollar economics are the best of both.

When the model is wrong

The model is a centerline, not a verdict. Three adjacent cases where the math above misleads.

The model is wrong if your workload is bursty. The cloud bills per call, so a workload that fires 10,000 calls in three days per month and zero on the other twenty-seven days will not actually trigger the linear cost model above. The cloud’s elasticity is real and matters for spiky workloads. Self-hosted hardware sits idle most of the burst-month, paying the same monthly cost. The break-even calculation in the table assumes the calls are roughly uniform across the month.

The model is also wrong if your latency requirements are tight. Cloud APIs incur 50 to 200 ms of round-trip latency that local inference does not, and some workloads are latency-bound rather than cost-bound. If your application falls over at 200 ms of API round-trip, no amount of break-even arithmetic matters; you have to self-host for the latency, regardless of the call volume.

The model is also wrong if your cloud vendor changes the tokenizer mid-engagement. The Opus 4.7 example is the canonical case: same sticker price as Opus 4.6, up to 35 percent more tokens billed for the same prompts, effective price increase rolled out without a price-change announcement. Self-hosted operators are immune to this class of vendor-side cost adjustment because there is no vendor. For risk-averse buyers, that exposure alone is worth modelling against the line item it actually hits, which is the cloud column under “vendor can change cost at discretion.”

The honest answer

You should self-host if you are at 1,000+ calls per day AND privacy is a real customer requirement. Both clauses matter. The 1,000-call threshold gets you out of the unit-economics-loss zone with margin. The privacy clause gets you a customer-payable reason to do the eighty hours of setup work. Without both, the math says cloud or hybrid.

You should stay on API if you are below the break-even OR if your only constraint is unit economics. The cloud is mature, the latency is acceptable for most workloads, and the cost of optionality is real. Pay for it where it makes sense. The Haiku 4.5 tier in particular has compressed the “cloud is too expensive” floor to a fraction-of-a-cent range that is hard to beat on self-hosted at any volume.

You should be on the hybrid path if your workloads split cleanly into “heavy and steady” and “mini and bursty.” Most teams that grow into mixed workloads end up here. The operational complexity is real but the cost savings are the largest of any of the three paths.

If you have a workload in mind and you want a second pair of eyes on which path matches your actual constraints, that is the use case for a Stack Audit. The audit is two hours, fixed-fee, and ends with one of the three recommendations above plus a configuration sketch. About a third of the audits end with “stay on API”; about a third with “self-host”; about a third with “hybrid.” The conclusion is the conclusion that the math actually says, not the conclusion the audit was secretly designed to push.

Where this fits

This piece is the cost-model comparison. The hardware-stack comparison is DGX Spark vs M3 Ultra: Local LLM Decision. The model-stack comparison is Mistral Small 4 vs Qwen3.6 vs GLM-5 on DGX Spark. The tooling comparison is Vibe vs OpenClaw vs Aider vs Claude Code 2026. The reference architecture that combines all the choices is the hub article Sovereign AI Stack 2026 Reference Architecture.

For the Spark-side operational receipts, the production performance numbers for Qwen 3.6 are in Spark Arena Rank 4 Made Me Add Qwen3.6.

Book a Stack Audit before the hardware decision

The honest answer might be “you do not need an audit, your call volume is 30 per day, stay on API and revisit this conversation in twelve months.” If so, you are out a message and not the fee. To book: reach me through any of the contact links in the footer of this page (Nostr DM is the fastest, the email link is HTML-entity-encoded so it survives spam scrapers, the GitHub profile takes issues too). Include the workload sketch in the first message: calls per day, model tier, privacy axis. The dedicated booking page is in active build.

The break-even is between 700 and 1,200 calls per day depending on which cloud tier you actually need. The line moves with jurisdiction, with hourly rate, and with whether your workload can ride the prompt-caching multiplier. The privacy axis sits orthogonal to the dollar axis and does most of the real deciding. The honest answer is the answer that names which axis is binding for your case.