* fix(verify-pr): keep the mutation matrix off the tree live cells measure on A local round interleaved its mutation matrix with 80 live daemon cells on one tree. A build inside a mutation row propagated the mutant into dist/, and the hand-patched repair still carried the mutant expression, so every live cell and the whole matrix were withdrawn and the round shipped as inconclusive. Require a dedicated tree for the mutation matrix, gate every daemon or dist-level harness launch on a scripted dist-versus-source anchor check with a mismatch-reporting control, and forbid hand-patching dist to repair a contaminated build. Pin the new rule in the workflow meta-test. * test(verify-pr): pin the launch gate's coverage and control clauses Review on0d06209b2dshowed the four rig-isolation pins left two clauses of the launch gate unasserted: deleting "covers every PR anchor" or the mismatch-reporting control still passed 4/4. Pin both so a future edit cannot silently weaken the gate. Also name the clean-dist launch gate in the mutation-runner pointer, so the section that proves a mutant reached dist and the rule that proves the measurement tree's dist is clean cross-reference each other. * fix(verify-pr): define the launch gate's reference side and isolate per-tree artifacts Review on21014c30d6(R1-1/R1-2/R1-3, RC1-RC5): the gate compared dist against an unnamed source, so a self-consistent mutant build passed it; "PR anchor" was undefined and collided with the mutation-anchor sense; the control proved liveness, not refusal; the gate had no carve-out for the producing row's own run; and tree isolation stopped at the checkout while the workspace links, the shared sandbox tag, and the single Maven repository stayed host-global. Name the reference side as a sha256 manifest of each measurement arm's clean dist recorded before the matrix starts, retire the undefined anchor term, require the gate to refuse a known-mutant build, exempt the producing row's own launches, and extend isolation to node_modules, the sandbox image tag, and the Maven repository. Replace the fragment pins with the whole bullet pinned inside its section plus the whole pointer line; a 17-row mutation acceptance goes red on every row, and a real-file M8 run turned the suite red before a byte-identical restore. * fix(verify-pr): qualify the matrix-tree copies and name both sandbox levers Review onff867ec035: the cp -al recipe dropped the per-package qualifier the install strategy already requires (root marked 17.0.1 vs packages/core marked 15.0.12 shadow for real), hardlinks share inodes so a writing row truncates the round's copy, the sandbox clause named only the launch-side variable while the build reads QWEN_SANDBOX_IMAGE_TAG and --sandbox-image outranks the export, and the pin's section slice failed open when the closing heading was renamed. Carry the qualifier and the never-symlink rule, require real copies from the store for rows that write under node_modules, name the build lever and the flag precedence, and assert the slice bounds. The acceptance matrix grows to 26 rows, all red on mutation including both heading renames; a real-file rename run turned the suite red before a byte-identical restore. * fix(verify-pr): scope the sandbox image per launch and bound the pin slice by the next heading Review onb99f52a5e3: <tree> sat where a Docker tag must go and the export's value was never spelled out; a shell-wide export leaks the matrix image into every later cell; the two cp -al copies disagreed on when hardlinks are safe (the base build's postinstall step writes under node_modules); the slice bound was a named heading, so an inserted section could shelter a moved bullet; and the prose named a build variable no test pinned at its read site. Spell a sanitized label and the full image reference, inject the variable per launch instead of exporting it, carry the write caveat in both copies with an explicit copy import method (pnpm's auto falls back to hardlinks without clones), bound the slice on the next heading, and pin process.env.QWEN_SANDBOX_IMAGE_TAG in build_sandbox.js. The acceptance matrix grows to 30 rows, all red on mutation; real-file heading-insertion and variable-rename runs each turned the suite red before byte-identical restores. Merged main (#15988, #16002); the suite now runs 197 tests, all green.
The open-source AI coding agent for your terminal, editor, desktop, browser, and chat.
中文 | Deutsch | français | 日本語 | Русский | Português (Brasil) | 한국어
Why Qwen Code?
- Agentic out of the box — Auto-Memory, Auto-Skills, SubAgents, Agent Teams, and MCP. Dynamic workflows, zero setup.
- Open-source, inside and out — The framework and the Qwen models are open-source. They evolve together. No vendor lock-in.
- Multi-protocol — Supports OpenAI, Anthropic, Gemini, and Qwen APIs. Any third-party provider or local model (Ollama / vLLM). Switch at runtime.
- Beyond the terminal — IDE plugins, Desktop app, Web UI, SDKs, and chat integrations (Telegram / DingTalk / WeChat / Feishu).
Tip
Qwen Code is actively iterating on itself — using its own agent and models to file issues, submit PRs, review code, and run tests. Powered by the community, driven by AI.
Installation
Linux / macOS:
curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.sh | bash
Windows:
irm https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.ps1 | iex
Restart your terminal after installation to ensure environment variables take effect.
NPM / Homebrew
NPM (requires Node.js 22+):
npm install -g @qwen-code/qwen-code@latest
Homebrew (macOS / Linux):
brew install qwen-code
Quick Start
Open a terminal in your project and start Qwen Code:
cd /path/to/your-project
qwen
Inside the session, run /auth to configure your provider and API key. Then try:
Explain this repository and show me where to start.
See the Authentication Guide and Settings Reference for detailed setup.
How to Use Qwen Code
Choose the interface that fits your workflow:
| Interface | Get started |
|---|---|
| Terminal | Run qwen in your project — see Quick Start. |
| Desktop | Download Qwen Code Desktop for macOS, Windows, and Linux. |
| Web | Run qwen serve --open to open the Web UI in your browser. (experimental) |
| Editor | Set up VS Code, Zed, or JetBrains. |
| Chat | Connect Telegram, DingTalk, WeChat, or Feishu, then run qwen channel start. |
For automation and custom integrations:
- Headless — Run
qwen -p "..."in scripts, CI/CD, or batch jobs. - SDKs — Build with TypeScript, Python, or Java.
- Daemon — Run
qwen serveto connect clients over HTTP + SSE (ACP). (experimental) Daemon guide. - Computer Use — Set up native MCP tools or Node REPL + SDK in Qwen Code, Claude Code, or Codex.
SDK example (Python)
import asyncio
from qwen_code_sdk import is_sdk_result_message, query
async def main() -> None:
result = query(
"Summarize the repository layout.",
{
"cwd": "/path/to/project",
"path_to_qwen_executable": "qwen",
},
)
async for message in result:
if is_sdk_result_message(message):
print(message["result"])
asyncio.run(main())
Capabilities
If you know Claude Code, you already know Qwen Code — and then some. We've put significant effort into bringing Qwen Code to feature parity with Claude Code, improving both breadth and reliability across the board.
| Feature | Qwen Code | Claude Code |
|---|---|---|
| SubAgents, Agent Teams, Dynamic Workflows | ✓ | ✓ |
| Auto-Memory, Auto-Skills, Hooks | ✓ | ✓ |
| Built-in Skills (/review, /batch, /loop, /bugfix…) | ✓ | ✓ |
| MCP, Plan Mode, LSP Integration | ✓ | ✓ |
| Auto Mode, Sandbox, Git Worktrees | ✓ | ✓ |
| Computer Use (desktop automation) | ✓ | ✓ |
| IDE Plugins (VS Code / JetBrains / Zed) | ✓ | ✓ |
| SDK | ✓ | ✓ |
| Headless Mode, Session Management | ✓ | ✓ |
| Open-source — model and framework | ✓ | — |
| Multi-protocol (OpenAI / Anthropic / Gemini / Qwen + any provider) | ✓ | — |
| Agent Arena (multi-model head-to-head on same task) | ✓ | — |
Daemon Mode — qwen serve (multi-client shared agent) |
✓ | — |
| IM Channels (Telegram / DingTalk / WeChat / Feishu) | ✓ | — |
Qwen Code Evaluation
On SWE-bench Verified, seven Qwen Code versions scored 76.40%–77.80% on average using the same Qwen 3.7 Max model (500 tasks, three trials per version).
Full results and evaluation configuration →
Ecosystem
-
Qwen Code Desktop — Official desktop app for macOS, Windows, and Linux
-
AionUi — A modern GUI for command-line AI tools including Qwen Code
-
Gemini CLI Desktop — A cross-platform desktop/web/mobile UI for Qwen Code
-
qwen-audio-agent — Realtime full-duplex voice frontend for Qwen Code over ACP — talk hands-free with barge-in and a local wake word
-
🦞 Qwen Code Claw — Let other agents (Claude, Codex, etc.) delegate coding tasks to Qwen Code via ACP. Paste this prompt into your agent:
Use Qwen Code as a coding agent. First, fetch and read this skill reference:
https://raw.githubusercontent.com/QwenLM/qwen-code/refs/heads/main/.qwen/skills/qwen-code-claw/SKILL.md
Then follow the instructions inside to install, authenticate, and use Qwen Code via acpx for all coding tasks.
- Aliyun Model Studio CLI — Official CLI for Aliyun's AI platform (
bailian-cli). Extends Qwen Code with image/video generation, knowledge retrieval, app orchestration, and model deployment
Privacy
See the Terms of Service and Privacy Notice, including Chrome extension and Browser Use data handling.
Contributing
Contributions are welcome! See CONTRIBUTING.md for guidelines.
Acknowledgments
This project was originally based on Google Gemini CLI v0.8.2. We gratefully acknowledge the Gemini CLI team's excellent work. Starting from Qwen Code v0.1, we stopped syncing with upstream and began independent development as a multi-protocol, multi-platform agent framework with deep integrations for Qwen models and beyond.

