{
  "markdown": "# openrouter-free — OpenRouter Free Model Integration for OpenCode\n\nA production-ready skill that dynamically discovers and connects to free AI models via the OpenRouter API. Zero hardcoded model lists.\n\n## What It Does\n\n- **Dynamically fetches** all available models from `GET https://openrouter.ai/api/v1/models`\n- **Auto-filters** free models (tagged `:free`)\n- **Detects capabilities** (vision, tool-calling, structured outputs, reasoning) from API metadata\n- **Caches locally** at `~/.opencode/openrouter-model-cache.json` with configurable TTL\n- **Falls back gracefully** if the API is unreachable or a model fails\n- **Provides a clean CLI** for model discovery, health checks, and interactive chat\n\n## Example Output\n\n```\n📋 Free Models (12 models)\n\nID                                    │ Name                                      │ Context │ Capabilities\n──────────────────────────────────────┼───────────────────────────────────────────┼─────────┼────────────────────────\ndeepseek/deepseek-r1-0528:free        │ DeepSeek R1 (Free)                        │ 128K    │ 🧠 reasoning\ngoogle/gemma-3-27b-it:free            │ Gemma 3 27B Instruct (Free)               │ 128K    │ 👁️ vision 🔧 tool-calling\nqwen/qwen3-32b:free                   │ Qwen3 32B (Free)                          │ 128K    │ 🔧 tool-calling 🧠 reasoning\nmeta-llama/llama-3.1-8b-instruct:free │ Llama 3.1 8B Instruct (Free)              │ 128K    │ 🔧 tool-calling\n...\n```\n\n## Install\n\n### Option 1: Automated (from repo root)\n\n```bash\nbash install.sh\n```\n\n### Option 2: Manual — Claude Code\n\n```bash\nmkdir -p ~/.claude/skills/openrouter-free\ncp -r skills/openrouter-free/. ~/.claude/skills/openrouter-free/\ncd ~/.claude/skills/openrouter-free\nnpm install && npm run build\n```\n\n### Option 3: Manual — Codex\n\n```bash\nmkdir -p ~/.agents/skills/openrouter-free\ncp -r skills/openrouter-free/. ~/.agents/skills/openrouter-free/\n```\n\n### Option 4: Manual — opencode\n\n```bash\nmkdir -p ~/.config/opencode/skills/openrouter-free\ncp -r skills/openrouter-free/. ~/.config/opencode/skills/openrouter-free/\n```\n\n## Usage\n\n| Command | Description |\n|---------|-------------|\n| `openrouter-free init` | Bootstrap — fetch models and populate cache |\n| `openrouter-free models free` | List all free models |\n| `openrouter-free models coding` | Free models with tool-calling |\n| `openrouter-free models vision` | Free models with vision support |\n| `openrouter-free use r1` | Chat with DeepSeek R1 (alias) |\n| `openrouter-free use best-free` | Chat with auto-routed free model |\n| `openrouter-free chat \"hello\" --model qwen` | One-shot message |\n| `openrouter-free refresh` | Force cache refresh |\n| `openrouter-free health` | Check all free models availability |\n| `openrouter-free aliases` | List all known aliases |\n| `openrouter-free interactive` | Start REPL chat mode |\n\n## Requirements\n\n- **Node.js** ≥ 18\n- **OPENROUTER_API_KEY** environment variable\n\n```bash\nexport OPENROUTER_API_KEY=\"sk-or-v1-your-key-here\"\n# Get a free key at: https://openrouter.ai/settings/keys\n```\n\n## Architecture\n\n```\ncli.ts (entry) → OpenRouterFree (facade)\n                  ├─ ModelRegistry   (API fetch + filter)\n                  ├─ CacheManager    (disk persistence, TTL)\n                  ├─ ProviderAdapter (chat completions, retry, stream)\n                  ├─ FallbackRouter  (model selection + failover)\n                  ├─ CapabilityDetector (infer from params)\n                  ├─ HealthChecker   (ping probes)\n                  └─ AliasManager    (short names → IDs)\n```\n\n## Caching\n\n- **Path**: `~/.opencode/openrouter-model-cache.json`\n- **TTL**: 1 hour (3,600,000 ms), override with `CACHE_TTL_MS`\n- **Permissions**: `0o600`\n\n## Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `OPENROUTER_API_KEY` | — | API key (required) |\n| `OPENROUTER_BASE_URL` | `https://openrouter.ai/api/v1` | Custom endpoint |\n| `CACHE_TTL_MS` | `3600000` | Cache TTL in ms |\n\n## License\n\nMIT\n\n---\n\n📖 **Project page:** https://shihub.online/projects/openrouter-free-infer\n",
  "bytes": 4062,
  "sha": "9fcc4ddef2428cc51a2505075bd0d1c8d12ff86a3582ec9990ffb98fe24dd0ef",
  "repo_slug": "shihabshahrier/openrouter-free-infer",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_shihabshahrier_openrouter_free_infer_956f6ad9/readme"
}