↓ Skip to main content
AI & Data

Can a local 30B model write my blog? I fact-checked it

·7 mins
An intern who never says “I’m not sure” needs more checking than one who asks too many questions. I asked a local model to write a blog post for me, told it to mark anything it was unsure of, and then checked every line.
Three attempts at the same brief: the agent run read for 84 minutes and wrote nothing; Colibri wrote 975 words in 10 minutes with 12 errors and no warnings; Ollama wrote 1,153 words in 13.5 minutes with 10 errors, one warning and a page that breaks the site build
Fluent, fast enough, and wrong in a dozen places.

After comparing Ollama and Colibri on speed, I wanted to know whether a local model is good enough for real work. So I picked a job I do every week: writing a post for this blog. The topic was one I had just covered myself, what model weights are, so I had a researched, sourced version to check against.

The setup
#

Everything ran on my Linux server: a 2019 laptop-class Intel i7-8665U (4 cores, 8 threads) with 31 GB of RAM and no GPU. The model was Qwen3-Coder 30B in 4-bit form in both engines.

Every attempt got the same brief: the topic, seven points the reader should understand, and my blog’s writing rules (voice, structure, front matter, British spelling, references). Two extra rules for this test:

  • You have no internet access. Mark anything you are not sure of with [CHECK].
  • Mark every reference [FROM MEMORY].

I tried three ways of asking:

  1. An agent: Claude Code 2.1.72 on the server, pointed at Colibri instead of Anthropic’s servers through Colibri’s Anthropic-compatible API, with file tools and no web access.
  2. A plain request to Colibri: one chat message with the rules and the brief, no tools.
  3. The same plain request to Ollama.

Attempt 1: the agent never got started
#

A coding agent does not send just your question. Before my brief, Claude Code sends its own instructions and the description of every tool it can use. Colibri’s health page showed the size of that first request: 19,545 tokens, about 37 times my benchmark prompt.

Colibri’s documentation warns about exactly this: on the CPU path, an agent’s preamble can mean “an hour of silent thinking before the first output token”. On my server it was worse. After 84 minutes Colibri was still reading the prompt and had not produced a single token, so I stopped it.

Two lessons from the attempt that failed:

  • A local agent needs a GPU or a much smaller preamble. On a CPU, the agent’s own instructions cost more than the work.
  • Colibri did not notice that I had gone. When I stopped Claude Code, Colibri kept reading the abandoned 19,545-token prompt, and the next request would have queued behind it. I had to restart the server.

Attempts 2 and 3: plain requests
#

Without an agent the prompt was 2,598 tokens, and both engines finished:

ColibriOllama
Time to the first word229 s271 s
Writing speed4.3 tokens/s3.2 tokens/s
Total time9.9 minutes13.5 minutes
Length975 words1,153 words
[CHECK] marks01

Both drafts read well. They followed the outline, used headings and code blocks, and sounded like a blog post. Then I checked them line by line against the primary sources from my own post and against the model files on disk.

What they got wrong
#

ErrorColibriOllama
Cites a page that does not existWikipedia “Weight (machine learning)”, also linked from the image captionllama.cpp/docs/LLM.md (404)
Cites a real paper for the wrong thingarXiv 1906.02107 as a quantisation paper; it is about binarised networks
Explains the 15 to 19 GB gap as “metadata and overhead” (the real cause: 3.1 GB of 16-bit weights and 1.8 GB of scales; the metadata is 28 KB)yesyes
Gets the size arithmetic wrongdivides by 1024³ and calls the result GB
Calls Colibri a model; it is an engineyes
Says each expert lives in its own file; experts are tensors inside 49 shard filesyes
Says weights files store training settingsyes
Says a 30B model has “billions of neurons” (it has billions of parameters)yes
Says quantised models “often need retraining” (most methods do not even need a calibration set)yes
Calls experts “expert neurons”; they are whole sub-networksyes
Says open source without open weights is possible; the OSI definition requires the weightsyesyes
Misdescribes my own earlier postyes
Puts the post in one of my series, as a part that does not exist“AI in practice” part 6“Learning OSV” part 4, which already exists
Wrong date, and a timezone that hints at a locationyesyes
Uses a shortcode my theme does not have; the site build failsyes
Leaves a placeholder in the image captionyes
Ignores formatting rules (wraps the file in a code fence, plain links, US spelling)yesyes
References not marked [FROM MEMORY] as askedyes

