Skip to main content
Glama
README.md
# or-pricer

OpenRouter model pricing at your fingertips — CLI tool + MCP server.

No API key needed. No browser. Just prices.

## Install

```bash
git clone https://github.com/viperdriver2000/or-pricer.git
cd or-pricer
pip install httpx    # only dependency
```

Or with uv:
```bash
uv tool install --from git+https://github.com/viperdriver2000/or-pricer.git
```

## Quick Start

```bash
./or-pricer                  # dashboard of all watch groups (provider + opencode cmd per row)
./or-pricer -t               # top 20 most-used models
./or-pricer -c               # cheapest 30 models
./or-pricer -g china         # chinese models
./or-pricer -g us            # google / openai / anthropic / meta / xai
./or-pricer -g privacy       # zero-retention, no-training providers
./or-pricer -s "claude"      # search by name
./or-pricer -p deepseek/deepseek-v4-pro   # hosting providers + privacy flags
./or-pricer --free           # free models only
./or-pricer --pick           # interactive pick → opencode -m ...
```

## CLI

```
Usage: or-pricer [OPTIONS]

Without options: dashboard overview of all watch groups.

Options:
  -g, --group NAME      Show group (china, europe, us, top, free, programming, privacy)
  -t, --trending        Top 20 most-used models
  -c, --cheapest        Cheapest 30 models
  -s, --search TERM     Search by name or description
  -i, --info ID         Detailed info for one model (+ hosting providers)
  -p, --providers ID    Hosting providers for one model with privacy flags
  --price TERM          Real-time price for one model (fuzzy, e.g. --price glm-5.3-flash)
  --free                Free models only (:free variants)
  --supported PARAMS    Filter by supported params (e.g. "tools,temperature")
  --opencode            Print ready-to-use opencode -m commands
  --pick                Interactive selection → prints opencode -m command
  --no-cache            Bypass 12h cache, fetch fresh
  -o, --output FORMAT   Table or JSON output (table|json)
  -h, --help            Show this help
```

### Examples

```bash
# China group, sorted by price (shows provider + opencode command)
$ or-pricer -g china

=== CHINA ===

Provider    Model                               Prompt/1M  Compl/1M  Context  Cache R  Cache W
-----------------------------------------------------------------------------------------------
qwen        qwen/qwen3.7-flash                  $0.03      $0.13     1M       $0.01    $0.04
deepseek    deepseek/deepseek-v4-flash-0731     $0.14      $0.28     1M       $0.02    $-
deepseek    deepseek/deepseek-v4-pro            $1.32      $3.96     1M       $0.04    $-
qwen        qwen/qwen3.7-max                    $1.48      $4.42     1M       $0.29    $1.84

In opencode auswählen: opencode -m openrouter/<model-id>
```

```bash
# Hosting providers with privacy flags
$ or-pricer -p deepseek/deepseek-v4-pro

=== Hoster fuer deepseek/deepseek-v4-pro ===

Provider         Train   Retains   HQ
------------------------------------------
DeepInfra        nein    nein      US
CoreWeave        nein    nein      US
Novita           nein    nein      US
...
DeepSeek         ja      ja        CN   ← trains on inputs

Privacy-freundlich (kein Training, kein Retention): Azure, BaseTen, DeepInfra, Fireworks, ...
Trainiert mit Inputs: DeepSeek
```

```bash
# Ready-to-run opencode commands for all US models
$ or-pricer -g us --opencode
# US
opencode -m openrouter/google/gemma-4-31b-it
opencode -m openrouter/openai/gpt-5-nano
opencode -m openrouter/anthropic/claude-sonnet-5
...
```

```bash
# Real-time price lookup (fuzzy term, bypasses cache) — shows per-host prices
$ or-pricer --price glm-5.3-flash

Modell:      z-ai/glm-5.3-flash
Name:        Z.ai: GLM 5.3 Flash
Provider:    z-ai
Context:     1.3M

--- Preise (pro 1M Tokens, live) ---
  Prompt:      $0.07
  Completion:  $0.25
  Cache Read:  $0.01
  Cache Write: $-

--- Preise pro Hoster (guenstigste zuerst) ---
  Provider              Input    Output   Cached  Disc    Quant
  -------------------------------------------------------------
  Relace                $0.07     $0.24    $0.01     -      fp4
  GMICloud              $0.07     $0.25    $0.01  -50%      fp8
  Novita                $0.07     $0.25    $0.01  -50%      fp8
  ...

  Guenstigster Hoster: Relace (Input $0.07, Output $0.24)

opencode -m openrouter/z-ai/glm-5.3-flash
```

## MCP Server

Integrates with [opencode](https://github.com/anomalyco/opencode), Claude Code, and other MCP-compatible tools.

```jsonc
// ~/.config/opencode/opencode.json
{
  "mcp": {
    "or-pricer": {
      "type": "local",
      "command": ["python3", "~/workspace/or-pricer/mcp_server.py"]
    }
  }
}
```

Available tools: `or_show_group`, `or_trending`, `or_cheapest`, `or_search`, `or_model_info`, `or_find_cheapest_for`, `or_refresh`

## Config

Edit `config.json` to customize watch groups:

```json
{
  "groups": {
    "china": [
      "deepseek/deepseek-v4-pro",
      "qwen/qwen3.8-max"
    ],
    "europe": [
      "mistralai/mistral-small-3.1-24b-instruct"
    ],
    "my-models": [
      "openai/gpt-4o",
      "anthropic/claude-sonnet-5"
    ]
  },
  "cache_ttl_hours": 12
}
```

## How It Works

- Queries the **free** OpenRouter API at `/api/v1/models` (no auth required)
- Caches results locally for 12 hours (`~/.cache/or-pricer/cache.json`)
- Hosting providers + privacy flags per model from the OpenRouter model page (`~/.cache/or-pricer/providers.json`)
- Privacy classification: providers with zero data retention and no training on inputs
- Provider region classification: Europe, USA, China, Asia

## Tests

```bash
python3 tests/test_matching.py
```

## Requirements

- Python 3.12+
- `httpx` (CLI), `mcp` (optional, for MCP server: `pip install ".[mcp]"`)

## License

MIT