find /mnt/rpi/pi-config/git/github.com/apmantza/pi-free -maxdepth 3 -type f | sed -n '1,200p' && echo '---' && cat /mnt/rpi/pi-config/git/github.com/apmantza/pi-free/package.json


Successfully wrote 104 bytes to /home/sebas/.pi/free.json


Listo.

## Hecho
- instalé `pi-free`
- quedó registrado en:
  - `/mnt/rpi/pi-config/settings.json`

con:

```json
"packages": [
  "git:github.com/apmantza/pi-free"
]
```

- creé:
  - `~/.pi/free.json`

con tu `openrouter_api_key`

## Estado
La extensión ya está instalada.
En el próximo arranque de `pi` debería cargarla y sumar providers/modelos free.

## Cómo usar
Dentro de `pi`:

- abrir model picker con `Ctrl+L`
- buscar:
  - `openrouter/`
  - `zen/`
  - `kilo/`
  - `nvidia/`
  - `qwen/`

Para OpenRouter:
- por default debería mostrar free models
- podés alternar con:

```text
/openrouter-toggle
```

## Nota
Usé `~/.pi/free.json` porque esa extensión lo espera ahí.
También podría leer `OPENROUTER_API_KEY`, pero esto la deja estable para `pi-free`.

## Recomendación
Cerrá y reabrí `pi`, o lanzalo en shell nueva.

Si querés, siguiente paso hago una verificación rápida:
- arranco `pi`
- confirmo que aparece `openrouter/` en el picker
- y te digo qué modelos free ve.


listo


Bien.

Probá en `pi`:

- `Ctrl+L`
- buscá `openrouter/`

Y si querés ver todo:

- `/openrouter-toggle`

Si no aparece:
- cerrá `pi`
- abrilo de nuevo
- y reviso logs en `~/.pi/free.log` o `LOG_LEVEL=debug pi`

Cuando quieras, hago la verificación.


me rankeas todos los modelos? podes verlos?


bash

python - <<'PY'
import json, urllib.request, os
key=None
for path in ['/home/sebas/.pi/free.json']:
    try:
        with open(path) as f:
            key=json.load(f).get('openrouter_api_key')
            if key: break
    except: pass
key = key or os.environ.get('OPENROUTER_API_KEY')
headers={'Authorization':'Bearer '+key,'HTTP-Referer':'http://localhost','X-Title':'ballbox-first-pi-free-ranking'} if key else {'HTTP-Referer':'http://localhost','X-Title':'ballbox-first-pi-free-ranking'}
req=urllib.request.Request('https://openrouter.ai/api/v1/models', headers=headers)
data=json.load(urllib.request.urlopen(req, timeout=30))['data']
free=[]
for m in data:
    pid=m.get('id','')
    pricing=m.get('pricing',{}) or {}
    if str(pricing.get('prompt')) in ('0','0.0') and str(pricing.get('completion')) in ('0','0.0') and pid.endswith(':free'):
        free.append({
            'id': pid,
            'name': m.get('name', pid),
            'context': m.get('context_length') or 0,
            'created': m.get('created') or 0,
            'description': (m.get('description') or '').replace('\n',' ')[:220]
        })
print(json.dumps(sorted(free, key=lambda x: (-x['context'], x['id'])), indent=2))
PY


Google: Gemma 4 26B A4B  (free)

Gemma 4 26B A4B IT is an instruction-tuned Mixture-of-Experts (MoE) model from Google DeepMind. Despite 25.2B total parameters, only 3.8B activate per token during inference — delivering near-31B quality at...

Google: Gemma 4 31B (free)

Gemma 4 31B Instruct is Google DeepMind's 30.7B dense multimodal model supporting text and image input with text output. Features a 256K token context window, configurable thinking/reasoning mode, native function...

NVIDIA: Nemotron 3 Super (free)

NVIDIA Nemotron 3 Super is a 120B-parameter open hybrid MoE model, activating just 12B parameters for maximum compute efficiency and accuracy in complex multi-agent applications. Built on a hybrid Mamba-Transformer...

Qwen: Qwen3 Next 80B A3B Instruct (free)

Qwen3-Next-80B-A3B-Instruct is an instruction-tuned chat model in the Qwen3-Next series optimized for fast, stable responses without “thinking” traces. It targets complex tasks across reasoning, code generation, knowledg

Qwen: Qwen3 Coder 480B A35B (free)

Qwen3-Coder-480B-A35B-Instruct is a Mixture-of-Experts (MoE) code generation model developed by the Qwen team. It is optimized for agentic coding tasks such as function calling, tool use, and long-context reasoning over.

