Rift vs opencode

July 21, 2026 · View on GitHub

A working comparison against opencode (v1.18.x, July 2026) covering its CLI, TUI, and desktop app. Kept honest in both directions: where rift is ahead, where it matches, what it deliberately doesn't do, and what's being closed.

Rift's founding goal — models run measurably faster inside this harness — is benchmarked in BENCHMARKS.md: on the latest 150-run suite, 57% fewer prompt tokens and 12.7× faster wall time at equal-or- better task success (150/150 vs 149/150).

At parity (or ahead)

areariftopencodenotes
Sessionsresume/continue, fork, rewind (files+conversation), undo, named saves, picker, autosaveresume/fork, snapshots+revert, undo/redorift's /rewind restores files and conversation
Context managementtwo-stage compaction, calibrated token estimator, hydrate-on-demand reads, explicit num_ctxauto-compaction (compaction.auto/prune)rift's is the benchmarked differentiator
Subagentsconcurrent agent tool, model roles, personas (.rift/agents/*.md), background taskstask tool, agent definitions, subagent depthcomparable; rift adds cross-model roles
Parallel explorationWarpDrive: worktree racing, judge, side-by-side merge TUInot shipped (worktrees not wired into desktop; community plugins)rift ahead
MCPstdio + remote HTTP, project/user config, trust flow, /mcpstdio + remote, OAuth, mcp CLIopencode adds OAuth; rift roadmap
Permissionsallow/ask/deny Tool(pattern) rules, approval mode, bash wrapper (WSL/Docker/firejail), deny floorallow/ask/deny per tool with patterns, doom-loop askcomparable
Custom commands / skillsplugin commands, skills (SKILL.md), /skill:<name>markdown commands, Agent Skills (Claude-compatible dirs)comparable
Pluginsplugin.json: commands, subprocess tools, hooksJS plugins (Bun), rich hook surfacedifferent philosophies: subprocess vs JS-in-process
Themes13 built-in + custom JSON~13 built-in + custom JSONparity
Images/attachments@photo.png, /paste, --attachattachments, resize configparity
Headless / scripting-p one-shot, --output-format json, --trace JSONLrun with formats, stdin, sessionsparity for CI use
ProvidersOllama native, OpenAI-compat, Anthropic native; provider/model routingmany via npm SDKs + Zen gatewayrift is local-first by design
Editor integrationVS Code extension (sidebar chat, inline per-hunk diff review, terminal)VS Code-family extension, JetBrains/Zed via ACPACP on roadmap
Updaterift update, startup check, winget/scoop/brewupgrade, autoupdate configparity

Gaps closed (this branch)

featureopencode hasrift now
Desktop appElectron app (migrated from Tauri), tabs-primary UI, sessions sidebar, diff review, onboardingTauri 2 app over the serve protocol — no Node runtime, one small binary; tabs, sessions sidebar, in-app per-hunk diff review (desktop/)
LSP diagnostics30+ auto-detected servers, diagnostics feed the agent✅ zero-dep LSP client (rust-analyzer, pyright, typescript-language-server, gopls, clangd auto-detected); post-edit diagnostics appended to tool results, token-capped
GitHub integrationGitHub App, /opencode comment triggers, PR reviewsrift github install writes a self-hosted Actions workflow: /rift comment triggers headless rift on your runner/model, pushes a branch, opens a PR — no hosted app needed (docs/GITHUB.md)
Sharecloud share links (opncd.ai)/share: self-contained HTML transcript export; optional GitHub gist upload via gh. No rift cloud service — local-first

Deliberate non-goals

  • Zen / Go (paid model gateways) — rift's premise is your own hardware and your own keys.
  • Cloud share service — sharing exports a file you own, not a hosted link.
  • Electron — the desktop app stays Tauri/Rust; WebView2/WebKit ship with the OS.
  • npm-based plugin runtime — rift plugins stay subprocess-based (any language, no Node dependency).

Known remaining gaps (roadmap candidates)

  • ACP (Agent Client Protocol) server mode for Zed/JetBrains/Neovim.
  • HTTP server + web UI (opencode web, mDNS, remote attach). The serve protocol is transport-agnostic; an HTTP/SSE bridge is a contained follow-up.
  • Built-in formatter registry (rift covers this today via post_edit hooks).
  • MCP OAuth flows; provider auth login OAuth.
  • stats/db CLI analogs (rift has /stats, /tokens, JSONL traces).