Skip to content

Beyond the Big Three: OpenCode, Pi, Copilot CLI, Cline, Goose and Other Coding Agents

Ten maintained coding agents outside Claude Code, Codex and Cursor are worth a look in September 2026: OpenCode, Pi, GitHub Copilot CLI, Cline, Kilo Code, Goose, Qwen Code, Crush, Amp and Factory Droid. Most read AGENTS.md, so one rules file, one multiplexer and one CI gate can run a mixed team once licences are cleared.

Your team standardised on Claude Code, but one engineer works mostly in OpenCode, the platform group already pays for GitHub Copilot, and a contractor sends pull requests written with Cline. Each agent reads a different instructions file, so the same repo gets four versions of “how we run tests”. The drift only shows up when a pull request ignores a rule nobody knew was missing. This page is for the developer choosing a second agent and the tech lead who has to keep a mixed team consistent.

What you get from this catalogue of other coding agents

Section titled “What you get from this catalogue of other coding agents”
  • A status table for ten live agents and four you should stop recommending, with dated popularity figures
  • A verified install line and one headless command for each agent
  • The licence facts that decide whether legal has to sign off (Copilot CLI is proprietary, Crush is source-available)
  • A mixed-agent workflow: one AGENTS.md, one herdr session, one CI gate, and a reviewer that is never the builder
  • Two copy-paste prompts: a read-only audit and a cross-agent review

Which coding agents are worth a look in September 2026?

Section titled “Which coding agents are worth a look in September 2026?”

GitHub stars below were read through the GitHub API on 2026-09-26 and recorded in the site’s agent-tools research dossier. Stars measure attention, not daily use; download counts are omitted because the npm and PyPI statistics hosts were unreachable.

AgentShapeLicenceStars (2026-09-26)StatusReach for it when…
OpenCode (anomalyco/opencode)Terminal agent, desktop appMIT210,085Aliveyou want an open-source terminal agent that works with any model provider
Pi (earendil-works/pi)Terminal agentMIT (npm licence field)109,402Aliveyou want a minimal, hackable terminal agent that herdr, Orca, Sculptor and CC Switch support
GitHub Copilot CLI (github/copilot-cli)Terminal agentProprietary GitHub licence11,211 (repository holds docs and issues only)Alive, frequent releasesyour org already pays for Copilot and wants existing Copilot policies to apply
Cline (cline/cline)VS Code and JetBrains extension, CLI, desktop, SDKApache-2.069,340Aliveyou want approvals in the IDE and the same config in CI
Kilo Code (Kilo-Org/kilocode)VS Code and JetBrains extension, kilo CLI (an OpenCode fork)MIT27,419Aliveyou want built-in Code, Plan, Ask and Debug agents and a marketplace
Goose (aaif-goose/goose)Desktop app, CLI, APIApache-2.0, Linux Foundation AAIF project54,661Aliveyou want a foundation-governed, vendor-neutral agent that also handles non-code tasks
Qwen Code (QwenLM/qwen-code)Terminal agent, desktop, web UI, IDE plugins, SDKsApache-2.028,137Aliveyou run Qwen models, hosted or local, in a Claude-Code-shaped harness
Crush (charmbracelet/crush)Terminal agentFSL-1.1-MIT (source-available)28,307Aliveyou want an LSP-aware terminal agent with mid-session model switching
Amp (@ampcode/cli)Terminal agent with subagents and an “Oracle”Proprietary vendor productno public metricAliveyou want a second-opinion reasoning model built into the loop
Factory Droid (@factory/cli)Terminal agent with a headless droid execProprietary vendor product (npm licence field UNLICENSED)no public metricAliveyou want a vendor multi-agent “mission” mode in CI

Four names still appear in older articles and should not be recommended to a team today:

AgentWhat happenedEvidence
Roo CodeShut down on 15 May 2026 and archived; its README points to Cline and the ZooCode forkRooCodeInc/Roo-Code README, GitHub API archived: true
Continue (cn CLI)README: “no longer actively maintained and is read-only for all users”; last npm release 2026-06-18. GitHub still shows it as not archived, with 36,030 starscontinuedev/continue README, npm
AiderSlowing: last push 2026-05-22, last PyPI release (aider-chat 0.86.2) 2026-02-12, README still recommends models from early 2025. Usable, not a defaultGitHub API, PyPI
Gemini CLI on a personal Google accountSince 2026-06-18, Gemini CLI no longer serves free, Google AI Pro or Ultra users; those tiers moved to the closed-source Antigravity CLI (agy). Gemini CLI itself is alive (npm @google/gemini-cli 0.61.0) for Gemini Code Assist Standard or Enterprise, Google Cloud and paid API keysgoogle-gemini/gemini-cli Discussion #27274 (2026-05-19); npm

Every install line below was read from the project’s README or docs on 2026-09-26 (Droid: from search results, see its tab); versions come from npm view the same day. Pick one install route per machine, not all of them.