NVIDIA: Nemotron 3 Nano 30B A3B (free)

NVIDIA Nemotron 3 Nano 30B A3B is a small language MoE model with highest compute efficiency and accuracy for developers to build specialized agentic AI systems. The model is fully...

MiniMax: MiniMax M2.5 (free)

MiniMax-M2.5 is a SOTA large language model designed for real-world productivity. Trained in a diverse range of complex real-world digital working environments, M2.5 builds upon the coding expertise of M2.1...

Google: Gemma 3 27B (free)

Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilitie

Meta: Llama 3.2 3B Instruct (free)

Llama 3.2 3B is a 3-billion-parameter multilingual large language model, optimized for advanced natural language processing tasks like dialogue generation, reasoning, and summarization. Designed with the latest transform

Nous: Hermes 3 405B Instruct (free)

Hermes 3 is a generalist language model with many improvements over Hermes 2, including advanced agentic capabilities, much better roleplaying, reasoning, multi-turn conversation, long context coherence, and improvements

OpenAI: gpt-oss-120b (free)

gpt-oss-120b is an open-weight, 117B-parameter Mixture-of-Experts (MoE) language model from OpenAI designed for high-reasoning, agentic, and general-purpose production use cases. It activates 5.1B parameters per forward

OpenAI: gpt-oss-20b (free)

gpt-oss-20b is an open-weight 21B parameter model released by OpenAI under the Apache 2.0 license. It uses a Mixture-of-Experts (MoE) architecture with 3.6B active parameters per forward pass, optimized for...

Z.ai: GLM 4.5 Air (free)

GLM-4.5-Air is the lightweight variant of our latest flagship model family, also purpose-built for agent-centric applications. Like GLM-4.5, it adopts the Mixture-of-Experts (MoE) architecture but with a more compact par

Arcee AI: Trinity Large Preview (free)

Trinity-Large-Preview is a frontier-scale open-weight language model from Arcee, built as a 400B-parameter sparse Mixture-of-Experts with 13B active parameters per token using 4-of-256 expert routing. It excels in creati

NVIDIA: Nemotron Nano 12B 2 VL (free)

NVIDIA Nemotron Nano 2 VL is a 12-billion-parameter open multimodal reasoning model designed for video understanding and document intelligence. It introduces a hybrid Transformer-Mamba architecture, combining transformer

NVIDIA: Nemotron Nano 9B V2 (free)

NVIDIA-Nemotron-Nano-9B-v2 is a large language model (LLM) trained from scratch by NVIDIA, and designed as a unified model for both reasoning and non-reasoning tasks. It responds to user queries and...

Meta: Llama 3.3 70B Instruct (free)

The Meta Llama 3.3 multilingual large language model (LLM) is a pretrained and instruction tuned generative model in 70B (text in/text out). The Llama 3.3 instruction tuned text only model...

Venice: Uncensored (free)

Venice Uncensored Dolphin Mistral 24B Venice Edition is a fine-tuned variant of Mistral-Small-24B-Instruct-2501, developed by dphn.ai in collaboration with Venice.ai. This model is designed as an “uncensored” instruct-tu

LiquidAI: LFM2.5-1.2B-Instruct (free)

LFM2.5-1.2B-Instruct is a compact, high-performance instruction-tuned model built for fast on-device AI. It delivers strong chat quality in a 1.2B parameter footprint, with efficient edge inference and broad runtime supp

LiquidAI: LFM2.5-1.2B-Thinking (free)

LFM2.5-1.2B-Thinking is a lightweight reasoning-focused model optimized for agentic tasks, data extraction, and RAG—while still running comfortably on edge devices. It supports long context (up to 32K tokens) and is...

Google: Gemma 3n 2B (free)

Gemma 3n E2B IT is a multimodal, instruction-tuned model developed by Google DeepMind, designed to operate efficiently at an effective parameter size of 2B while leveraging a 6B architecture. Based...

Google: Gemma 3n 4B (free)

Gemma 3n E4B-it is optimized for efficient execution on mobile and low-resource devices, such as phones, laptops, and tablets. It supports multimodal inputs—including text, visual data, and audio—enabling diverse tasks..


Sí. Veo los **24 free** de OpenRouter ahora.

Te los rankeo para **uso real en PI agent**, priorizando:
1. coding
2. razonamiento útil
3. contexto
4. probabilidad de servir en tareas de agente

## Tier S
1. `qwen/qwen3-coder:free`
   - mejor candidato general para code
   - enorme contexto
   - orientado a agentic coding
2. `openai/gpt-oss-120b:free`
   - muy fuerte generalista/coding
   - buena apuesta para tareas complejas