Twelve substantive errors in one draft and ten in the other, from the same model. The single [CHECK] Ollama placed was on the one number it had been given in the brief.

They were not wrong about everything. Both explained a neuron’s weighted sum correctly, said that safetensors avoids the security problem of pickle files, and described a router picking experts for each token. Ollama’s draft got the 15 GB arithmetic right and described correctly why Colibri can keep experts on disk.

Why “mark what you’re unsure of” did not work
#

The instruction assumes the model knows where its knowledge ends. It does not. The invented Wikipedia link and the invented llama.cpp page were written with the same confidence as the correct facts, and the model gave no sign which was which. A [CHECK] mark can only flag doubts the model has, and these errors came with no doubt attached.

The same model also produced two different drafts from one prompt at temperature 0. The two engines store the weights differently (Colibri’s int4 and Ollama’s Q4_K_M), so the numbers inside the model are not identical, and small differences grow over a thousand words.

What I will use a local model for
#

JobLocal 30B model?
A first outline, headings, a structure to react toYes
Rewording a paragraph I have already checkedYes
Facts, numbers, versions, referencesNo, not without sources to read and a check afterwards
An agent loop on a CPU-only machineNo, the preamble alone took over an hour
Anything that goes straight to the blogNo: one draft would have broken the build, and both would have published a fake reference

The version of the weights post I published was researched with web access, checked against the real files on disk, and every number in it has a source. That took longer than ten minutes, and it is the only version I would put my name on.

Takeaways
#

  • A local 30B model writes fluent, well-structured posts in about ten minutes on a CPU, with about one error in every hundred words.
  • Asking it to flag uncertainty did not work: 22 errors between two drafts, one [CHECK] mark.
  • Both drafts cited a page that does not exist. Check that every reference opens and says what the text claims.
  • Coding agents send a large preamble. On a CPU-only machine with Colibri, that alone took more than 84 minutes.
  • Use a local model for structure and wording; take facts only from sources you have read.

References
#

Author
Samarthya
Engineer, learner, tinkerer. This is my trophy shelf of everyday work and leisure.

Related

Ollama or Colibri? A beginner's comparison on two of my machines

A Fuji and a Granny Smith are both apples, and you would still not bake with the one you snack on. Ollama and Colibri both run AI models on your own machine, but they were bred for different jobs. Both apples. Not the same apple. I have used Ollama for a while, and even built a small demo on it. Colibri is new to me: I installed it this week. So this is a comparison by someone who knows one tool well and is a beginner at the other, which is probably where you are too.

Colibri on my desk: a 30B model writes a network scanner, slowly

A new colleague who works slowly but knows a lot is still useful, as long as someone checks the work. I gave a 30-billion-parameter coding model, running entirely on my own desktop, one ordinary job and checked everything it handed back. The whole experiment on one card. Colibri is a small inference engine (the program that runs a model) built for one trick: a mixture-of-experts model only uses a few of its sub-networks, called experts, for each token, so Colibri keeps the busy experts in memory and reads the rest from disk. That lets a model that would not fit in RAM run on an ordinary machine. I wanted to know what that feels like on a real task, not a benchmark.

Two apples, one model

·1 min
Spent the day comparing two ways of running a model locally: Ollama, which I know, and Colibri, which I installed last night. Same model on both, Qwen3-Coder 30B. Fell: the 19 GB Colibri download stalled overnight, and the Ollama one stalled at the very end and started again from 2%. My desktop ran out of memory twice with both tools and a browser open. Got up: moved the test to my Linux server. The model arrived in five minutes there, and the engine built in 25 seconds. Learned: on the same machine the two were close, about 10 tokens a second each. On my busy desktop one Colibri flag, --cap 128, made it 4.5 times faster. Wrote it up: Ollama or Colibri? A beginner’s comparison. Next: point a coding agent at Colibri and see whether it keeps up.