Learn

Get to know Acurast. Explore our story, dive into the technical documentation, and see who we’re partnered up with in the ecosystem.

Self-hosted LLM on a phone: the 9B model Coinbase fine-tuned to beat Opus

Self-Hosted LLM on a Phone: The 9B Model Coinbase Fine-Tuned to Beat Opus

A smartphone with glowing lime glass layers fanned out in front of it like the layers of a neural network, beside the headline Self-hosted LLM on a phone.

On October 12, Coinbase CEO Brian Armstrong posted that his engineers had fine-tuned Qwen3.5-9B, a free, open-weight model, on internal data, and that it beat frontier models at fraud prevention. The post has passed 1.6 million views. Nine billion parameters is small enough to be a self-hosted LLM that a company owns outright: Coinbase trained it for under $100 and serves it itself instead of calling a vendor’s API.

 

It is also small enough for a phone. Qwen3.5-9B runs on 16 GB Android phones in the Acurast network, behind an HTTPS address that speaks the same API as OpenAI’s, for about 0.6 to 1 ACU per phone per day. The measurements here come from tests on the Acurast mainnet, including how one model scales across as many phones as the work needs.

 

What Coinbase Built

 

Coinbase Onramp lets people buy crypto inside partner apps, sometimes as a guest with no account history. To catch fraud there, Coinbase added an LLM reviewer behind its existing rules. It reads about 7,000 tokens of context per transaction (a token is a word fragment, roughly three quarters of a word) and answers with one line, such as RISK_LEVEL: 5.

 

The first reviewer was Claude Opus. When Coinbase’s own benchmark showed newer Opus, Sonnet and GPT releases scoring lower on catching fraud, the team trained Qwen3.5-9B on its historical fraud outcomes instead. It used LoRA, a method that trains a small set of extra weights rather than the whole model. The result:

  • Training: one Nvidia GPU, under $100.
  • Quality: better than the Opus 4.5 reviewer on all four fraud metrics, including 9.6 points higher F1, the score that balances catching fraud against false alarms.
  • Speed: a median answer in less than half the time the Opus 4.5 reviewer took.

 

“The frontier models are amazing generalists. But increasingly you’ll see specialist models out perform on more narrow tasks, either working on teams, or by themselves.”

Brian Armstrong, CEO of Coinbase, on X

Screenshot of Brian Armstrong's post on X: Coinbase fine-tuned the open-weight Qwen3.5-9B model on internal data, and it outperformed frontier models at fraud prevention.

Armstrong expects some backend services to be “replaced entirely by this new architecture.” If that happens, teams will need a place to run those specialist models, and training is the cheap part: Coinbase’s run cost less than $100.

 

A 9B Model on a Phone in Five Minutes

 

Compressed to about 4 bits per weight, Qwen3.5-9B is a 5.7 GB file. It uses GGUF, the format of llama.cpp, the open-source engine that runs language models on ordinary CPUs. A flagship phone with 16 GB of RAM holds it with about 0.8 GB to spare.

 

An opened smartphone seen from above, with a miniature server room of glowing lime-lit racks where its components would be.

 

Acurast’s Node.js runtime ships with llama.cpp built in, and the Acurast Tunnel gives a Deployment a public https://<id>.acu.run address with a real certificate. The test app, under 300 lines of JavaScript, opened the tunnel, downloaded the model from Hugging Face, benchmarked a few server settings, kept the fastest and served an OpenAI-compatible API. It ran only on attested phones. The first answer arrived about five minutes after the deploy command. No GPU, no cloud account, no Docker.

 

Qwen 3.5 9B Benchmark Results on Phones

 

An LLM reads the prompt, which is fast because it happens in parallel, then writes the answer one token at a time. On the fastest phones in the tests, Snapdragon 8 Elite-class phones running MNN, Qwen3.5-9B read the prompt at up to 85.2 tokens per second and wrote 9.3 tokens per second.

 

Smaller models from the same family are much faster, because phones are limited by how fast they move weights through memory. The animation replays one answer at the fastest writing speed measured for each model, in real time.

 

Animated chart: three cards answer the same prompt in real time. Qwen3.5-0.8B writes 92.8 tokens per second and finishes in 0.9 seconds, Qwen3.5-4B writes 18.5 and finishes in 3.5 seconds, Qwen3.5-9B writes 9.3 and finishes in 6.7 seconds.

 