3. `qwen/qwen3-next-80b-a3b-instruct:free`
   - gran equilibrio entre velocidad y capacidad
4. `google/gemma-4-31b-it:free`
   - muy buen contexto
   - fuerte reasoning
5. `google/gemma-4-26b-a4b-it:free`
   - muy buena relación calidad/costo/latencia
6. `minimax/minimax-m2.5:free`
   - muy prometedor para trabajo real y productividad

## Tier A
7. `nvidia/nemotron-3-super-120b-a12b:free`
   - grande, serio, útil para análisis complejo
8. `nousresearch/hermes-3-llama-3.1-405b:free`
   - muy capaz, largo contexto, buen agente general
9. `z-ai/glm-4.5-air:free`
   - fuerte generalista
10. `meta-llama/llama-3.3-70b-instruct:free`
   - sólido, estable, buen baseline
11. `google/gemma-3-27b-it:free`
   - buena opción intermedia
12. `arcee-ai/trinity-large-preview:free`
   - interesante, grande, pero menos predecible

## Tier B
13. `nvidia/nemotron-3-nano-30b-a3b:free`
14. `nvidia/nemotron-nano-9b-v2:free`
15. `google/gemma-3-12b-it:free`
16. `openai/gpt-oss-20b:free`
17. `nvidia/nemotron-nano-12b-v2-vl:free`
   - más útil si hay multimodal/doc/video
18. `google/gemma-3-4b-it:free`

## Tier C
19. `google/gemma-3n-e4b-it:free`
20. `google/gemma-3n-e2b-it:free`
21. `liquid/lfm-2.5-1.2b-thinking:free`
22. `liquid/lfm-2.5-1.2b-instruct:free`
23. `meta-llama/llama-3.2-3b-instruct:free`

## Tier especial / no recomendado por default
24. `cognitivecomputations/dolphin-mistral-24b-venice-edition:free`
- “uncensored” no es ventaja para tu caso
- menos predecible para trabajo serio

---

## Mi shortlist práctico

### Para coding
1. `qwen/qwen3-coder:free`
2. `openai/gpt-oss-120b:free`
3. `qwen/qwen3-next-80b-a3b-instruct:free`
4. `google/gemma-4-31b-it:free`
5. `google/gemma-4-26b-a4b-it:free`

### Para general / planning
1. `openai/gpt-oss-120b:free`
2. `minimax/minimax-m2.5:free`
3. `google/gemma-4-31b-it:free`
4. `nousresearch/hermes-3-llama-3.1-405b:free`
5. `z-ai/glm-4.5-air:free`

### Para rapidez razonable
1. `google/gemma-4-26b-a4b-it:free`
2. `google/gemma-3-27b-it:free`
3. `openai/gpt-oss-20b:free`
4. `nvidia/nemotron-3-nano-30b-a3b:free`

---

## Recomendación concreta para pi-free
Yo dejaría favoritos así:

- **default code:** `qwen/qwen3-coder:free`
- **default think/general:** `openai/gpt-oss-120b:free`
- **fallback rápido:** `google/gemma-4-26b-a4b-it:free`
- **fallback largo/contexto:** `google/gemma-4-31b-it:free`
- **fallback alterno general:** `minimax/minimax-m2.5:free`

Si querés, siguiente paso te hago una **lista ordenada final para pegar en favoritos/hidden models** de `~/.pi/free.json`.


podes dejar los Tier S en scoped models?


bash

rg -n "scoped models|scopedModels|hidden_models|favorite|favorites|free.json|scope" /mnt/rpi/pi-config/git/github.com/apmantza/pi-free -S


