Terminal coding agents: opencode vs Codex vs Gemini CLI vs crush vs goose

The most-asked pick in this list: "I want a turnkey coding agent in my terminal today." These five are the open(ish)-source field. The closed first-party products (Claude Code, Cursor's agent) aren't list entries, but they define the workflow all five implement: a tool-call loop with file edit, shell, and search tools, wrapped in a terminal UI.

What actually differs between them is the harness — the agent loop, provider wiring, sandboxing, and extension model — not the chat-in-a-terminal experience, which has converged.

opencode Gemini CLI Codex goose crush
⭐ Stars 177k 105k 92.4k 50k 25.5k
Steward anomaly (community) Google (first-party) OpenAI (first-party) Linux Foundation AAIF Charm
License open source open source open source open source ⚠️ FSL-1.1-MIT
Core language TypeScript TypeScript Rust Rust Go
Model lock-in None — Claude, OpenAI, Gemini, local Gemini-first OpenAI-first, multi-provider supported None — provider choice by design None — multi-provider
Autonomy (list axis) headless bounded bounded headless bounded
Recovery (list axis) resumable resumable resumable resumable resumable
Distinctive harness bet Plugins + MCP, client/server split First-party Gemini integration, MCP Sandboxed execution as the default posture MCP/ACP extensions, recipes, no fixed UI Session persistence, TUI polish

Stars as captured for the main list (see README for the capture date).

Pick by situation

What they share

All five: tool-call loop over file/shell/search tools, MCP support (native or via plugins), permission prompts before destructive actions, and a config file for custom instructions. Switching costs between them are low by design — your AGENTS.md/instructions files port almost unchanged, so trying two is cheap.


Part of best-of-Agent-Harnesses. Spot an error or a stale claim? Open an issue.