BlogLaunch

Tandemu v0.4: Two Supported Editors, and Review Latency You Can Actually Measure

Tandemu
v0.4 Release

OpenCode joins Claude Code as a fully supported editor, and three new review-latency metrics split AI-authored PRs from human-authored ones.

Two patterns showed up in conversations this month. Developers kept asking when Tandemu would work in OpenCode — they liked the speed, or just preferred a different UI, but didn’t want to give up the /morning/finish lifecycle to switch editors. And engineering managers kept asking the same question in different shapes: “Are AI PRs actually shipping faster, or does it just feel that way?” We had session-level telemetry, but nothing that put AI and human PRs on the same chart.

v0.4 covers both.

OpenCode support

Tandemu still runs in Claude Code, exactly like before. v0.4 adds OpenCode as a second supported editor with the same skills, the same telemetry pipeline, and the same persistent memory. Six commands ported over: /morning, /finish, /pause, /standup, /create, and /setup. Skills live in a single source of truth now, so anything that ships reaches both editors in the same release.

The plugin is published as @sebastiangrebe/opencode-plugin on npm. The simplest way in is the installer:

./install.sh --target=opencode

It writes auth, registers the plugin in ~/.config/opencode/opencode.json, and copies skills and the personality file into place. If you’d rather wire it up by hand, the minimum config is one line:

{ "plugin": ["@sebastiangrebe/opencode-plugin"] }

Telemetry is honest about which editor it came from. OpenCode emits opencode.cost.usage, opencode.token.usage, and opencode.lines_of_code.count; Claude Code keeps emitting its claude_code.* equivalents. Both flow into the same dashboards, so a team that mixes editors gets one combined picture without anyone pretending to be the other.

Full setup walk-through: Connecting OpenCode.

Review latency, AI vs human

Three new metrics live in the dashboard, each split AI-authored vs human-authored:

  • Time to First Review — how long a PR sits open before someone leaves the first comment or approval.
  • Time to Merge — total wall-clock from PR open to merge.
  • Reviewer Load — how many open PRs each reviewer is currently sitting on.

The split is the point. If your team is shipping more code with AI, the next question is whether that code is actually moving through review, or whether it’s piling up in the queue waiting for a human to read it. Tandemu now answers that with one chart, two lines. If AI PRs are faster, you’ll see it. If they’re slower because reviewers don’t trust them yet, you’ll see that too.

The metrics surface in a new Review tier on the DORA card, alongside the existing Delivery and Reliability tiers. The data comes from a new GitHub PR review table that backfills on the next 4-hour GitHub sync — no schema migration, no manual setup. If your GitHub integration is connected, you’ll see numbers within a few hours.

Dashboard polish

The dashboard navigation got a refresh. There’s a sidebar across all nine pages now, with breadcrumbs that reflect where you actually are instead of just the section. The DORA card was split into Delivery and Reliability tiers, which makes the dense ones (lead time, change failure rate) easier to scan side by side. The weekly merged-PR chart is a single trend line instead of a busier visualization — easier to read at a glance, less to ignore.

Plumbing that mattered

A few fixes worth calling out:

  • Today’s data finally shows up. A date-filter bug was silently excluding the current day from 18 backend queries. If you ever opened the dashboard mid-morning and wondered why your activity wasn’t there yet, that’s why. Fixed.
  • install.sh learned about both editors. It now takes --target=claude|opencode|both, accepts the more common --flag=value form, and tracks a per-editor version stamp. ./install.sh --check reports the installed version for each editor you have set up.
  • Plugin updates actually update. Claude Code’s /plugin update checks the version field on the manifest, and that field is bumped on every release now. Run /plugin update tandemu@tandemu and the new version arrives.
  • Skill commands stopped losing their environment. Each skill’s bash blocks now re-source the Tandemu env loader at the top instead of assuming variables persist between calls. If you ever saw URL rejected: No host part in the URL mid-/morning, that’s gone.

How to update

In Claude Code:

/plugin marketplace update /plugin update tandemu@tandemu

In OpenCode:

bun update @sebastiangrebe/opencode-plugin

Or just re-run ./install.sh — it auto-detects which editors you have and updates each.

Self-hosted:

docker compose pull docker compose up -d

What’s next

The review-latency data is fresh, and we’re already eyeing finer cuts: per-reviewer trends, per-team breakdowns, and queue-aging alerts when a PR has been sitting too long. On the editor side, expect tighter OpenCode-specific views as more teams switch over and the data tells us what’s worth surfacing.


Links: GitHub | OpenCode setup | Changelog