Ashari Abidin's Developer Docs

Setup Qwen Coder, OpenRouter & Gemini

🖥️ Qwen Code CLI + OpenRouter Ubuntu Guide

⚡ Instalasi & konfigurasi lengkap | Full installation guide with free models, OpenRouter API, dan Qwen Code CLI

📘 Complete Guide: Installing & Configuring Qwen Code CLI with OpenRouter on Ubuntu

Overview — This guide covers: Node.js installation, Qwen Code CLI, OpenRouter account & API key, free model configuration, testing, and running real coding tasks. Qwen Code supports OpenAI‑compatible providers via modelProviders in settings.json. OpenRouter works using the OpenAI‑compatible endpoint.

1️⃣ Install Node.js using NVM

node -v
npm -v
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
nvm --version
nvm install 24
nvm use 24
nvm alias default 24
node -v
npm -v
which node
which npm

Expected paths: /home/<user>/.nvm/versions/node/v24.x.x/bin/node and similar for npm.

2️⃣ Install Qwen Code CLI

npm install -g @qwen-code/qwen-code@latest
qwen --version

Example: 0.17.0. The recommended config file is ~/.qwen/settings.json.

3️⃣ Create OpenRouter Account

Visit openrouter.ai and sign up via Email, Google, or GitHub.

4️⃣ Generate OpenRouter API Key

Login → API KeysCreate Key → Copy key. Example: sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Never share it. OpenRouter uses env variable OPENROUTER_API_KEY.

5️⃣ Create Qwen Configuration (basic)

mkdir -p ~/.qwen
nano ~/.qwen/settings.json
{
 "env": {
 "OPENROUTER_API_KEY": "sk-or-v1-YOUR_KEY_HERE"
 },
 "modelProviders": {
 "openai": [
 {
 "id": "z-ai/glm-4.5-air:free",
 "name": "[OpenRouter] z-ai/glm-4.5-air:free",
 "baseUrl": "https://openrouter.ai/api/v1",
 "envKey": "OPENROUTER_API_KEY",
 "generationConfig": {
 "contextWindowSize": 128000
 }
 }
 ]
 },
 "security": {
 "auth": {
 "selectedType": "openai"
 }
 },
 "model": {
 "name": "z-ai/glm-4.5-air:free"
 },
 "$version": 4
}

6️⃣ Recommended Multi-Model Configuration

{
 "env": { "OPENROUTER_API_KEY": "sk-or-v1-YOUR_KEY_HERE" },
 "modelProviders": {
 "openai": [
 { "id": "z-ai/glm-4.5-air:free", "name": "[OpenRouter] GLM 4.5 Air Free", "baseUrl": "https://openrouter.ai/api/v1", "envKey": "OPENROUTER_API_KEY" },
 { "id": "openai/gpt-oss-120b:free", "name": "[OpenRouter] GPT OSS 120B Free", "baseUrl": "https://openrouter.ai/api/v1", "envKey": "OPENROUTER_API_KEY" },
 { "id": "qwen/qwen3.6-plus:free", "name": "[OpenRouter] Qwen 3.6 Plus Free", "baseUrl": "https://openrouter.ai/api/v1", "envKey": "OPENROUTER_API_KEY" }
 ]
 },
 "security": { "auth": { "selectedType": "openai" } },
 "model": { "name": "qwen/qwen3.6-plus:free" },
 "$version": 4
}

7️⃣ Secure API Key Storage (Recommended)

nano ~/.profile
export OPENROUTER_API_KEY="sk-or-v1-YOUR_KEY_HERE"
source ~/.profile

Then simplified settings.json without inline key.

8️⃣ Validate JSON Configuration

python3 -m json.tool ~/.qwen/settings.json

9️⃣ Verify OpenRouter API Key

echo $OPENROUTER_API_KEY

Expected: sk-or-v1-xxxxxxxxxxxx

🔟 Test OpenRouter API

