Skip to content
Episode 9 5:51

Can OpenCode 2.0 + Beam Replace Claude Code?

What OpenCode 2.0 and Reflection's Beam bring, how to set them up via OpenRouter, and both stacks solving the same Rails ticket side by side: speed, cost, quality, maturity and privacy.

Shownotes

After this episode the viewer knows what OpenCode 2.0 and Reflection's Beam bring, can set up OpenCode with Beam via OpenRouter, and has seen both stacks solve the same Rails ticket side by side -- speed, cost, quality, maturity, privacy.

Prerequisites: demo-shop on episode-008-before, OpenCode 2.x, OpenRouter account, Claude Code

Not covered: self-hosting Beam, other open models, CI, more than one ticket

Source: github.com/webmatze/demo-shop (branches episode-008-before / episode-009-after)

Chapters

  • 0:00 The problem
  • 0:25 The solution at a glance
  • 1:13 What the community says
  • 1:34 Setup
  • 2:08 Building it
  • 4:05 Round 1 vs round 2
  • 4:39 Trust check
  • 5:07 Verdict
  • 5:39 Wrap-up
Transcript

The problem

Two releases just took aim at my setup. OpenCode 2.0, an open source coding agent rebuilt from the ground up. And Beam, an open model in frontier size, under Apache 2.0. I'm giving both a real ticket. Can a fully open stack replace my paid Claude setup? Let's find out.

The solution at a glance

OpenCode 2.0 is a major overhaul. The terminal, the desktop app and the web UI now share one background service. One session, three ways to look at it. Subagents and shell commands can run in the background, and there's a new SDK on top. One catch: plugins written for version one don't work anymore. Beam comes from Reflection AI. It's a mixture of experts with five hundred and one billion parameters, twenty three billion of them active per token, and a context window of one million tokens. The license is Apache 2.0. There are no independent benchmarks yet. So what you see in this episode is a first look, not a verdict from the crowd.

What the community says

On Hacker News, the release got eight hundred and eighty-eight points and almost four hundred comments. Not all of it is applause. One comment sums up the doubt: why do these tools suddenly want a permanent daemon on my machine? Keep that question in mind. We come back to trust at the end.

Setup

We start with the install. Coming from version one, a single upgrade command with the major flag brings in version two and removes the old one. Then we check: version two point one point four. For Beam we go through OpenRouter. The key comes from the environment, so it never shows up on screen. The model sits in opencode dot json. And the model list confirms it: Beam through OpenRouter, plus a variant called beam free on OpenCode's own service.

Building it

Here is the ticket, the same one as in episode eight. This is an order in our shop, and there is no way to enter a coupon yet. The brief says a customer redeems a code on an order, and a code works once. It says nothing about two redemptions at the same moment. That's on purpose. Both agents get the same prompt, word for word, and their own fresh copy of this shop. Round one: OpenCode two with Beam, through OpenRouter. Each round runs in its own container, with nothing from my Mac but one key. We paste the prompt and keep our hands off. Beam reads the git history, then writes a migration with a unique index on the code. It starts the test writer as a subagent, but in the foreground, so the main agent sits and waits. After two minutes fifty-seven, it reports thirty-three green tests and commits. We run the suite ourselves: green. Seventeen cents. Meanwhile, the web UI shows the very same session. Same prompt, same running cost as the terminal, served by the same background service. It even offers to move the subagent to the background. Beam doesn't take that option on its own. Round two: Claude Code with Opus five point five, my everyday settings, same container setup, same prompt. It pins down the interface first. Then it starts the test writer in the background and builds the migration, model and controller at the same time. The tests catch a rounding bug, and it fixes it. It reverts a schema file it touched by accident and commits each part on its own. One minute fifty-five. We run the suite ourselves: fifty tests, green. The cost screen says ninety-four cents at list price, covered by my subscription.

Round 1 vs round 2

Side by side. Claude Code is a minute faster. The open stack costs less than a fifth of Claude's list price. Neither needed a single correction from me. Claude wrote fifty tests, Beam thirty-three, and only Claude really ran its subagent in parallel. Then the trap: two redemptions of the same code at the same moment. Beam's version lets both through, two hundred times out of two hundred. Claude's version never does, because a unique index in the database rejects the second one.

Trust check

Now trust. Right after the two point oh release, a change loaded the configuration that admins manage with the lowest priority, so a project's own config could override company rules. It was fixed a day later. And a provider you log in to can publish its own configuration for OpenCode, including a login command. That's why I run every agent with full permissions in its own container, with one key and nothing else from my Mac.

Verdict

So, do I cancel my subscription? Not yet. Claude Code was faster, and it got the one rule that matters right. The open stack was more than five times cheaper and only a minute slower, and OpenCode two ran without a hiccup. But it shipped exactly the bug I set the trap for. And my code went to OpenRouter and whoever hosts Beam behind it. That's one ticket, a first look. For cheap, low-risk work, I'll keep trying the open stack, and read every diff.

Wrap-up

Open no longer means worse by default. But it doesn't mean good enough for everything yet. Which ticket should I give the open stack next? Tell me in the comments.