Apple gave small developers free cloud AI on June 9. By July 10, one had already built a workaround to Apple's own definition of "small."

July 25, 2026 · 9 min read

On June 9, at WWDC, Apple announced that developers could get free access to Apple Foundation Models running on Private Cloud Compute (PCC) — Apple's server-side model tier for requests too heavy for the Neural Engine — with no infrastructure bill attached. One number stood between any developer and that entitlement: fewer than 2 million first-time App Store downloads. Not 2 million downloads of the app asking for AI access. Two million downloads across every app that developer has ever shipped, counted from the day each app first went live.

Guilherme Rambo, an App Store developer of over ten years, found out his account had already crossed that line — because of ChibiStudio, an app with nothing to do with AI. On July 10, instead of writing a blog post about it, he shipped a workaround.

What the eligibility page actually says

Apple's own developer page spells the requirement out in three bullets, and none of them scope the download count to the app requesting the entitlement:

"Access to PCC is available to developers who meet the following criteria: Are enrolled in the App Store Small Business Program. Have fewer than 2 million first-time app downloads from any of their apps on the App Store. Have the Private Cloud Compute entitlement assigned to their account."

Source: developer.apple.com/private-cloud-compute, verified directly 2026-07-25.

"Any of their apps" is doing all the work in that sentence. The Small Business Program itself is scoped the way you'd expect — enrollment requires under $1M in prior-year proceeds, a per-developer-account figure, which is a reasonable proxy for "small." But the PCC download count isn't a revenue figure and isn't scoped per app. It's a lifetime, cumulative, account-wide tally that keeps counting on apps that have nothing to do with the AI feature a developer is trying to ship, and never resets.

The same page states the consequence just as plainly:

"If any app subsequently exceeds the 2 million first-time downloads threshold, or the developer is no longer enrolled in the App Store Small Business Program, the developer will be notified and must migrate to an alternative solution within 6 months."

There's no mechanism described for checking your own standing proactively — you find out when Apple tells you, after the fact, with a six-month clock already running.

Ten years, one unrelated app, disqualified

Rambo's case is the one that surfaced publicly, because he's a well-known Apple developer (he blogs and posts as "insidegui"). His disqualifying app is ChibiStudio, which has been on the App Store for roughly a decade and has nothing to do with on-device AI — it simply sold enough copies over ten years to push his account's lifetime first-time-download count past 2 million. He posted about the disqualification on Mastodon, and the reaction from two of the more widely-read independent Apple commentators was immediate: John Gruber linked it on Daring Fireball, and Manton Reece wrote that reading about it was what reminded him why he'd applied to the Small Business Program in the first place.

Sources: Gui Rambo, mastodon.social/@_inside; Daring Fireball, July 12, 2026; manton.org, July 12, 2026.

The unfairness here isn't hypothetical or a matter of interpretation. A developer who has spent ten years building a following, exactly the kind of track record that should make a developer more trustworthy to hand cloud compute to, gets treated identically to whether they'd shipped nothing at all: locked out, because the entitlement doesn't measure trust, engagement, or even current app performance. It measures a single cumulative counter that only ever goes up.

No paid tier. No stated alternative.

The obvious question is what a disqualified developer is supposed to do instead. Apple's own page says only "migrate to an alternative solution" — it doesn't say what that is. John Gruber's analysis of the policy, published a month before the TwoMillionKit episode, is direct about both the gap and what PCC access is actually for:

"there's no way (yet?) to buy your way out of these limits. There are no paid API tiers for larger developers." … "for the OS 27 cycle at least — PCC is primarily a feature for Apple itself to use in Siri AI."

Source: Daring Fireball, June 13, 2026.

Put those two facts together and the "free tier for small developers" pitch reads differently. Third-party access to PCC isn't the product; it's spare capacity on infrastructure Apple built to run its own Siri features, handed out under a rule that happens to exclude paying for more of it. There's no amount of money a disqualified developer can offer Apple to keep using it — the only paths out are staying under a counter you don't control, or building around the entitlement entirely.

The workaround: six commits, one narrow escape hatch

Rambo's answer is TwoMillionKit, a Swift package published July 10, 2026 (six commits, all the same day). Its approach doesn't fight the entitlement check — it routes around the framework path that enforces it entirely. macOS 27 ships fm, a system command-line tool that talks to the same on-device/PCC-backed language model, and that CLI tool doesn't perform the same download-count gate the Swift framework API does. TwoMillionKit implements Apple's own LanguageModel protocol as a thin wrapper that shells out to fm and streams its output back through the normal Swift API surface — so from the calling app's point of view, it's a drop-in replacement for the entitled path, minus the entitlement.

It comes with a real, structural limitation that the README states outright: it only works for unsandboxed Mac apps. Any app distributed through the Mac App Store is sandboxed, and sandboxed processes can't shell out to arbitrary system binaries, so App Store Mac apps can't use it. iOS and iPadOS apps are sandboxed unconditionally — there's no unsandboxed distribution path on those platforms at all. That means the fix that exists today covers exactly one narrow slice of the affected population: Mac developers willing to distribute outside the Mac App Store. Every iOS developer in Rambo's position, almost certainly the majority of the developers this entitlement was pitched to, has no equivalent workaround. Rambo's own README calls it something to use "sparingly and at your own risk" — a stopgap, not a fix, and one Apple could close with a single framework update.

Where this leaves privateSLM's own engine choice

We build privateSLM around exactly this fork in the road, so it's worth being precise about which side of it we're on. Our on-device engine, FoundationEngine, talks to Apple's on-device system model directly:

// Sources/FoundationEngine.swift
if #available(iOS 26.0, macOS 26.0, *) {
    sessionBox = instructions.isEmpty
        ? LanguageModelSession()
        : LanguageModelSession(instructions: instructions)
}
...
let stream = session.streamResponse(to: prompt)

LanguageModelSession here runs against SystemLanguageModel.default on the Neural Engine, on the device, with no network call and no PCC entitlement involved at all — it's the same path Rambo's own apps can use freely regardless of ChibiStudio's download count, since the on-device tier was never gated by the 2-million-download rule to begin with. When a device or request needs more than the on-device model can do, we don't have a PCC fallback to lose access to — we fall back to a downloaded open-weight GGUF model through llama.cpp instead. That path doesn't have a lifetime download counter, a Small Business Program requirement, or a six-month migration clock attached to it, because no single company's account-wide standing decides whether it keeps working.

That's not a knock on Apple's on-device model, which is genuinely free, genuinely private, and genuinely not part of this story. It's specifically the cloud tier, the part of "Apple Intelligence" that leaves the device, that carries a disqualification risk no developer can fully see coming until Apple's notification arrives. Any product decision that leans on PCC as a permanent, free foundation is making a bet on a counter it doesn't control and can't check in real time. An open, downloadable engine doesn't carry that particular risk — it carries different ones (storage, download time, quantization quality), which is its own trade-off, but not this one.

What would actually fix it

None of the plausible fixes here are exotic. Scope the download count to the specific app requesting the entitlement, the way the feature is pitched, instead of the whole account. Offer literally any paid tier, so "no" doesn't have to mean "no path forward at any price." Or, short of either, expose the counter itself — an API a developer can query before shipping, instead of a notification that arrives after the fact with a clock already running. As of this writing, six weeks after the June 9 announcement and two weeks after TwoMillionKit went public, Apple has changed none of the three.

Discuss this on the forum → — if you're a small developer who's hit (or is worried about hitting) the 2-million-download account-wide count, we'd like to hear how you're planning around it.