# I'm using GPT Sol and Claude Opus for free — pi-coding-agent + OmniRoute

> Source: <https://dev.to/ahmed_nafies_3a55c907115c/im-using-gpt-sol-and-claude-opus-for-free-pi-coding-agent-omniroute-36m8>
> Published: 2026-08-25 18:11:56+00:00

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.

Two pieces of software make it happen:

Here's the exact setup, from install to first prompt.

OmniRoute ships with free-tier providers pre-wired into the `auto`

model. You don't paste an API key — a fresh install just answers. But `auto`

also reaches frontier-class models through the free routes, so I can pick them by name:

```
aug/gpt5.6-sol       # GPT Sol
aug/opus4.8          # Claude Opus
auto/best-coding     # best free coding model
auto/best-reasoning  # best free reasoning model
auto                 # let OmniRoute pick
```

Pi talks to one endpoint (`http://localhost:20128/v1`

). OmniRoute handles which provider actually serves the request, and falls back automatically if one goes down or hits a rate limit.

```
npm install -g omniroute
omniroute
```

The gateway boots on port `20128`

; the dashboard is at `http://localhost:20128`

.

```
npm install -g @earendil-works/pi-coding-agent
```

Quick note so you install the right thing: this is the npm

`pi`

(`@earendil-works/pi-coding-agent`

), a coding agent with read / bash / edit / write tools. It's unrelated to the Rust project also called`pi-coding-agent`

.

Pi reads its providers from `~/.pi/agent/models.json`

. Add an `omniroute`

entry:

```
{
  "providers": {
    "omniroute": {
      "api": "openai-completions",
      "apiKey": "",
      "baseUrl": "http://localhost:20128/v1",
      "models": [
        { "_launch": true, "id": "auto", "input": ["text"], "reasoning": true },
        { "id": "auto/best-coding", "input": ["text"], "reasoning": true },
        { "id": "auto/best-reasoning", "input": ["text"], "reasoning": true },
        { "id": "auto/best-fast", "input": ["text"], "reasoning": true },
        { "id": "aug/gpt5.6-sol", "input": ["text"], "reasoning": true },
        { "id": "aug/opus4.8", "input": ["text"], "reasoning": true }
      ]
    }
  }
}
```

`api: "openai-completions"`

— OmniRoute speaks the OpenAI protocol.`baseUrl`

— the local gateway. Keep the `/v1`

.`apiKey`

— 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`

key next to them — don't overwrite the rest.

Edit `~/.pi/agent/settings.json`

:

```
{
  "defaultProvider": "omniroute",
  "defaultModel": "auto"
}
```

Now `pi`

uses OmniRoute out of the box, no flags needed.

```
pi "fix the failing test in src"      # interactive, routes through OmniRoute
pi -p "summarize this file"           # non-interactive, print and exit
pi --model aug/gpt5.6-sol             # GPT Sol specifically
pi --model aug/opus4.8                # Claude Opus specifically
pi --model auto/best-reasoning        # best free reasoning model
pi -c                                 # continue the last session
pi --list-models                      # see every available model
```

Switching models is one flag — no reconfiguring keys, no new accounts. If you ever want your local Ollama model back, `pi --provider ollama`

does it.

**1. The dashboard writes the wrong file for this Pi.** OmniRoute's built-in "Pi" integration (dashboard → CLI tools → Pi) writes `~/.pi/config.json`

. This Pi reads `~/.pi/agent/models.json`

. Edit the file by hand as above and you're done — the dashboard button won't do it for this version.

**2. Bare OpenAI model names fail.** Requesting `gpt-5.6-luna`

(no prefix) returns `No active credentials for provider: openai`

. The free routes are namespaced — use `auto`

, `auto/*`

, or `aug/*`

IDs like `aug/gpt5.6-sol`

.

`http://localhost:20128/v1`

.`--model`

, 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.