curl https://openrouter.ai/api/v1/models -H "Authorization: Bearer $OPENROUTER_API_KEY"

🚀 Launch Qwen Code

qwen

Prompt example: Identify your model. Successful response means configured OpenRouter model works.

🔄 Change Model Inside Qwen

Inside Qwen REPL: /model and type free ID like qwen/qwen3.6-plus:free or openai/gpt-oss-120b:free.

📁 Create a Python Project

mkdir ~/todo-app
cd ~/todo-app
qwen

Prompt: "Create a Python Todo CLI application using JSON storage." or Flask student manager.

🛠️ Useful Commands

qwen --version
qwen --help
cat ~/.qwen/settings.json
echo $OPENROUTER_API_KEY
python3 -m json.tool ~/.qwen/settings.json

⚠️ Common Errors

  • EACCES Permission: Use NVM-managed Node.js instead of system install.
  • 401 Unauthorized: Invalid/expired API key → generate new key.
  • JSON Syntax Error: Validate with python3 -m json.tool; check commas/braces.

⭐ Recommended Free Models (OpenRouter)

ModelQualitySpeedCost
qwen/qwen3.6-plus:freeExcellentFastFree
z-ai/glm-4.5-air:freeGoodFastFree
openai/gpt-oss-120b:freeGoodMediumFree

💡 Qwen 3.6 Plus Free offers 1M-token context window, ideal for coding agents.

✅ Final Verification Checklist

node -v
npm -v
qwen --version
python3 -m json.tool ~/.qwen/settings.json
echo $OPENROUTER_API_KEY
✔️ Node.js installed  |  ✔️ npm ready  |  ✔️ Qwen Code installed  |  ✔️ OpenRouter key available  |  ✔️ Valid settings.json  |  ✔️ API reachable  |  ✔️ Coding assistant operational

📘 Panduan Lengkap: Instalasi & Konfigurasi Qwen Code CLI dengan OpenRouter di Ubuntu

Ringkasan — Panduan ini mencakup: instalasi Node.js, pemasangan Qwen Code CLI, akun OpenRouter & kunci API, konfigurasi model gratis, pengujian, dan tugas coding nyata. Qwen Code mendukung penyedia yang kompatibel dengan OpenAI melalui modelProviders di settings.json. OpenRouter bekerja menggunakan endpoint kompatibel OpenAI.

1️⃣ Install Node.js menggunakan NVM

node -v
npm -v
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
nvm --version
nvm install 24
nvm use 24
nvm alias default 24
node -v
npm -v
which node
which npm

Path yang diharapkan: /home/<user>/.nvm/versions/node/v24.x.x/bin/node dan serupa untuk npm.

2️⃣ Install Qwen Code CLI

npm install -g @qwen-code/qwen-code@latest
qwen --version

Contoh: 0.17.0. File konfigurasi utama ~/.qwen/settings.json.

3️⃣ Buat Akun OpenRouter

Kunjungi openrouter.ai dan daftar via Email, Google, atau GitHub.

4️⃣ Generate OpenRouter API Key

Login → API KeysCreate Key → salin kunci. Contoh: sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Jangan bagikan. OpenRouter menggunakan variabel lingkungan OPENROUTER_API_KEY.

5️⃣ Membuat Konfigurasi Qwen (dasar)

mkdir -p ~/.qwen
nano ~/.qwen/settings.json
{
 "env": {
 "OPENROUTER_API_KEY": "sk-or-v1-YOUR_KEY_HERE"
 },
 "modelProviders": {
 "openai": [
 {
 "id": "z-ai/glm-4.5-air:free",
 "name": "[OpenRouter] z-ai/glm-4.5-air:free",
 "baseUrl": "https://openrouter.ai/api/v1",
 "envKey": "OPENROUTER_API_KEY",
 "generationConfig": {
 "contextWindowSize": 128000
 }
 }
 ]
 },
 "security": {
 "auth": {
 "selectedType": "openai"
 }
 },
 "model": {
 "name": "z-ai/glm-4.5-air:free"
 },
 "$version": 4
}