/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/CHANGELOG.md:43:  - New config flag `openrouter_show_paid` in `~/.pi/free.json` (default: `false`)
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/CHANGELOG.md:56:  - Set `OPENCODE_GO_API_KEY` or `opencode_go_api_key` in `~/.pi/free.json`
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/CHANGELOG.md:80:- **Qwen OAuth breaks other OAuth providers** — `modifyModels` receives all models across every registered provider, not just Qwen's. The previous `map()` stamped the Qwen dashscope `baseUrl` onto every model, causing other OAuth providers (Kilo, OpenRouter, etc.) to return 404 after a `/login qwen` flow. Now only models with `provider === PROVIDER_QWEN` are patched; others pass through unchanged.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/CHANGELOG.md:86:  - Requires a free Modal API key (`MODAL_API_KEY` or `modal_api_key` in `~/.pi/free.json`)
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/CHANGELOG.md:95:- **Qwen API endpoint** — Replicates qwen-code's `getCurrentEndpoint()` logic: uses `resource_url` from OAuth token response (`dashscope.aliyuncs.com` for Chinese accounts, `portal.qwen.ai` for international), with fallback to `dashscope.aliyuncs.com/compatible-mode/v1`
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/constants.ts:42:	"https://dashscope.aliyuncs.com/compatible-mode/v1";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/lib/free-config.ts:4: * Stores settings in ~/.pi/free.json:
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/lib/free-config.ts:17:const CONFIG_PATH = join(PI_DIR, "free.json");
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/provider-factory.ts:128:			`No API key found — set ${def.apiKeyEnvVar} or add ${def.apiKeyConfigKey} to ~/.pi/free.json`,
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/config.ts:6: *   2. ~/.pi/free.json
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/config.ts:46:	hidden_models?: string[];
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/config.ts:73:	hidden_models: [],
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/config.ts:89:const CONFIG_PATH = join(PI_DIR, "free.json");
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/config.ts:202:const HIDDEN: Set<string> = new Set(file.hidden_models ?? []);
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/config.ts:204:/** Removes any models whose id appears in hidden_models. */
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/config.ts:241:/** Save updated config values to ~/.pi/free.json */
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/tests/qwen.test.ts:40:		() => "https://dashscope.aliyuncs.com/compatible-mode/v1",
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/tests/qwen.test.ts:128:					baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1",
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/tests/qwen.test.ts:305:					baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1",
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/tests/qwen.test.ts:342:					baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1",
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/providers/ollama/ollama.ts:166:			"[ollama] Skipping - OLLAMA_API_KEY not set (env var or ~/.pi/free.json)",
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/providers/modal/modal.ts:5: * Requires MODAL_API_KEY (or modal_api_key in ~/.pi/free.json).
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/providers/qwen/qwen.ts:47:const DEFAULT_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/providers/qwen/qwen.ts:87:			// Chinese accounts → dashscope.aliyuncs.com/v1
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/providers/cloudflare/cloudflare.ts:228:			"[cloudflare] Skipping - CLOUDFLARE_API_TOKEN not set (env var or ~/.pi/free.json)",
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/providers/qwen/qwen-auth.ts:130:		scope: QWEN_OAUTH_SCOPE,
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/providers/qwen/qwen-auth.ts:399:	"https://dashscope.aliyuncs.com/compatible-mode/v1";
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/providers/qwen/qwen-auth.ts:405: *   - Chinese accounts receive resource_url "dashscope.aliyuncs.com"
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/providers/qwen/qwen-auth.ts:406: *     → normalised to "https://dashscope.aliyuncs.com/v1"
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/providers/qwen/qwen-auth.ts:409: *   - No resource_url → fallback "https://dashscope.aliyuncs.com/compatible-mode/v1"
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/providers/factory.ts:70:				`No API key found — set ${apiKeyEnvVar} or add ${apiKeyEnvVar.toLowerCase()}_api_key to ~/.pi/free.json. Get a key at ${keyWebsite}`,
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/docs/model-hopping.md:25:Add to `~/.pi/free.json`:
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/docs/free-tier-limits.md:117:Add to `~/.pi/free.json`:
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/docs/plans/package-json-fix.md:130:**Not in scope (per user request):**
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/docs/provider-failover-plan.md:238:// ~/.pi/free.json
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:19:4. **Handles authentication for you** — OAuth flows (Kilo, Cline) open your browser automatically; API keys are read from `~/.pi/free.json` or environment variables
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:23:6. **Persists your preferences** — Your toggle choices (free vs all models) are saved to `~/.pi/free.json` and remembered across Pi restarts
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:88:- **Linux/Mac:** `~/.pi/free.json`
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:89:- **Windows:** `%USERPROFILE%\.pi\free.json`
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:144:**Option B: Config file** (`~/.pi/free.json`)
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:193:**Option B: Config file** (`~/.pi/free.json`)
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:227:Or in `~/.pi/free.json`:
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:286:**Option B: Config file** (`~/.pi/free.json`)
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:302:Add API key to `~/.pi/free.json` or environment variables:
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:318:Set `OPENCODE_GO_API_KEY` (or `opencode_go_api_key` in `~/.pi/free.json`) and `GO_SHOW_PAID=true` to enable.
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:344:**Option B: Config file** (`~/.pi/free.json`)
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:373:- **Persists your preference** to `~/.pi/free.json` for next startup
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:382:Create `~/.pi/free.json` in your home directory:
/mnt/rpi/pi-config/git/github.com/apmantza/pi-free/README.md:395:  "hidden_models": ["model-id-to-hide"]


	"OLLAMA_SHOW_PAID",
	file.ollama_show_paid,
);
export const CLOUDFLARE_SHOW_PAID = resolveBool(
	"CLOUDFLARE_SHOW_PAID",
	file.cloudflare_show_paid,
);

