Pieter Levels Paid $19 for Kimi K3. It Cleared the To-Do List Claude Would Not Touch.
He moved a browser-based Windows XP project from Claude Code to OpenCode and Kimi K3 after two weeks of safety blocks. The useful lesson is in the routing.
Reviewed by Agnel Nieves
Read in Am Puck's voice, synthesized.AI voice

Pieter Levels wanted to install Yahoo! Messenger from 2003 inside a Windows XP desktop running in the browser. Claude Code kept treating the emulator like a cybersecurity problem.
He spent two weeks bouncing between model fallbacks and safety blocks. Then he opened X and asked how to run Kimi K3 through a coding agent. The answer changed his afternoon.
Levels installed OpenCode, connected it directly to Kimi, paid $19 for a membership, switched the agent into Build mode, and let it work through the simulator's to-do list. His report after the switch was short: K3 was "absolutely hammering through" the work.
This is a good founder case study because the task stayed recognizable. A browser emulator was stuck. The founder changed the stack. Work resumed.
It is also a messy model comparison, which is where the useful part begins.
The project K3 walked into
The Windows XP simulator sits at pieter.com. It is the kind of project Levels keeps returning to: old software, browser emulation, a long list of rough edges, and no client waiting for a compliance memo.
He had already been using Claude Code heavily. In June, he wrote that he had coded almost entirely on a virtual private server with Claude Code for nearly a year. The switch did not come from a tourist opening two chat tabs and asking for a snake game. It came from a paying power user who had run into the same refusal pattern for days.
Levels described the immediate problem in public:
"Claude Code couldn't do this for 2 weeks."
His complaint centered on safety fallbacks. The model treated requests around the Windows XP environment as risky even though Levels was working on a hobby project he controlled.
The task context changes how I read the refusal. A guardrail can be reasonable in one environment and maddening in another. Levels was not asking an agent to probe a bank. He was trying to make Yahoo! Messenger work in a browser toy.
He changed four variables, not one
The viral version of this story is Kimi K3 beat Claude. The public record supports a narrower finding.
| Layer | Before | After |
|---|---|---|
| Model | Claude models, with reported safety fallbacks | Kimi K3 |
| Harness | Claude Code | OpenCode |
| Provider path | Anthropic through Claude Code | Direct Kimi connection after an OpenRouter rate limit |
| Permissions | Claude's policy and tool gates | OpenCode Build mode with permission bypass enabled |
| Task | Windows XP simulator to-do list | The same project and backlog |
K3 deserves credit for completing work that had stalled. Levels also removed several sources of friction around the model.
He published the setup on July 17. Install OpenCode. Create a Kimi account. Pay $19. Get an API key. Connect Kimi Code inside OpenCode. Switch to Build mode. His instructions also recommend bypassing permissions, which he already did in Claude Code.
That final setting makes the run faster and less comparable. A model with broad shell access can finish jobs that a more constrained agent pauses to confirm. It can also damage more when it guesses wrong.
Levels made a rational trade for a hobby emulator. I would not copy that trade onto a production database.
Why K3 fit this job
Moonshot AI released Kimi K3 on July 16, one day before Levels published his switch. The model has 2.8 trillion total parameters in a mixture-of-experts architecture, with 104 billion activated for each token. It accepts a one-million-token context and handles text, images, and video.
The specifications matter less here than the training target. Moonshot built K3 for long coding sessions, large repositories, terminal tools, and visual feedback loops. A browser operating-system simulator touches all four.
Moonshot's own technical post says an early K3 build handled most of the team's kernel-optimization work late in development. The company also reports a 48-hour autonomous chip-design run and a compiler project built from scratch. Those are vendor case studies, so I treat the measurements as claims until independent teams reproduce them. They still show what Moonshot tuned the model to attempt.
Levels supplied an outside example with a public project and a named workflow. On the same day, he also published a macOS 27 browser interface created with K3. That does not prove the model wins every frontend task. It does show the visual coding loop was more than a benchmark row.
The cost moved from abstract to $19
Levels first tried OpenRouter and hit an upstream rate limit. He then went straight to Kimi, bought the $19 membership, and used the provider's API key with OpenCode.
Moonshot prices the K3 API separately at $0.30 per million cache-hit input tokens, $3 per million cache-miss input tokens, and $15 per million output tokens. The company says coding workloads on its official API exceed a 90 percent cache-hit rate.
That is vendor-reported cache performance. Your bill depends on the harness, prompt reuse, context size, and how often the agent rewrites its own plan. K3 always thinks, and long autonomous runs can burn output tokens quickly.
The relevant founder number remains $19. That was cheap enough for Levels to stop arguing with his old setup and try a new route.
Where the case study gets uncomfortable
K3 has its own failure modes. Moonshot lists three in the release notes.
First, the model expects preserved thinking history. A harness that drops earlier reasoning, or a mid-session model swap, can make quality unstable. Moonshot recommends starting K3 in a compatible harness instead of dropping it into a conversation another model began.
Second, the model can act too aggressively. Moonshot says K3 may make unexpected decisions when intent is ambiguous. The company recommends explicit constraints in the system prompt or AGENTS.md.
Third, Moonshot concedes that the overall user experience still trails the strongest proprietary models. A public Kimi Code issue filed after launch also reports the terminal interface hanging during a trivial prompt at maximum effort. The failure surface changed with the model.
Levels solved one kind of agent friction by choosing a model trained to keep going and a harness configured to let it. The same combination can turn a vague instruction into a long, expensive mistake.
What I would copy from the switch
I would copy the routing decision and leave the permission bypass behind.
When a coding agent refuses a legitimate task twice, write down the task, the exact refusal, the branch state, and the acceptance test. Start a fresh session in a second harness with a second model. Give it the same repository and the same test. Compare the completed diff, elapsed time, tool calls, and regressions.
Do not continue the old conversation after the switch. K3's own documentation warns against that path.
Keep the second agent inside a disposable branch and a scoped environment. Levels can rebuild a browser simulator when an agent gets inventive. Your billing system is less funny.
The founder lesson
Levels did not wait for a benchmark committee. He had a blocked task, spent $19, and changed the route.
The result is strong evidence that Kimi K3 belongs in the coding-agent rotation for long, visual, tool-heavy work. It is weak evidence that K3 is categorically better than Claude because the harness, provider, and permissions changed with the model.
The evidence is enough for a useful operator story: a stuck job, a visible change, and a result someone else can test.
Run K3 on a fresh branch. Keep the acceptance test fixed. Keep the permissions narrower than Pieter Levels did.
Sources
- Pieter Levels, Kimi K3 works through the Windows XP simulator backlog
- Pieter Levels, How to code with Kimi K3
- Pieter Levels, macOS 27 in the browser created by Kimi K3
- Moonshot AI, Kimi K3 technical release
- Moonshot AI, Kimi K3 model repository
- Kimi Code issue 1911, terminal sessions can hang at maximum effort
- Related Promptway: Pieter Levels built a flight simulator in three hours, then watched the revenue disappear
Read next

Prompt Lab · 4 min read
Structured Output That Survives a Model Swap: The JSON Scaffold I Actually Ship
Multi-model routing is normal now. Here is the schema-first prompt pattern that keeps objects valid when you change the brain underneath.