6️⃣ Konfigurasi Multi-Model (direkomendasikan)

{
 "env": { "OPENROUTER_API_KEY": "sk-or-v1-YOUR_KEY_HERE" },
 "modelProviders": {
 "openai": [
 { "id": "z-ai/glm-4.5-air:free", "name": "[OpenRouter] GLM 4.5 Air Free", "baseUrl": "https://openrouter.ai/api/v1", "envKey": "OPENROUTER_API_KEY" },
 { "id": "openai/gpt-oss-120b:free", "name": "[OpenRouter] GPT OSS 120B Free", "baseUrl": "https://openrouter.ai/api/v1", "envKey": "OPENROUTER_API_KEY" },
 { "id": "qwen/qwen3.6-plus:free", "name": "[OpenRouter] Qwen 3.6 Plus Free", "baseUrl": "https://openrouter.ai/api/v1", "envKey": "OPENROUTER_API_KEY" }
 ]
 },
 "security": { "auth": { "selectedType": "openai" } },
 "model": { "name": "qwen/qwen3.6-plus:free" },
 "$version": 4
}

7️⃣ Penyimpanan API Key yang Aman (Direkomendasikan)

nano ~/.profile
export OPENROUTER_API_KEY="sk-or-v1-YOUR_KEY_HERE"
source ~/.profile

Kemudian settings.json sederhana tanpa kunci inline.

8️⃣ Validasi JSON Konfigurasi

python3 -m json.tool ~/.qwen/settings.json

9️⃣ Verifikasi OpenRouter API Key

echo $OPENROUTER_API_KEY

Output yang diharapkan: sk-or-v1-xxxxxxxxxxxx

🔟 Uji OpenRouter API

curl https://openrouter.ai/api/v1/models -H "Authorization: Bearer $OPENROUTER_API_KEY"

🚀 Menjalankan Qwen Code

qwen

Contoh prompt: Identify your model. Jika sukses, model OpenRouter merespon.

🔄 Mengganti Model di Dalam Qwen

Di REPL Qwen: /model lalu ketik ID gratis seperti qwen/qwen3.6-plus:free atau openai/gpt-oss-120b:free.

📁 Membuat Proyek Python

mkdir ~/todo-app
cd ~/todo-app
qwen

Prompt: "Buat aplikasi CLI Todo dengan penyimpanan JSON." atau aplikasi manajemen siswa Flask.

🛠️ Perintah Berguna

qwen --version
qwen --help
cat ~/.qwen/settings.json
echo $OPENROUTER_API_KEY
python3 -m json.tool ~/.qwen/settings.json

⚠️ Kesalahan Umum

  • EACCES Izin: Gunakan Node.js yang dikelola NVM, bukan instalasi sistem.
  • 401 Tidak Sah: Kunci API tidak valid / kedaluwarsa → buat kunci baru.
  • Error Sintaks JSON: Validasi dengan python3 -m json.tool; periksa koma/kurung.

⭐ Model Gratis yang Direkomendasikan (OpenRouter)

ModelKualitasKecepatanBiaya
qwen/qwen3.6-plus:freeSangat BaikCepatGratis
z-ai/glm-4.5-air:freeBaikCepatGratis
openai/gpt-oss-120b:freeBaikSedangGratis

💡 Qwen 3.6 Plus Free menawarkan konteks 1M token, sangat baik untuk agen coding.

✅ Daftar Periksa Final

node -v
npm -v
qwen --version
python3 -m json.tool ~/.qwen/settings.json
echo $OPENROUTER_API_KEY
✔️ Node.js terinstal  |  ✔️ npm siap  |  ✔️ Qwen Code terinstal  |  ✔️ Kunci OpenRouter tersedia  |  ✔️ settings.json valid  |  ✔️ API dapat dijangkau  |  ✔️ Asisten coding berfungsi
Back