{"slug": "i-m-using-gpt-sol-and-claude-opus-for-free-pi-coding-agent-omniroute", "title": "I'm using GPT Sol and Claude Opus for free — pi-coding-agent + OmniRoute", "summary": "A developer has detailed a setup that provides free access to frontier AI models like GPT Sol and Claude Opus using two open-source tools: OmniRoute, a local API gateway, and Pi, a coding agent. The configuration routes requests through OmniRoute's free-tier providers, allowing users to select models such as 'aug/gpt5.6-sol' and 'aug/opus4.8' without API keys or billing. The developer notes that the dashboard's built-in Pi integration writes to the wrong config file, requiring manual edits to '~/.pi/agent/models.json'.", "body_md": "I'm using GPT Sol and Claude Opus for free. No credit card, no per-token bill, no \"you've hit your monthly limit\" email.\n\nTwo pieces of software make it happen:\n\nHere's the exact setup, from install to first prompt.\n\nOmniRoute ships with free-tier providers pre-wired into the `auto`\n\nmodel. You don't paste an API key — a fresh install just answers. But `auto`\n\nalso reaches frontier-class models through the free routes, so I can pick them by name:\n\n```\naug/gpt5.6-sol       # GPT Sol\naug/opus4.8          # Claude Opus\nauto/best-coding     # best free coding model\nauto/best-reasoning  # best free reasoning model\nauto                 # let OmniRoute pick\n```\n\nPi talks to one endpoint (`http://localhost:20128/v1`\n\n). OmniRoute handles which provider actually serves the request, and falls back automatically if one goes down or hits a rate limit.\n\n```\nnpm install -g omniroute\nomniroute\n```\n\nThe gateway boots on port `20128`\n\n; the dashboard is at `http://localhost:20128`\n\n.\n\n```\nnpm install -g @earendil-works/pi-coding-agent\n```\n\nQuick note so you install the right thing: this is the npm\n\n`pi`\n\n(`@earendil-works/pi-coding-agent`\n\n), a coding agent with read / bash / edit / write tools. It's unrelated to the Rust project also called`pi-coding-agent`\n\n.\n\nPi reads its providers from `~/.pi/agent/models.json`\n\n. Add an `omniroute`\n\nentry:\n\n```\n{\n  \"providers\": {\n    \"omniroute\": {\n      \"api\": \"openai-completions\",\n      \"apiKey\": \"\",\n      \"baseUrl\": \"http://localhost:20128/v1\",\n      \"models\": [\n        { \"_launch\": true, \"id\": \"auto\", \"input\": [\"text\"], \"reasoning\": true },\n        { \"id\": \"auto/best-coding\", \"input\": [\"text\"], \"reasoning\": true },\n        { \"id\": \"auto/best-reasoning\", \"input\": [\"text\"], \"reasoning\": true },\n        { \"id\": \"auto/best-fast\", \"input\": [\"text\"], \"reasoning\": true },\n        { \"id\": \"aug/gpt5.6-sol\", \"input\": [\"text\"], \"reasoning\": true },\n        { \"id\": \"aug/opus4.8\", \"input\": [\"text\"], \"reasoning\": true }\n      ]\n    }\n  }\n}\n```\n\n`api: \"openai-completions\"`\n\n— OmniRoute speaks the OpenAI protocol.`baseUrl`\n\n— the local gateway. Keep the `/v1`\n\n.`apiKey`\n\n— empty is fine: OmniRoute runs keyless locally. If you've created a key on the dashboard's Endpoints page, put it here instead.If you already have providers in that file, just add the `omniroute`\n\nkey next to them — don't overwrite the rest.\n\nEdit `~/.pi/agent/settings.json`\n\n:\n\n```\n{\n  \"defaultProvider\": \"omniroute\",\n  \"defaultModel\": \"auto\"\n}\n```\n\nNow `pi`\n\nuses OmniRoute out of the box, no flags needed.\n\n```\npi \"fix the failing test in src\"      # interactive, routes through OmniRoute\npi -p \"summarize this file\"           # non-interactive, print and exit\npi --model aug/gpt5.6-sol             # GPT Sol specifically\npi --model aug/opus4.8                # Claude Opus specifically\npi --model auto/best-reasoning        # best free reasoning model\npi -c                                 # continue the last session\npi --list-models                      # see every available model\n```\n\nSwitching models is one flag — no reconfiguring keys, no new accounts. If you ever want your local Ollama model back, `pi --provider ollama`\n\ndoes it.\n\n**1. The dashboard writes the wrong file for this Pi.** OmniRoute's built-in \"Pi\" integration (dashboard → CLI tools → Pi) writes `~/.pi/config.json`\n\n. This Pi reads `~/.pi/agent/models.json`\n\n. Edit the file by hand as above and you're done — the dashboard button won't do it for this version.\n\n**2. Bare OpenAI model names fail.** Requesting `gpt-5.6-luna`\n\n(no prefix) returns `No active credentials for provider: openai`\n\n. The free routes are namespaced — use `auto`\n\n, `auto/*`\n\n, or `aug/*`\n\nIDs like `aug/gpt5.6-sol`\n\n.\n\n`http://localhost:20128/v1`\n\n.`--model`\n\n, not a support ticket.Install OmniRoute, point Pi at it, and go. Ten minutes, and GPT Sol and Claude Opus are just models you can pick.", "url": "https://wpnews.pro/news/i-m-using-gpt-sol-and-claude-opus-for-free-pi-coding-agent-omniroute", "canonical_source": "https://dev.to/ahmed_nafies_3a55c907115c/im-using-gpt-sol-and-claude-opus-for-free-pi-coding-agent-omniroute-36m8", "published_at": "2026-08-25 18:11:56+00:00", "updated_at": "2026-08-25 18:44:10.210452+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-infrastructure", "large-language-models"], "entities": ["OmniRoute", "Pi", "GPT Sol", "Claude Opus", "OpenAI"], "alternates": {"html": "https://wpnews.pro/news/i-m-using-gpt-sol-and-claude-opus-for-free-pi-coding-agent-omniroute", "markdown": "https://wpnews.pro/news/i-m-using-gpt-sol-and-claude-opus-for-free-pi-coding-agent-omniroute.md", "text": "https://wpnews.pro/news/i-m-using-gpt-sol-and-claude-opus-for-free-pi-coding-agent-omniroute.txt", "jsonld": "https://wpnews.pro/news/i-m-using-gpt-sol-and-claude-opus-for-free-pi-coding-agent-omniroute.jsonld"}}