Terminal window
curl -fsSL https://opencode.ai/install | bash
# or
npm i -g opencode-ai@latest # 1.18.32
brew install anomalyco/tap/opencode

Tab switches between the build agent (full access) and the read-only plan agent; @general calls the general subagent. Headless: opencode run "Explain how the auth middleware works". The original Go project opencode-ai/opencode is archived; the live one is anomalyco/opencode. See OpenCode compared with the big three.

Try one agent on a real task without letting it write

Section titled “Try one agent on a real task without letting it write”

The fastest honest evaluation is a read-only audit of a package you know well: you can judge the findings without reading a diff, because you already know where its real defects are. Cline’s CLI makes this a one-liner.

Terminal window
cd packages/billing
cline --auto-approve false "Audit this package and propose fixes"

Without --auto-approve false, the one-shot turn approves every tool call. For a stricter start, cline --plan --auto-approve false "…" opens the run in plan mode (Cline CLI README, 3.0.65). --auto-approve false makes the CLI prompt you in the terminal before each tool call: approve the reads, decline any edit or command that writes. Expect a list of findings with file references and suggested changes. Score it against what you already know: which real problems did it find, which did it miss, and which findings are false.

Run the same prompt in your current agent and compare. The same pattern works headless in each tool: opencode run "…", qwen -p "…", goose run -t "…", amp -x "…", or copilot -p "…" without --allow-all-tools.

How do you run a mixed-agent team under one rules source and one multiplexer?

Section titled “How do you run a mixed-agent team under one rules source and one multiplexer?”

The failure you are preventing is drift: five instruction files that each say something slightly different about how to test, which directories are off limits, and what “done” means. The fix is one source of truth that every agent reads, one place where you watch all of them, and one gate that treats their output identically.

  1. Write one AGENTS.md at the repository root. Put build, test and lint commands, the directories agents must not touch, and your definition of done in it. Keep it short: every agent loads it at the start of every session, so every line costs context in every run.

    AGENTS.md
    ## Commands
    - Install: pnpm install --frozen-lockfile
    - Test: pnpm test (must pass before you say you are done)
    - Types: pnpm typecheck
    ## Boundaries
    - Never edit migrations/ or .github/workflows/
    - Never add a dependency without saying why in the PR description
    ## Done means
    - Tests and typecheck pass, and the PR description lists the commands you ran
  2. Point every agent at it, and delete the duplicates. OpenCode, Kilo Code, Cline, Goose, Qwen Code and Crush read AGENTS.md (checked in each project’s docs on 2026-09-26; for Kilo, its AGENTS.md docs page), and the Copilot CLI changelog documents @-import expansion in AGENTS.md. For Amp and Droid, confirm which file they read in the vendor’s docs; neither vendor site was reachable from the research environment. The big three differ:

    Claude Code reads CLAUDE.md. From v2.1.277 (the latest channel on 2026-09-26), it falls back to AGENTS.md only when the project has no CLAUDE.md. Bedrock, Google Cloud, Foundry, gateway and telemetry-off sessions get that fallback from v2.1.281, and you can toggle it under “Project instructions” in /config. A repo with both files gets only CLAUDE.md. The version-proof setup is a CLAUDE.md whose first line imports the shared file:

    @AGENTS.md
    <!-- Claude-Code-only notes go below this line, and nothing else. -->
  3. Put the whole team in one multiplexer. herdr’s --kind accepts claude, codex, cursor, pi, opencode, copilot, cline, kilo, qwen, amp and droid among its 24 values (docs for herdr 0.9.1); Goose and Crush run as plain panes. From inside a running herdr session:

    Terminal window
    split=$(herdr pane split --current --direction right --no-focus)
    pane=$(printf '%s\n' "$split" | jq -r '.result.pane.pane_id')
    herdr agent start reviewer --kind codex --pane "$pane"
    herdr agent prompt reviewer "Review the current diff against AGENTS.md" --wait --timeout 120000
    herdr agent read reviewer --source recent-unwrapped --lines 120

    The sidebar marks each pane working, blocked or idle, whichever vendor runs in it. The herdr guide covers the full orchestrator script.

  4. Gate every agent’s output the same way. Add one job that fails the pull request when a second instructions file reappears, next to your usual tests, types and lint:

    Terminal window
    # ci/check-agent-rules.sh — one rules source, no shadow copies
    set -euo pipefail
    [ -f CLAUDE.md ] || { echo "CLAUDE.md missing: create it with @AGENTS.md as line 1"; exit 1; }
    head -n 1 CLAUDE.md | grep -qx '@AGENTS.md' || { echo "CLAUDE.md must start with @AGENTS.md"; exit 1; }
    for f in QWEN.md CRUSH.md .goosehints .clinerules .cursorrules .windsurfrules; do
    if [ -e "$f" ]; then echo "$f duplicates AGENTS.md; move its rules there"; exit 1; fi
    done

    If you chose rulesync in step 2, replace the whole script with npx rulesync@20.0.0 generate --targets claudecode,codexcli,cursor --features rules && git diff --exit-code. That drift check is this site’s suggestion, not a documented rulesync feature.

  5. Never let the builder review its own work. Route each branch to a reviewer from a different vendor: a Claude Code branch goes to Codex, a Cline or OpenCode branch goes to Claude Code. A different model does not share the builder’s blind spots. Run the reviewer read-only and let it judge the test and typecheck results CI already produced: plan mode and a read-only sandbox are not meant to run your test suite, and a reviewer that cannot write cannot “fix” a test to make it pass.

    Terminal window
    # Codex reviews a branch another agent built, without write access
    codex exec -s read-only "Review the diff between origin/main and HEAD against AGENTS.md. List blocking issues first."
    # Claude Code as the reviewer, in plan mode (no edits)
    git diff origin/main...HEAD | claude -p --permission-mode plan "Review the diff between origin/main and HEAD against AGENTS.md. List blocking issues first."

