Ulric
Book a call

Eugene, Oregon · one person, whole builds

Insights

What on-device AI costs: a voice journal at 813.4 MB

What on-device AI costs: a voice journal at 813.4 MB

On 24 January 2026, twenty-two days after Mutterly first reached the App Store, I shipped an update that moved the language model onto the phone. The download went to 813.4 megabytes. Everything interesting about the app since then follows from that one number: what it buys, who it reaches, the optional cloud tier that still sits beside it, and the one question about it I cannot answer.

What changed on 24 January?

The writing can stay on the phone.

Apple keeps the receipts, in the version history on the product page. Four releases, all in January 2026:

VersionDateWhat it was
1.32 Januaryfirst release
2.03 Januaryauto-store on timer end, 15 second recordings
2.124 Januarythe engine moves onto the device
2.1.127 Januarya regex pass over the logs

The release note for 2.1 is not subtle about it. This is store copy, and the promise in it is a promise about the model that now ships inside the download:

BIG UPDATE: Native On-Device AI is here! ... 100% Private: Your voice recordings and summaries never leave your device. ... Fast & Secure: Powered by Llama 3.2 (1B), optimized for Apple Silicon.

Read the tense in the current store description next to that: Mutterly "now runs completely locally on your iPhone using the Llama 3.2 model". Now, meaning not before. For the first three weeks of its life the app recorded on the phone and had the summary written somewhere else. The build itself, twenty second bursts in and one written reflection out, is its own case study, and the app sits alongside two others in a post about three small iOS apps. This one is about the model, and the model is the expensive part.

What does 813.4 MB actually cost?

One wait, paid once at install, instead of a small wait paid on every summary forever.

The exact figure is not a marketing round number, and you do not have to take mine. Apple publishes it:

curl -s "https://itunes.apple.com/lookup?id=6757023350&country=us" \
  | python3 -c 'import json,sys; d=json.load(sys.stdin)["results"][0]; \
                print(d["fileSizeBytes"], d["minimumOsVersion"], d["version"])'
# 813386752 17.0 2.1.1

813,386,752 bytes. The product page shows that as 813.4 MB, which tells you Apple is counting in decimal megabytes rather than mebibytes, and the same file counted in mebibytes is 775.7. Most of it is the weights rather than the app around them. I have never measured the split and I am not going to publish one I did not measure.

The top of the Mutterly product page on the App Store: the app icon, the title Mutterly and the subtitle Voice Notes and AI Summaries, above the row of facts Apple prints under them, which ends with a size of 813.4 MB.
The number on the right of that row is the entire design decision. Everything else on the page is downstream of it.

What a download costs a person depends on their connection, so here is the arithmetic rather than a claim. The FCC raised its fixed broadband benchmark in March 2024 to "download speeds of 100 megabits per second and upload speeds of 20 megabits per second", four times the old download benchmark. At that benchmark, 813,386,752 bytes takes about 65 seconds. At 10 Mbps it takes just under eleven minutes. Neither number is a measurement of anybody's actual connection. Both are the same file divided by a stated rate.

Set that against the alternative. A journal that summarizes in the cloud installs in a few seconds and then pays a round trip every single time somebody finishes talking, including the times when there is no signal, which for a journal is often exactly the moment a person has something to say. Bundling moves the entire cost to the front, where it happens once, in a progress bar, before anyone has trusted the app with anything.

Which phones does the floor exclude?

With the weights in the bundle, almost none. With Apple's own model, five model years of them.

Mutterly's Information table says "Requires iOS 17.0 or later". Apple's announcement the day iOS 17 shipped puts a name to what that means:

iOS 17 is a free software update that is available starting today for iPhone Xs and later.

Apple's "Identify your iPhone model" page gives the iPhone XS a year introduced of 2018. So a phone bought seven years before the app existed can still run it, and it can run it with the radio off, because there is nothing to reach.