// Built-in pi providers - per-provider free model filtering
export const OPENROUTER_SHOW_PAID = resolveBool(
	"OPENROUTER_SHOW_PAID",
	file.openrouter_show_paid,
);

// Global free-only mode (new in v2.0) - applies to ALL providers
export const FREE_ONLY = resolveBool("PI_FREE_ONLY", file.free_only);

export const KILO_FREE_ONLY = resolveBool(
	"PI_FREE_KILO_FREE_ONLY",
	file.kilo_free_only,
);

const HIDDEN: Set<string> = new Set(file.hidden_models ?? []);

/** Removes any models whose id appears in hidden_models. */
export function applyHidden<T extends { id: string }>(models: T[]): T[] {
	if (HIDDEN.size === 0) return models;
	return models.filter((m) => !HIDDEN.has(m.id));
}

// API Keys
export const NVIDIA_API_KEY = resolve("NVIDIA_API_KEY", file.nvidia_api_key);
export const FIREWORKS_API_KEY = resolve(
	"FIREWORKS_API_KEY",
	file.fireworks_api_key,
);
export const MODAL_API_KEY = resolve("MODAL_API_KEY", file.modal_api_key);
export const OLLAMA_API_KEY = resolve("OLLAMA_API_KEY", file.ollama_api_key);
export const CLOUDFLARE_API_TOKEN = resolve(
	"CLOUDFLARE_API_TOKEN",
	file.cloudflare_api_token,
);
export const OPENCODE_API_KEY = resolve(
	"OPENCODE_API_KEY",
	file.opencode_api_key,
);

// Re-export provider names for consistency
export {
	PROVIDER_CLINE,
	PROVIDER_FIREWORKS,
	PROVIDER_KILO,
	PROVIDER_MODAL,
	PROVIDER_NVIDIA,
	PROVIDER_QWEN,
};

// =============================================================================
// Config Persistence
// =============================================================================

/** Save updated config values to ~/.pi/free.json */
export function saveConfig(updates: Partial<PiFreeConfig>): void {
	try {
		const existing = loadConfigFile();
		const merged = { ...existing, ...updates };
		writeFileSync(CONFIG_PATH, `${JSON.stringify(merged, null, 2)}\n`, "utf8");
		_logger.info("Config saved", {
			path: CONFIG_PATH,
			keys: Object.keys(updates),
		});
	} catch (err) {
		_logger.error("Failed to save config", {
			path: CONFIG_PATH,
			error: err instanceof Error ? err.message : String(err),
		});
	}
}

/** Get current config values (for checking state) */
export function getConfig(): PiFreeConfig {
	return loadConfigFile();
}


Could not find the exact text in /home/sebas/.pi/free.json. The old text must match exactly including all whitespace and newlines.


Successfully wrote 1420 bytes to /home/sebas/.pi/free.json


Sí. Lo dejé hecho con `hidden_models`.

## Qué hice
En `~/.pi/free.json` oculté todos los OpenRouter free **fuera de Tier S**.

## Quedan visibles de OpenRouter
Los Tier S:

- `openrouter/qwen/qwen3-coder:free`
- `openrouter/openai/gpt-oss-120b:free`
- `openrouter/qwen/qwen3-next-80b-a3b-instruct:free`
- `openrouter/google/gemma-4-31b-it:free`
- `openrouter/google/gemma-4-26b-a4b-it:free`
- `openrouter/minimax/minimax-m2.5:free`
- `openrouter/nvidia/nemotron-3-super-120b-a12b:free`

## Ojo
No sé si `pi-free` usa los IDs ocultos con prefijo `openrouter/...` o solo el id crudo del modelo.
Yo usé el formato más probable para el picker.

Si después de reiniciar `pi` siguen apareciendo los otros OpenRouter, hago el ajuste rápido a ids sin prefijo:

- `google/gemma-3-27b-it:free`
- etc.

## Siguiente paso
- cerrá y abrí `pi`
- `Ctrl+L`
- buscá `openrouter/`

Si querés, después te dejo también esos Tier S ordenados en ranking interno:
1. qwen3-coder
2. gpt-oss-120b
3. qwen3-next-80b
4. gemma-4-31b
5. gemma-4-26b-a4b
6. minimax-m2.5
7. nemotron-3-super-120b


probemos la capacidad de qwen. hola qwen. agrega al nginx server un link que lleve a una pagina de wikipedia random distinta cada dia