The 4B model also runs on 8 GB phones, so far more Processors qualify. The 0.8B model leaves memory mostly idle, so one phone can serve several conversations at once: even an 8 GB phone served four parallel chats at 46 tokens per second combined.

 

What It Costs

 

A Deployment sets a maximum price in ACU, the network’s utility token, and the Matcher pairs it with phones that meet its requirements. For phones with 12 GB of RAM or more, the market average on test day was 0.57 ACU per phone per day, and 1.03 ACU bought instant matching. That was roughly 5 to 10 US cents at the time. The whole study, around 60 phone runs, cost about 14 ACU.

 

Many Requests at Once

 

A larger test rented more than 100 phones and timed a real 7,000-token prompt, the size Coinbase’s reviewer reads. The fastest was a 16 GB phone with a Snapdragon 8 Elite-class chip running MNN, an open-source engine from Alibaba, Qwen’s developer. It read the prompt in 3 minutes 15 seconds with the 9B model, 1 minute 37 seconds with 4B and 15 seconds with 0.8B.

Time for one phone to read a 7,000-token prompt

Qwen3.5-9B

3 min 15 s

Qwen3.5-4B

1 min 37 s

Qwen3.5-0.8B

15 s

Measured with a real 7,000-token prompt on the fastest phone of a 100-phone test (16 GB, Snapdragon 8 Elite-class chip), MNN engine, 8 CPU threads, 4-bit models.

Those times are for one request on one phone. Each phone works through its own requests, so ten replicas read ten prompts at the same time and a hundred read a hundred. For a review queue or a nightly batch, the number that counts is how much gets done per hour, and it grows with every phone added.

 

Where a Phone-Hosted Specialist Fits

 

A dark data center aisle where one server rack is missing and a single smartphone stands in the gap, outlined in lime light.

 

Most specialist work runs in queues and in the background, where throughput and availability count for more than the speed of a single answer:

  • Second-look queues: chargebacks, flagged accounts and support tickets get a first verdict within a minute instead of waiting hours for a person.
  • Always-on guards: scam filters for community chats and prompt-injection checks in front of AI agents, which read short messages in seconds.
  • Batch scoring: re-checking yesterday’s transactions overnight, spread across as many phones as the job needs.

 

The Laya demos show the short-input end of this: a classifier on one phone sorting scam messages in 0.2 to 1 second.

 

What the Network Adds: Privacy, Scale and Availability

 

Privacy. Prompts go to your own Deployment, not to a model vendor, which is the reason Coinbase gave for self-hosting. According to the Acurast docs, smartphone Trusted Execution Environments (TEEs) “confirm that hardware is genuine rather than fake, and maintain confidentiality without requiring trust in the device owner.” Secrets such as the API key travel as encrypted environment variables, “only decrypted when the code runs on a processor.”

 

Scale. One config ran ten phones, each with its own fixed HTTPS address, and a larger test rented more than 100 in one afternoon. Adding capacity means raising the replica count: 137 phones matched the 0.8B model’s requirements, so the same config at 100 replicas fits today.

 

Availability. A Deployment spread across phones in many places has no single data center to go down. Spare replicas keep a queue moving whenever a phone is busy or offline, and the same config can be redeployed to new phones at any time.

 

Animated chart: an acurast.json with numberOfReplicas set to 100 starts 100 attested phones that load Qwen3.5-0.8B and start serving, each with its own HTTPS address. The view then switches to a field of dots labelled 350K+ phones in the network.

 

Run Your Own

 

The code behind this post is open. The Qwen sample in the Acurast example apps runs Qwen3.5 on a phone behind an OpenAI-compatible API, and it opens in the Acurast Hub playground without a build step. A second sample, LLM on MNN, serves the same API with the MNN engine behind the fastest numbers in this post, and is in the playground too. The LLM guide in the Acurast docs explains loading a model in a Deployment, and the Acurast Tunnel quickstart covers the public HTTPS address. If you fine-tune as Coinbase did, merge the LoRA weights into the model before converting it: the result has the same size and speed as the base model.

Building on Acurast? If you are training your own specialist models and want to serve them on attested phones, come compare notes in the Acurast Discord.