Now the road I did not take. Since iOS 26 there is a Foundation Models framework that hands an app the on-device model behind Apple Intelligence, no weights required, no download to speak of. The documentation states the catch in one line:

To use Apple Foundation Models, people need a device that supports Apple Intelligence.

Follow that to the list on Apple's own page and it reads "available on all iPhone 16 models and later, iPhone 15 Pro, iPhone 15 Pro Max", plus the iPad, Mac and Vision hardware. The iPhone 15 Pro was introduced in 2023. That is the whole trade, and it is not close to symmetric: an app built the elegant way would be a fraction of the size and would silently do nothing at all on every iPhone older than the iPhone 15 Pro, which is five model years of the phones Mutterly runs on today.

A comparison of two ways to put a model on a phone. Bundling the weights ships Llama 3.2 1B inside the binary at 813.4 megabytes, sets a floor of iPhone XS on iOS 17, works with the radio off and carries the Llama license obligations. Calling the system model ships nothing extra, sets a floor of iPhone 15 Pro because Foundation Models requires a device that supports Apple Intelligence, and asks for no attribution.
Two ways to answer the same question, and the phones each answer walks away from.

On a server this is not a decision at all. When one provider is down or rate limited I fall through to the next, which is exactly what a routing ladder across four providers is for. A phone has no ladder. It has a minimum in a table, you set it once, and everybody below it is told the app is not compatible with this iPhone.

What does the license ask of an app that ships weights?

Three things, and two of them have to be inside the binary you upload.

Open weights are still distributed weights the moment they are stapled to an App Store build, and the Llama 3.2 Community License Agreement, dated 25 September 2024, is specific. Clause 1.b.i covers the copy and the credit:

If you distribute or make available the Llama Materials (or any derivative works thereof), or a product or service (including another AI model) that contains any of them, you shall (A) provide a copy of this Agreement with any such Llama Materials; and (B) prominently display "Built with Llama" on a related website, user interface, blogpost, about page, or product documentation.

Clause 1.b.iii is the one people skip, because it names a file:

You must retain in all copies of the Llama Materials that you distribute the following attribution notice within a "Notice" text file distributed as a part of such copies: "Llama 3.2 is licensed under the Llama 3.2 Community License, Copyright © Meta Platforms, Inc. All Rights Reserved."

A website is easy. A Notice text file riding inside an iOS app bundle is a build step somebody has to remember, and a copy of the agreement has to be reachable from the app itself, which means a screen and a scroll view and a spot in the settings that nobody will ever open. None of that is hard. All of it is the sort of thing that gets discovered by an email rather than by a checklist. Since a blogpost is one of the places the clause names, plainly: Mutterly is built with Llama.

The other half of shipping on Apple's store, the signing, the TestFlight builds and the review that no code change could satisfy, is in a separate post about shipping native as a web studio.

How long does a summary take?

I do not know, and that is the number I owe this app.

I said as much at the end of the three-apps post yesterday, so here is the protocol instead of another promise. It needs no instrumentation, no profiler and no build, just a phone and a stopwatch:

  • Oldest supported hardware first: an iPhone XS running iOS 17, which is the floor the store page advertises.
  • Airplane mode on, so the number cannot be quietly rescued by a network.
  • The same day every run: a fixed set of recordings of the same length, replayed rather than improvised.
  • Stopwatch from the tap that asks for the summary to the last word appearing, ten runs, report the median and the worst.
  • Repeat on a current phone. Publish both, because the gap between them is the only honest thing to say to somebody deciding whether to install it.

I considered faking it with a 1B model on this Mac and stopped, because that measures a different runtime on different silicon and would produce a confident number about the wrong machine. An unmeasured latency is a gap. An invented one is worse.

The one part of the timing that is not a mystery is the network: with the bundled model it is zero. The store description promises "It even works offline in Airplane mode", and that is not a claim you have to believe. It is a switch on the phone in your hand, and the app either answers or it does not.

Why did a counselor want a journal that does not have to phone home?

Because the things worth journaling are the things people will not type into a box that syncs.