How do you prove a second agent is good enough for your repo?

Section titled “How do you prove a second agent is good enough for your repo?”

Stars and vendor-reported benchmarks, such as the SWE-bench table in Qwen Code’s README, do not show how an agent behaves on your codebase. Run a small bake-off and let the gate decide, not your impression of the transcript.

  1. Pick five closed tickets with merged fixes and tests. Revert the fix on a branch per ticket, keeping the tests.
  2. Give each agent the same ticket text and the same AGENTS.md, one worktree per agent per ticket.
  3. Score only what a machine can check: did the original tests pass, did typecheck and lint pass, did the cross-agent reviewer flag a blocking issue, and how many files changed beyond the ones the real fix touched.
  4. Record the cost each agent reports, or use a usage tracker (see tracking agent cost).
  5. Decide with the tech lead. A new agent joins the team’s approved list only if it matches the incumbent on passes and stays inside the boundaries. The tech lead signs off, and the result goes in the repo’s docs/ so the next evaluation starts from data.

Licences to clear before an agent joins the team

Section titled “Licences to clear before an agent joins the team”
AgentWhat the licence means for you
Copilot CLIProprietary GitHub licence that allows redistributing unmodified copies only. The public repository holds the README, changelog and issues, not the source. Usage runs under your Copilot plan and org policies
CrushFSL-1.1-MIT: source-available today, converts to MIT later. Not OSI open source, so check whether your policy accepts it
Amp, Factory DroidProprietary vendor products with no public source: review data handling and terms like any SaaS
Antigravity CLIClosed-source, Google-operated; quota comes with Google AI plans (secondary: CloudZero, checked 2026-09-26)
OpenCode, Kilo CodeMIT
Cline, Goose, Qwen CodeApache-2.0

Licence is not the only question. Every agent that talks to a hosted model sends your code to that provider, so the provider you configure matters as much as the agent. For local models, see gateways and local models.

Two agents follow two different rules. Someone ran /init in Qwen Code, or used a Crush setup with option initialize-as CRUSH.md in its config (Crush README), and a new QWEN.md or CRUSH.md appeared with its own test command. Recovery: merge its content into AGENTS.md, delete the copy, and let the CI check from step 4 stop it from coming back.

Claude Code ignores AGENTS.md. The repo has both files, or developers run the stable channel (v2.1.274 on 2026-09-26), which predates the fallback. Recovery: make @AGENTS.md the first line of CLAUDE.md, which works on every channel.

A tutorial installs the wrong package. opencode-ai/opencode is archived, @sourcegraph/amp is the old Amp name (now @ampcode/cli), block/goose moved to aaif-goose/goose, and npm i -g aider-chat does not exist because Aider is Python (python -m pip install aider-install && aider-install). Recovery: use this page’s install commands, read from each README or docs page on 2026-09-26.

The team adopted a dead project. Roo Code is archived and Continue is read-only, yet both still rank high on stars. Recovery: before adding an agent, check its last push date and README status, not its stars. Move Roo Code users to Cline or Kilo Code, which cover the same VS Code niche.

A personal Gemini CLI setup stopped working in June. That is the 2026-06-18 cut-off, not a bug. Recovery: personal accounts move to Antigravity CLI; teams on Code Assist Standard or Enterprise, Google Cloud or a paid API key can stay on Gemini CLI.

A skip-approvals run changed something it should not have. Recovery: restore from the branch, rerun inside a disposable sandbox, and add the violated path to the Boundaries section of AGENTS.md so the next agent reads it too.

The multiplexer says idle while an agent waits for you. herdr reads Claude Code, Codex and Cursor from the screen, not lifecycle hooks (herdr 0.9.1 docs), and only marks blocked on prompt shapes it knows. Recovery: use herdr agent wait … --until blocked --timeout … in scripts and treat long silences as suspicious.