I spent ten years in mental health before I built any of this, residential treatment and then a private practice under CUTI LLC, and I still work in a county jail. What I learned there was not about journaling. It was about the gap between what somebody says out loud in a room with the door shut and what they are willing to write down. Every product decision in Mutterly is aimed at that gap. Twenty seconds, no account, no login, and, with the bundled model, nothing that ever becomes a row somewhere with a person's name on it.

The App Privacy section of the Mutterly product page showing a panel that reads Data Not Collected, the developer does not collect any data from this app, above the Information table listing the seller as CUTI LLC, the size as 813.4 MB, the requirement of iOS 17.0 or later and an age rating of 13 plus.
The panel a person sees before they download anything, printed directly above the seller, the size and the iOS floor.

That panel says Data Not Collected. Open the App Privacy detail behind it and Apple adds a sentence that I think is the most useful line on the whole page: the developer "indicated that the app's privacy practices may include handling of data as described below. This information has not been verified by Apple." Which is honest, and which is the reason the airplane mode line matters more than the label does. The label is a declaration I made. Airplane mode is a test you can run in ten seconds without trusting me at all. Given a choice between asking for trust and handing someone the experiment, hand them the experiment.

Two boundaries, said plainly. The first is the cloud. Alongside the bundled model, Mutterly can reach larger ones over the network. The store description offers a "Cloud AI Option: Unlock even more powerful models (Gemma, Llama 3 8B +25 more) via the Cloud (Optional)", and the settings screen takes an OpenRouter model string and an API key of your own. The store copy calls that tier optional, and anybody who wants nothing at all to leave the phone should leave it off. I would rather write that down here than let a reader find it in the settings. The second is simpler. Mutterly is a journal. It is filed under Health & Fitness, it carries a 13+ rating partly for medical treatment information, and it does not diagnose, treat or stand in for anything. If the day it is summarizing is the kind of day that needs a person, it is not the person. That distinction is one I wrote about at more length when I left the clinical work.

What I would decide next, and cannot

Whether to add a Foundation Models path for the phones that have one.

It is genuinely tempting. Newer devices would get an ordinary-sized download, older ones would keep the bundled weights, and nobody would be turned away. It also adds a third path. The privacy story already has a branch in it, the optional cloud tier, and a second local engine would mean every bug report starts with a question about which model answered. Worth doing only if enough of the people actually opening this app are holding an iPhone 15 Pro or newer.

The promise that makes the app worth shipping is the same promise that makes its most important product decision unmeasurable. The stopwatch, at least, I can still go and get.

Common questions

Does Mutterly work without a network?

Yes. Its App Store description says the app "runs completely locally on your iPhone using the Llama 3.2 model" and that "It even works offline in Airplane mode", which is a claim you can test in ten seconds with the switch on your own phone. The same description also names a cloud option that reaches larger models over the network, and the store copy calls that tier optional, so a person who wants nothing at all to leave the phone should leave it off.

What is inside the 813.4 MB download?

Apple's lookup endpoint reports 813,386,752 bytes for the app, which the product page rounds to 813.4 MB in decimal megabytes. Most of that is the Llama 3.2 1B weights rather than the app around them, since summarizing a day without sending it anywhere means the model has to arrive with the app. I have not measured the exact split and do not publish a figure for it.

Which iPhones can run it?

The product page says the app requires iOS 17.0 or later. Apple announced iOS 17 as available "for iPhone Xs and later", and lists the iPhone XS as a 2018 model, so the floor is a seven-year-old phone. For comparison, Apple's own Foundation Models framework needs a device that supports Apple Intelligence, which starts at the iPhone 15 Pro from 2023.

Is Mutterly therapy?

No. It is a voice journal that turns short recordings into a written daily reflection. It is listed under Health and Fitness with a 13+ age rating, it does not diagnose or treat anything, and it is not a substitute for working with a person. I built it as a counselor who wanted somewhere private to think, not as a clinical tool.

Related

← All insights