@archeagle087/costcrew 0.0.0-stage → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +21 -0
- package/.github/workflows/npm-release.yml +123 -0
- package/.github/workflows/prices-monthly.yml +58 -0
- package/.github/workflows/release.yml +45 -0
- package/Cargo.lock +980 -0
- package/Cargo.toml +22 -0
- package/LICENSE +21 -0
- package/README.md +255 -2
- package/assets/advise.png +0 -0
- package/assets/board.png +0 -0
- package/assets/catalog.png +0 -0
- package/assets/demo.png +0 -0
- package/assets/help.png +0 -0
- package/assets/mascot.png +0 -0
- package/assets/prices.png +0 -0
- package/assets/scan.png +0 -0
- package/assets/spend.png +0 -0
- package/assets/ui.png +0 -0
- package/bin.js +46 -0
- package/data/prices.json +1 -0
- package/dist/costcrew-linux-x86_64.tar.gz +0 -0
- package/dist/costcrew-macos-aarch64.tar.gz +0 -0
- package/dist/costcrew-macos-x86_64.tar.gz +0 -0
- package/dist/costcrew-windows-x86_64.zip +0 -0
- package/install.ps1 +38 -0
- package/install.sh +56 -0
- package/package.json +18 -4
- package/packaging/npm/bin.js +46 -0
- package/packaging/npm/package.json +20 -0
- package/packaging/winget/0.4.0/Arch087146.costcrew.installer.yaml +15 -0
- package/packaging/winget/0.4.0/Arch087146.costcrew.locale.en-US.yaml +28 -0
- package/packaging/winget/0.4.0/Arch087146.costcrew.yaml +5 -0
- package/packaging/winget/README.md +31 -0
- package/scripts/render_screen.py +221 -0
- package/src/advise.rs +154 -0
- package/src/args.rs +239 -0
- package/src/board.rs +227 -0
- package/src/catalog.rs +136 -0
- package/src/demo.rs +79 -0
- package/src/fetch.rs +155 -0
- package/src/main.rs +371 -0
- package/src/price.rs +218 -0
- package/src/prices.rs +182 -0
- package/src/report.rs +194 -0
- package/src/scan.rs +593 -0
- package/src/spend.rs +452 -0
- package/src/ui.rs +367 -0
- package/work/costcrew-darwin-arm64/costcrew +0 -0
- package/work/costcrew-darwin-arm64/package.json +9 -0
- package/work/costcrew-darwin-x64/costcrew +0 -0
- package/work/costcrew-darwin-x64/package.json +9 -0
- package/work/costcrew-linux-x64/costcrew +0 -0
- package/work/costcrew-linux-x64/package.json +9 -0
- package/work/costcrew-win32-x64/costcrew.exe +0 -0
- package/work/costcrew-win32-x64/package.json +9 -0
package/Cargo.toml
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "costcrew"
|
|
3
|
+
version = "0.4.1"
|
|
4
|
+
edition = "2021"
|
|
5
|
+
description = "The AI coding price database + your spend — interactive terminal app."
|
|
6
|
+
license = "MIT"
|
|
7
|
+
repository = "https://github.com/Arch087146/costcrew"
|
|
8
|
+
readme = "README.md"
|
|
9
|
+
keywords = ["cli", "ai", "tokens", "cost", "llm"]
|
|
10
|
+
categories = ["command-line-utilities"]
|
|
11
|
+
|
|
12
|
+
[dependencies]
|
|
13
|
+
serde = { version = "1", features = ["derive"] }
|
|
14
|
+
serde_json = "1"
|
|
15
|
+
rusqlite = { version = "0.37", features = ["bundled"] }
|
|
16
|
+
ureq = { version = "2", default-features = false, features = ["tls"] }
|
|
17
|
+
crossterm = "0.29"
|
|
18
|
+
|
|
19
|
+
[profile.release]
|
|
20
|
+
opt-level = 2
|
|
21
|
+
strip = true
|
|
22
|
+
lto = true
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CostCrew Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,256 @@
|
|
|
1
|
-
#
|
|
1
|
+
# costcrew
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**The AI coding price database — plus what *you* spend on it.**
|
|
4
|
+
|
|
5
|
+
One binary, two halves. First: a bundled database of what every model costs —
|
|
6
|
+
every input/output/cache rate per 1M tokens, works offline, no API key, no
|
|
7
|
+
scanning, nothing to configure. Second: your own spend — recorded by you,
|
|
8
|
+
totaled by month and service, plus provider-reported truth from your API keys.
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<img src="assets/ui.png" alt="costcrew interactive app — gradient splash screen and arrow-key menu" width="680">
|
|
12
|
+
<br>
|
|
13
|
+
<img src="assets/mascot.png" alt="the costcrew coin mascot, spinning while the price database loads" width="380">
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
Type `costcrew` and you get the app above: splash, menu, arrow keys. All the
|
|
17
|
+
classic one-shot flags still work for scripting (`costcrew scan --json`, etc.).
|
|
18
|
+
|
|
19
|
+
## The price database
|
|
20
|
+
|
|
21
|
+
`data/prices.json` ships **inside the binary** — a full OpenRouter catalog
|
|
22
|
+
snapshot (465 models, refreshed monthly by CI and committed to the repo) merged
|
|
23
|
+
with a curated vendor table. Ask it anything:
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
costcrew prices # the whole database
|
|
27
|
+
costcrew prices claude # filter by name
|
|
28
|
+
costcrew prices --sort cheap # cheapest first (name | price | cheap)
|
|
29
|
+
costcrew prices --json # machine-readable
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
<p align="center">
|
|
33
|
+
<img src="assets/prices.png" alt="costcrew prices claude — bundled database browsed and filtered" width="760">
|
|
34
|
+
</p>
|
|
35
|
+
|
|
36
|
+
Rules the database lives by:
|
|
37
|
+
|
|
38
|
+
- **No invented prices.** A free/unpriced model shows `?` and is excluded from
|
|
39
|
+
totals. Unknown stays unknown.
|
|
40
|
+
- **Precedence is explicit** — curated table → embedded snapshot → on-disk
|
|
41
|
+
cache → your `--prices` overrides. Later sources win ties, so a fresh
|
|
42
|
+
`costcrew fetch-prices` beats the bundled snapshot, and your overrides beat
|
|
43
|
+
everything.
|
|
44
|
+
- **It refreshes itself** — `costcrew fetch-prices` pulls all ~465 live
|
|
45
|
+
OpenRouter models (public endpoint, no key), and CI re-commits a fresh
|
|
46
|
+
snapshot monthly so source builds never go stale.
|
|
47
|
+
- **`per_hour` for rented GPUs** — bill wall-clock for self-hosted inference
|
|
48
|
+
(see overrides below).
|
|
49
|
+
|
|
50
|
+
## Your spend on AI
|
|
51
|
+
|
|
52
|
+
The database tells you prices; this tells you what **you** paid. You record the
|
|
53
|
+
money that actually left your account — subscriptions, credit top-ups, GPU
|
|
54
|
+
rentals — and costcrew totals it by month and service:
|
|
55
|
+
|
|
56
|
+
```sh
|
|
57
|
+
costcrew spend # the ledger summary
|
|
58
|
+
costcrew spend add 20 --service "Claude Pro"
|
|
59
|
+
costcrew spend add 25 --service "OpenRouter" --note "credit top-up"
|
|
60
|
+
costcrew spend add 1.84 --service "Vast.ai" --model llama-70b --note "2h @ $0.92/h"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
<p align="center">
|
|
64
|
+
<img src="assets/spend.png" alt="costcrew spend — monthly totals and per-service breakdown of recorded AI payments" width="760">
|
|
65
|
+
</p>
|
|
66
|
+
|
|
67
|
+
The ledger is a plain JSON file in `%LOCALAPPDATA%\costcrew` — nothing is
|
|
68
|
+
telemetered, nothing leaves your disk. Three views of money, deliberately
|
|
69
|
+
separate:
|
|
70
|
+
|
|
71
|
+
| view | source | meaning |
|
|
72
|
+
|---|---|---|
|
|
73
|
+
| `costcrew spend` | you record it | what actually left your bank account |
|
|
74
|
+
| `costcrew openrouter` | your API key | provider-reported, per-model truth |
|
|
75
|
+
| `costcrew scan` | local logs (optional) | per-token *estimate* of your usage |
|
|
76
|
+
|
|
77
|
+
## Install
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
# macOS / Linux (curl)
|
|
81
|
+
curl -fsSL https://raw.githubusercontent.com/Arch087146/costcrew/main/install.sh | sh
|
|
82
|
+
|
|
83
|
+
# Windows (PowerShell)
|
|
84
|
+
powershell -c "irm https://raw.githubusercontent.com/Arch087146/costcrew/main/install.ps1 | iex"
|
|
85
|
+
|
|
86
|
+
# Homebrew
|
|
87
|
+
brew install Arch087146/tap/costcrew
|
|
88
|
+
|
|
89
|
+
# npm (prebuilt binary — no compile step)
|
|
90
|
+
npm install -g @archeagle087/costcrew
|
|
91
|
+
|
|
92
|
+
# winget (Windows)
|
|
93
|
+
winget install Arch087146.costcrew
|
|
94
|
+
|
|
95
|
+
# from source (Rust 1.80+)
|
|
96
|
+
git clone https://github.com/Arch087146/costcrew
|
|
97
|
+
cargo install --path costcrew
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Prebuilt binaries also land on the [Releases](https://github.com/Arch087146/costcrew/releases)
|
|
101
|
+
page when a tag is pushed. No runtime dependencies — the database travels with
|
|
102
|
+
the binary.
|
|
103
|
+
|
|
104
|
+
## Usage
|
|
105
|
+
|
|
106
|
+
```sh
|
|
107
|
+
costcrew # the interactive app (splash + arrow-key menu)
|
|
108
|
+
costcrew prices claude # browse the database, filtered
|
|
109
|
+
costcrew spend # your recorded payments, totaled
|
|
110
|
+
costcrew leaderboard # arena Elo, priced — elo-per-dollar value sort
|
|
111
|
+
costcrew catalog # which agent ships with which models
|
|
112
|
+
costcrew scan --since 7d # optional: estimate from local agent logs
|
|
113
|
+
costcrew md > spend.md # shareable markdown report
|
|
114
|
+
costcrew --json # machine-readable, pipe anywhere
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
And `--help`, for people who judge CLIs by their help text:
|
|
118
|
+
|
|
119
|
+
<p align="center">
|
|
120
|
+
<img src="assets/help.png" alt="costcrew --help output" width="640">
|
|
121
|
+
</p>
|
|
122
|
+
|
|
123
|
+
## Optional: estimate from local agent logs
|
|
124
|
+
|
|
125
|
+
If you *also* want a per-token estimate of what you used — independent of how
|
|
126
|
+
you pay — `costcrew scan` reads local logs, read-only:
|
|
127
|
+
|
|
128
|
+
| Tool | Source | Status |
|
|
129
|
+
|---|---|---|
|
|
130
|
+
| OpenCode | `opencode.db` (SQLite message table, legacy JSON storage) | ✅ |
|
|
131
|
+
| Claude Code | `~/.claude/**/*.jsonl` transcripts | ✅ |
|
|
132
|
+
| Kilo Code | VS Code globalStorage task logs | ✅ best-effort |
|
|
133
|
+
| Cline | VS Code globalStorage task logs (incl. agent-reported costs) | ✅ best-effort |
|
|
134
|
+
| Roo Code | VS Code globalStorage task logs | ✅ best-effort |
|
|
135
|
+
| Aider | cost lines in `~/.aider*.history.md` | ✅ |
|
|
136
|
+
| Codex CLI | `~/.codex/sessions` JSONL | ✅ best-effort |
|
|
137
|
+
| Gemini CLI, Cursor, Windsurf, Copilot | — | roadmap |
|
|
138
|
+
|
|
139
|
+
Everything is read **read-only** — the SQLite connection is opened `READ_ONLY`, and
|
|
140
|
+
no log file is ever touched. Here it is five minutes after `cargo install`, reading
|
|
141
|
+
a real OpenCode database — note it found 285 requests for a model it has no price
|
|
142
|
+
for and *didn't bill the unknown model* instead of making a number up:
|
|
143
|
+
|
|
144
|
+
<p align="center">
|
|
145
|
+
<img src="assets/scan.png" alt="costcrew scanning a real OpenCode database — 285 requests, unpriced model shown with a question mark" width="620">
|
|
146
|
+
</p>
|
|
147
|
+
|
|
148
|
+
## Should you have used a cheaper model?
|
|
149
|
+
|
|
150
|
+
`costcrew advise` recomputes your **actual token mix** (input/out/cache ratios
|
|
151
|
+
included) on every comparable model at the same or better benchmark tier, and
|
|
152
|
+
flags probable waste — today's most common answer is "carrier-tier sticker shock":
|
|
153
|
+
|
|
154
|
+
<p align="center">
|
|
155
|
+
<img src="assets/advise.png" alt="costcrew advise suggesting cheaper same-tier models with estimated savings" width="760">
|
|
156
|
+
</p>
|
|
157
|
+
|
|
158
|
+
It's a heuristic — quality tiers come from public coding evals, and it refuses to
|
|
159
|
+
suggest a downgrade it can't back with your own measured spend. The last line is
|
|
160
|
+
baked in: "run one task as an A/B and compare before rewiring your whole
|
|
161
|
+
workflow."
|
|
162
|
+
|
|
163
|
+
## Subscriptions: the price displayed is list price
|
|
164
|
+
|
|
165
|
+
One honest caveat up front: if your agent runs on a **subscription** (Claude Code
|
|
166
|
+
Pro/Max, Cursor Pro, Copilot), those tokens cost you *zero marginal dollars* —
|
|
167
|
+
costcrew still shows what the same usage would have billed per-token, because
|
|
168
|
+
that's the common denominator across every tool it scans. Read subscription
|
|
169
|
+
values as "what this session would cost at list price," not "what you'll owe."
|
|
170
|
+
|
|
171
|
+
API keys, OpenRouter credits, and rented GPUs do map 1:1 to dollars, which is
|
|
172
|
+
where the totals get literal.
|
|
173
|
+
|
|
174
|
+
## Is the leaderboard crown worth its price?
|
|
175
|
+
|
|
176
|
+
`costcrew leaderboard` answers what arena.ai can't: quality **and** the bill.
|
|
177
|
+
Arena Elo from ~2M blind votes, priced three ways — raw in/out $, an
|
|
178
|
+
`agent$` blend realistic for coding agents (20% input, 10% output,
|
|
179
|
+
**70% cache-read** — cache dwarfs everything in agentic loops), and
|
|
180
|
+
**elo/$** value points per dollar:
|
|
181
|
+
|
|
182
|
+
```sh
|
|
183
|
+
costcrew leaderboard # default: by Elo
|
|
184
|
+
costcrew leaderboard --sort value # what a cheapskate should actually run
|
|
185
|
+
costcrew leaderboard --sort price
|
|
186
|
+
costcrew leaderboard --top 50 --json
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
<p align="center">
|
|
190
|
+
<img src="assets/board.png" alt="costcrew leaderboard — LMArena Elo priced with the agentic token blend, sorted by Elo per dollar" width="780">
|
|
191
|
+
</p>
|
|
192
|
+
|
|
193
|
+
One caveat, stated plainly: the Elo snapshot is bundled with the binary and
|
|
194
|
+
dated, like the prices — trust it within ±their margin of error (±4–19 pts),
|
|
195
|
+
trust the prices within vendor-whim.
|
|
196
|
+
|
|
197
|
+
## Which agent runs on what?
|
|
198
|
+
|
|
199
|
+
`costcrew catalog` prints the lay of the land — every coding agent's billing
|
|
200
|
+
model (subscription vs BYOK vs free tier), its model menu, and whether costcrew
|
|
201
|
+
can read its logs:
|
|
202
|
+
|
|
203
|
+
<p align="center">
|
|
204
|
+
<img src="assets/catalog.png" alt="costcrew catalog listing billing and models of Claude Code, OpenCode, Cline, Kilo Code, Aider, Cursor and more" width="720">
|
|
205
|
+
</p>
|
|
206
|
+
|
|
207
|
+
## Pricing
|
|
208
|
+
|
|
209
|
+
Prices live in two places: the curated table in
|
|
210
|
+
[`src/price.rs`](src/price.rs) and the embedded catalog
|
|
211
|
+
[`data/prices.json`](data/prices.json) (committed monthly from OpenRouter's
|
|
212
|
+
public endpoint). Lookup is plain prefix-match, longest prefix wins, so
|
|
213
|
+
`claude-opus-4-5-20260115` matches `claude-opus-4`. Costs are approximate list
|
|
214
|
+
prices (no discounts, no pro-plan pooling) and drift — treat the totals as
|
|
215
|
+
≥85% accurate.
|
|
216
|
+
|
|
217
|
+
Missing your model? Add one line and PR it. Cache reads/writes are priced
|
|
218
|
+
separately where the API exposes them, otherwise the bucket is collapsed.
|
|
219
|
+
|
|
220
|
+
For anything else — private models, rented GPUs — override with `--prices`:
|
|
221
|
+
|
|
222
|
+
```json
|
|
223
|
+
{
|
|
224
|
+
"prices": [
|
|
225
|
+
{ "prefix": "big-pickle", "input": 0.25, "output": 0.95, "cache_read": 0.13 },
|
|
226
|
+
{ "prefix": "local/qwen3-32b", "per_hour": 2.19 }
|
|
227
|
+
]
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
`per_hour` is how you bill **rented GPUs / self-hosted inference** — costcrew
|
|
232
|
+
computes wall-clock per request from OpenCode's session timestamps (hourly rate ×
|
|
233
|
+
time actually spent) and adds it to the token bill.
|
|
234
|
+
|
|
235
|
+
## Why a CLI and not a dashboard?
|
|
236
|
+
|
|
237
|
+
Because the dashboard already exists — inside each vendor's billing page — and
|
|
238
|
+
it'll tell you nothing about the model you ran through a different tool yesterday.
|
|
239
|
+
costcrew is one screen, one binary, and it works the same whether the spend came
|
|
240
|
+
from Claude Code, OpenCode, or whatever ships next week.
|
|
241
|
+
|
|
242
|
+
It's open source too, so "how much did I spend on agents last month" and
|
|
243
|
+
"show me the math" live in the same place.
|
|
244
|
+
|
|
245
|
+
## Contributing
|
|
246
|
+
|
|
247
|
+
Spotted a tool whose logs we don't parse? The scanner is intentionally dumb —
|
|
248
|
+
`src/scan.rs` walks a handful of roots, parses any JSON/JSONL that smells like
|
|
249
|
+
`modelID` + token counts, and sqLite for the rest.
|
|
250
|
+
|
|
251
|
+
- `cargo test` — unit tests for aggregation and pricing
|
|
252
|
+
- `cargo clippy`-clean; fmt-checked in CI
|
|
253
|
+
|
|
254
|
+
## License
|
|
255
|
+
|
|
256
|
+
MIT — see [LICENSE](LICENSE).
|
|
Binary file
|
package/assets/board.png
ADDED
|
Binary file
|
|
Binary file
|
package/assets/demo.png
ADDED
|
Binary file
|
package/assets/help.png
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/assets/scan.png
ADDED
|
Binary file
|
package/assets/spend.png
ADDED
|
Binary file
|
package/assets/ui.png
ADDED
|
Binary file
|
package/bin.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// costcrew npm wrapper: finds the platform binary installed as an
|
|
3
|
+
// optionalDependency and execs it with all arguments passed through.
|
|
4
|
+
"use strict";
|
|
5
|
+
const { spawnSync } = require("child_process");
|
|
6
|
+
const path = require("path");
|
|
7
|
+
const fs = require("fs");
|
|
8
|
+
|
|
9
|
+
const PLATFORMS = {
|
|
10
|
+
"win32-x64": "@archeagle087/costcrew-win32-x64/costcrew.exe",
|
|
11
|
+
"linux-x64": "@archeagle087/costcrew-linux-x64/costcrew",
|
|
12
|
+
"darwin-arm64": "@archeagle087/costcrew-darwin-arm64/costcrew",
|
|
13
|
+
"darwin-x64": "@archeagle087/costcrew-darwin-x64/costcrew",
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const key = `${process.platform}-${process.arch}`;
|
|
17
|
+
const rel = PLATFORMS[key];
|
|
18
|
+
if (!rel) {
|
|
19
|
+
console.error(`costcrew: no prebuilt binary for ${key}`);
|
|
20
|
+
console.error("build from source: https://github.com/Arch087146/costcrew");
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function resolveBinary() {
|
|
25
|
+
// __dirname is node_modules/@archeagle087/costcrew — two levels up is
|
|
26
|
+
// node_modules, where the platform packages live
|
|
27
|
+
const nm = path.join(__dirname, "..", "..");
|
|
28
|
+
const direct = path.join(nm, rel);
|
|
29
|
+
if (fs.existsSync(direct)) return direct;
|
|
30
|
+
// npm can hoist/reshape optionalDependencies — fall back to resolution
|
|
31
|
+
const [pkg, file] = rel.split("/");
|
|
32
|
+
try {
|
|
33
|
+
const dir = path.dirname(require.resolve(`${pkg}/package.json`, { paths: [nm] }));
|
|
34
|
+
return path.join(dir, file);
|
|
35
|
+
} catch {
|
|
36
|
+
return direct; // let spawn fail with a clear ENOENT
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const bin = resolveBinary();
|
|
41
|
+
const result = spawnSync(bin, process.argv.slice(2), { stdio: "inherit" });
|
|
42
|
+
if (result.error) {
|
|
43
|
+
console.error(`costcrew: failed to launch ${bin}: ${result.error.message}`);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
process.exit(result.status ?? 0);
|
package/data/prices.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fetched_at_ms":1794274886057,"models":[{"cache_read":0.024,"cache_write":0.0,"completion":0.39999999999999997,"id":"nex-agi/nex-n2.6","prompt":0.12},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"thinkingmachines/inkling-2-small:free","prompt":0.0},{"cache_read":0.19999999999999998,"cache_write":10.0,"completion":40.0,"id":"anthropic/claude-fable-5.2","prompt":8.0},{"cache_read":0.09999999999999999,"cache_write":5.0,"completion":20.0,"id":"anthropic/claude-fable-5.2:batch","prompt":4.0},{"cache_read":0.004,"cache_write":0.125,"completion":0.5,"id":"meta/muse-ember","prompt":0.09999999999999999},{"cache_read":0.02,"cache_write":0.0,"completion":0.19999999999999998,"id":"liquid/lfm-3-1.7b","prompt":0.08},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"liquid/lfm-3-1.7b:free","prompt":0.0},{"cache_read":0.0,"cache_write":0.0,"completion":9.0,"id":"google/gemini-omni-1.2-flash","prompt":1.5},{"cache_read":0.0,"cache_write":0.0,"completion":9.0,"id":"google/gemini-omni-1.1-flash","prompt":1.5},{"cache_read":0.049999999999999996,"cache_write":0.0,"completion":0.6,"id":"ricursiveai/ripple-65b-preview","prompt":0.19999999999999998},{"cache_read":0.020999999999999998,"cache_write":0.0,"completion":1.2505,"id":"tencent/hy4","prompt":0.417},{"cache_read":0.075,"cache_write":0.0,"completion":1.25,"id":"z-ai/glm-5.3-flashx-legal","prompt":0.37},{"cache_read":0.003,"cache_write":0.0,"completion":0.5,"id":"particle-ai/particle-1","prompt":0.049999999999999996},{"cache_read":0.049999999999999996,"cache_write":1.25,"completion":5.0,"id":"openai/gpt-6.1-terra-pro","prompt":1.0},{"cache_read":0.024999999999999998,"cache_write":0.625,"completion":2.5,"id":"openai/gpt-6.1-terra-pro:batch","prompt":0.5},{"cache_read":0.049999999999999996,"cache_write":1.25,"completion":5.0,"id":"openai/gpt-6.1-terra","prompt":1.0},{"cache_read":0.024999999999999998,"cache_write":0.625,"completion":2.5,"id":"openai/gpt-6.1-terra:batch","prompt":0.5},{"cache_read":0.19999999999999998,"cache_write":0.0,"completion":10.0,"id":"moonshotai/kimi-k3.1-pro","prompt":2.0},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"recursive/flint-v1.0:free","prompt":0.0},{"cache_read":0.015,"cache_write":0.0,"completion":0.6,"id":"minimax/minimax-m3.1-flash","prompt":0.15},{"cache_read":0.005,"cache_write":0.0,"completion":0.5,"id":"deepseek/deepseek-v4.1-flash-1017","prompt":0.006},{"cache_read":0.002,"cache_write":0.0,"completion":0.19999999999999998,"id":"deepseek/deepseek-v4.1-flash-1017:batch","prompt":0.011},{"cache_read":0.06,"cache_write":0.0,"completion":3.0,"id":"elorian/glimpse","prompt":0.6},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"xingchen-agi/xing4.0-29b-a4b:free","prompt":0.0},{"cache_read":0.04,"cache_write":0.0,"completion":1.0,"id":"reflection/beam-1.0-501b-a23b","prompt":0.3},{"cache_read":0.04,"cache_write":0.0,"completion":0.13,"id":"prism-ml/ternary-bonsai-2-9b","prompt":0.08},{"cache_read":0.0,"cache_write":0.0,"completion":2.5,"id":"moondream/moondream3-preview","prompt":0.3},{"cache_read":0.0,"cache_write":0.0,"completion":2.5,"id":"moondream/moondream3.1-9b-a2b","prompt":0.3},{"cache_read":0.15,"cache_write":0.0,"completion":4.25,"id":"meta/muse-spark-open","prompt":1.25},{"cache_read":0.02,"cache_write":0.0,"completion":0.47,"id":"nvidia/nemotron-3.5-super-vl","prompt":0.15},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"nvidia/nemotron-3.5-super-vl:free","prompt":0.0},{"cache_read":0.03,"cache_write":0.0,"completion":3.1999999999999997,"id":"unbiased/pareto-26.10","prompt":0.7999999999999999},{"cache_read":0.03,"cache_write":0.0,"completion":3.1999999999999997,"id":"~unbiased/pareto-latest","prompt":0.7999999999999999},{"cache_read":0.25,"cache_write":0.0,"completion":7.5,"id":"unbiased/pareto-26.9","prompt":2.5},{"cache_read":0.024999999999999998,"cache_write":0.0,"completion":0.7,"id":"liquid/lfm-2.5-24b-a2b","prompt":0.049999999999999996},{"cache_read":0.09999999999999999,"cache_write":0.1875,"completion":10.0,"id":"google/gemini-4-argon","prompt":2.0},{"cache_read":0.049999999999999996,"cache_write":0.1875,"completion":5.0,"id":"google/gemini-4-argon:batch","prompt":1.0},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"scaledown/summarize","prompt":0.04},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"scaledown/extract","prompt":0.04},{"cache_read":0.19999999999999998,"cache_write":0.0,"completion":20.0,"id":"meta/muse-wonder","prompt":4.0},{"cache_read":0.09999999999999999,"cache_write":0.0,"completion":2.7,"id":"stepfun/step-5-preview","prompt":1.0},{"cache_read":0.01,"cache_write":0.125,"completion":0.5,"id":"anthropic/claude-haiku-5.5","prompt":0.09999999999999999},{"cache_read":0.005,"cache_write":0.0625,"completion":0.25,"id":"anthropic/claude-haiku-5.5:batch","prompt":0.049999999999999996},{"cache_read":0.0,"cache_write":0.0,"completion":7.5,"id":"google/gemini-nano-banana-2.1","prompt":1.5},{"cache_read":0.07,"cache_write":0.0,"completion":2.0999999999999996,"id":"mistralai/mistral-large-4-0","prompt":0.7},{"cache_read":0.009,"cache_write":0.0,"completion":0.135,"id":"inclusionai/ling-3.1-flash","prompt":0.045},{"cache_read":0.09999999999999999,"cache_write":2.5,"completion":10.0,"id":"openai/gpt-6.1-sol-pro","prompt":2.0},{"cache_read":0.049999999999999996,"cache_write":1.25,"completion":5.0,"id":"openai/gpt-6.1-sol-pro:batch","prompt":1.0},{"cache_read":0.09999999999999999,"cache_write":2.5,"completion":10.0,"id":"openai/gpt-6.1-sol","prompt":2.0},{"cache_read":0.049999999999999996,"cache_write":1.25,"completion":5.0,"id":"openai/gpt-6.1-sol:batch","prompt":1.0},{"cache_read":0.09999999999999999,"cache_write":2.5,"completion":10.0,"id":"anthropic/claude-sonnet-5.5","prompt":2.0},{"cache_read":0.049999999999999996,"cache_write":1.25,"completion":5.0,"id":"anthropic/claude-sonnet-5.5:batch","prompt":1.0},{"cache_read":0.0,"cache_write":0.0,"completion":1.5,"id":"perceptron/perceptron-mk1.5","prompt":0.15},{"cache_read":0.3,"cache_write":0.0,"completion":15.0,"id":"fireworks/ember-1","prompt":3.0},{"cache_read":0.56,"cache_write":0.0,"completion":8.8,"id":"z-ai/glm-5.3-prime","prompt":2.8},{"cache_read":0.5,"cache_write":0.0,"completion":12.0,"id":"qwen/qwen3.8-max-prime","prompt":4.0},{"cache_read":0.18,"cache_write":0.0,"completion":1.4,"id":"aion-labs/aion-3.5-mini","prompt":0.7},{"cache_read":0.75,"cache_write":0.0,"completion":6.0,"id":"aion-labs/aion-3.5","prompt":3.0},{"cache_read":0.005,"cache_write":0.0,"completion":0.19999999999999998,"id":"upstage/solar-mini4","prompt":0.049999999999999996},{"cache_read":0.15,"cache_write":0.0,"completion":1.5,"id":"cohere/command-a-plus","prompt":0.3},{"cache_read":0.01,"cache_write":0.125,"completion":0.5,"id":"openai/gpt-6-luna-pro","prompt":0.09999999999999999},{"cache_read":0.005,"cache_write":0.0625,"completion":0.25,"id":"openai/gpt-6-luna-pro:batch","prompt":0.049999999999999996},{"cache_read":0.01,"cache_write":0.125,"completion":0.5,"id":"openai/gpt-6-luna","prompt":0.09999999999999999},{"cache_read":0.005,"cache_write":0.0625,"completion":0.25,"id":"openai/gpt-6-luna:batch","prompt":0.049999999999999996},{"cache_read":0.19999999999999998,"cache_write":2.5,"completion":10.0,"id":"openai/gpt-6-sol-pro","prompt":2.0},{"cache_read":0.09999999999999999,"cache_write":1.25,"completion":5.0,"id":"openai/gpt-6-sol-pro:batch","prompt":1.0},{"cache_read":0.19999999999999998,"cache_write":2.5,"completion":10.0,"id":"openai/gpt-6-sol","prompt":2.0},{"cache_read":0.09999999999999999,"cache_write":1.25,"completion":5.0,"id":"openai/gpt-6-sol:batch","prompt":1.0},{"cache_read":0.19999999999999998,"cache_write":5.0,"completion":20.0,"id":"anthropic/claude-opus-5.5","prompt":4.0},{"cache_read":0.09999999999999999,"cache_write":2.5,"completion":10.0,"id":"anthropic/claude-opus-5.5:batch","prompt":2.0},{"cache_read":0.036,"cache_write":0.0,"completion":8.7,"id":"xiaomi/mimo-v2.6-pro-ultraspeed","prompt":4.35},{"cache_read":0.0028,"cache_write":0.0,"completion":0.28,"id":"xiaomi/mimo-v2.6-flash","prompt":0.14},{"cache_read":0.0036,"cache_write":0.0,"completion":0.87,"id":"xiaomi/mimo-v2.6-pro","prompt":0.435},{"cache_read":0.5,"cache_write":0.0,"completion":6.0,"id":"x-ai/grok-4.7","prompt":2.0},{"cache_read":0.39999999999999997,"cache_write":0.0,"completion":4.8,"id":"x-ai/grok-4.7:batch","prompt":1.5999999999999999},{"cache_read":0.016,"cache_write":0.0,"completion":0.47,"id":"qwen/qwen3.8-omni-flash","prompt":0.15},{"cache_read":0.0375,"cache_write":0.0,"completion":0.5,"id":"prism-ml/ternary-bonsai-2-27b","prompt":0.075},{"cache_read":0.075,"cache_write":0.0,"completion":1.25,"id":"z-ai/glm-5.3-flashx","prompt":0.37},{"cache_read":0.0999,"cache_write":0.0,"completion":8.0,"id":"~deepseek/deepseek-pro-latest","prompt":0.0999},{"cache_read":0.005,"cache_write":0.0,"completion":0.5,"id":"~deepseek/deepseek-flash-latest","prompt":0.006},{"cache_read":0.03,"cache_write":0.0,"completion":0.15,"id":"inference-net/schematron-v2-turbo","prompt":0.03},{"cache_read":0.049999999999999996,"cache_write":0.0,"completion":0.22999999999999998,"id":"inference-net/schematron-v2-small","prompt":0.049999999999999996},{"cache_read":1.0,"cache_write":12.5,"completion":50.0,"id":"~openai/gpt-astra-latest","prompt":10.0},{"cache_read":0.09999999999999999,"cache_write":2.5,"completion":10.0,"id":"~openai/gpt-sol-latest","prompt":2.0},{"cache_read":0.049999999999999996,"cache_write":1.25,"completion":5.0,"id":"~openai/gpt-terra-latest","prompt":1.0},{"cache_read":0.01,"cache_write":0.125,"completion":0.5,"id":"~openai/gpt-luna-latest","prompt":0.09999999999999999},{"cache_read":0.5,"cache_write":0.0,"completion":30.0,"id":"sakana/fugu-ultra-v2","prompt":5.0},{"cache_read":0.25,"cache_write":0.0,"completion":6.0,"id":"sakana/fugu-max","prompt":2.0},{"cache_read":0.012,"cache_write":0.0,"completion":0.18,"id":"inclusionai/ling-3.0-flash-vl","prompt":0.06},{"cache_read":0.018,"cache_write":0.0,"completion":0.5670000000000001,"id":"deepseek/deepseek-v4.1-flash","prompt":0.051},{"cache_read":0.00336,"cache_write":0.0,"completion":0.33599999999999997,"id":"deepseek/deepseek-v4.1-flash:batch","prompt":0.112},{"cache_read":0.0025,"cache_write":0.0,"completion":0.09999999999999999,"id":"nex-agi/nex-n2.5-mini","prompt":0.024999999999999998},{"cache_read":0.015,"cache_write":0.0,"completion":0.25,"id":"nex-agi/nex-n2.5-pro","prompt":0.075},{"cache_read":1.0,"cache_write":12.5,"completion":50.0,"id":"openai/gpt-6-astra","prompt":10.0},{"cache_read":0.5,"cache_write":6.25,"completion":25.0,"id":"openai/gpt-6-astra:batch","prompt":5.0},{"cache_read":1.0,"cache_write":12.5,"completion":50.0,"id":"openai/gpt-6-astra-pro","prompt":10.0},{"cache_read":0.5,"cache_write":6.25,"completion":25.0,"id":"openai/gpt-6-astra-pro:batch","prompt":5.0},{"cache_read":0.25,"cache_write":0.0,"completion":6.0,"id":"qwen/qwen3.8-max-0902","prompt":2.0},{"cache_read":0.0,"cache_write":0.0,"completion":3.45,"id":"qwen/qwen3.8-max-0902:batch","prompt":1.15},{"cache_read":0.002,"cache_write":0.0,"completion":0.19999999999999998,"id":"meta/muse-spark-1.3-contributor","prompt":0.09999999999999999},{"cache_read":0.15,"cache_write":0.0,"completion":4.25,"id":"meta/muse-spark-1.3","prompt":1.25},{"cache_read":0.0825,"cache_write":0.0416666666666667,"completion":4.125,"id":"google/gemini-3.8-flash","prompt":0.8250000000000001},{"cache_read":0.0375,"cache_write":0.0416666666666667,"completion":1.875,"id":"google/gemini-3.8-flash:batch","prompt":0.375},{"cache_read":0.25,"cache_write":12.5,"completion":50.0,"id":"anthropic/claude-fable-5.1","prompt":10.0},{"cache_read":0.125,"cache_write":6.25,"completion":25.0,"id":"anthropic/claude-fable-5.1:batch","prompt":5.0},{"cache_read":0.015,"cache_write":0.0,"completion":0.25,"id":"ibm-granite/granite-4.2-8b","prompt":0.06},{"cache_read":0.041999999999999996,"cache_write":0.0,"completion":2.501,"id":"tencent/hy4-preview","prompt":0.834},{"cache_read":0.03,"cache_write":0.0,"completion":0.083,"id":"~z-ai/glm-flash-latest","prompt":0.0335},{"cache_read":0.016,"cache_write":0.0,"completion":0.47,"id":"qwen/qwen3.8-flash","prompt":0.15},{"cache_read":0.03,"cache_write":0.0,"completion":0.5,"id":"z-ai/glm-5.3-flash","prompt":0.15},{"cache_read":0.013000000000000001,"cache_write":0.0,"completion":0.061000000000000006,"id":"z-ai/glm-5.3-flash:batch","prompt":0.03},{"cache_read":0.002,"cache_write":0.0,"completion":0.19999999999999998,"id":"meta/muse-spark-1.2-contributor","prompt":0.09999999999999999},{"cache_read":0.014,"cache_write":0.0,"completion":1.32,"id":"deepseek/deepseek-v4-flash-vision-exp","prompt":0.44},{"cache_read":0.0,"cache_write":0.0,"completion":0.17700000000000002,"id":"tencent/hy-mt2-1.8b","prompt":0.044},{"cache_read":0.0,"cache_write":0.0,"completion":0.295,"id":"tencent/hy-mt2-30b-a3b","prompt":0.074},{"cache_read":0.0689,"cache_write":0.0,"completion":1.4,"id":"~z-ai/glm-latest","prompt":0.0699},{"cache_read":0.0,"cache_write":0.0,"completion":0.295,"id":"tencent/hy-mt2-7b","prompt":0.074},{"cache_read":0.0689,"cache_write":0.0,"completion":1.4,"id":"z-ai/glm-5.3","prompt":0.0699},{"cache_read":0.09999999999999999,"cache_write":0.0,"completion":2.0,"id":"z-ai/glm-5.3:batch","prompt":0.44999999999999996},{"cache_read":0.0375,"cache_write":0.0,"completion":1.875,"id":"qwen/qwen3.8-27b","prompt":0.15},{"cache_read":0.04,"cache_write":0.0,"completion":2.0,"id":"qwen/qwen3.8-27b:batch","prompt":0.16},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"dots-studio/dots-3-note-preview:free","prompt":0.0},{"cache_read":0.075,"cache_write":0.0416666666666667,"completion":3.75,"id":"google/gemini-3.7-flash","prompt":0.75},{"cache_read":0.0375,"cache_write":0.0416666666666667,"completion":1.875,"id":"google/gemini-3.7-flash:batch","prompt":0.375},{"cache_read":0.0,"cache_write":0.0,"completion":2.5,"id":"bytedance-seed/seed-2-1-turbo","prompt":0.5},{"cache_read":0.25,"cache_write":0.0,"completion":6.0,"id":"qwen/qwen3.8-2.4t-a95b","prompt":2.0},{"cache_read":0.0,"cache_write":0.0,"completion":3.0,"id":"bytedance-seed/seed-2.0-code","prompt":0.5},{"cache_read":0.09699999999999999,"cache_write":0.0,"completion":4.4399999999999995,"id":"deepseek/deepseek-v4-pro-0813","prompt":0.111},{"cache_read":0.5,"cache_write":0.0,"completion":6.0,"id":"x-ai/grok-4.6","prompt":2.0},{"cache_read":0.39999999999999997,"cache_write":0.0,"completion":4.8,"id":"x-ai/grok-4.6:batch","prompt":1.5999999999999999},{"cache_read":0.04,"cache_write":0.0,"completion":0.5,"id":"liquid/lfm-2.5-2.6b","prompt":0.35},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"liquid/lfm-2.5-2.6b:free","prompt":0.0},{"cache_read":0.04,"cache_write":0.0,"completion":0.19999999999999998,"id":"nvidia/nemotron-3.5-lightning","prompt":0.07},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"nvidia/nemotron-3.5-lightning:free","prompt":0.0},{"cache_read":0.15,"cache_write":0.0,"completion":4.0,"id":"sakana/sakana-namazu","prompt":0.95},{"cache_read":0.03,"cache_write":0.0,"completion":0.6,"id":"upstage/solar-pro4","prompt":0.15},{"cache_read":0.04,"cache_write":0.0,"completion":1.2,"id":"meta/muse-glimmer-30b","prompt":0.3},{"cache_read":0.032,"cache_write":0.0,"completion":0.96,"id":"meta/muse-glimmer-30b:batch","prompt":0.24},{"cache_read":0.003,"cache_write":0.0,"completion":0.045,"id":"inclusionai/ling-3.0-tiny","prompt":0.015},{"cache_read":0.15,"cache_write":0.0,"completion":4.25,"id":"meta/muse-spark-1.2","prompt":1.25},{"cache_read":0.035,"cache_write":0.0,"completion":0.3,"id":"~deepseek/deepseek-v4-flash-latest","prompt":0.0434},{"cache_read":0.035,"cache_write":0.0,"completion":0.3,"id":"deepseek/deepseek-v4-flash-0731","prompt":0.0434},{"cache_read":0.012,"cache_write":0.0,"completion":0.144,"id":"deepseek/deepseek-v4-flash-0731:batch","prompt":0.048},{"cache_read":0.09999999999999999,"cache_write":0.0,"completion":1.2,"id":"thinkingmachines/inkling-small","prompt":0.44999999999999996},{"cache_read":0.08,"cache_write":0.0,"completion":0.96,"id":"thinkingmachines/inkling-small:batch","prompt":0.36},{"cache_read":0.006,"cache_write":0.038000000000000006,"completion":0.13,"id":"qwen/qwen3.7-flash","prompt":0.03},{"cache_read":0.5,"cache_write":6.25,"completion":25.0,"id":"anthropic/claude-opus-5","prompt":5.0},{"cache_read":0.25,"cache_write":3.125,"completion":12.5,"id":"anthropic/claude-opus-5:batch","prompt":2.5},{"cache_read":0.004200000000000001,"cache_write":0.0,"completion":0.063,"id":"inclusionai/ling-3.0-flash","prompt":0.020999999999999998},{"cache_read":0.075,"cache_write":0.0416666666666667,"completion":3.75,"id":"google/gemini-3.6-flash","prompt":0.75},{"cache_read":0.0375,"cache_write":0.0416666666666667,"completion":1.875,"id":"google/gemini-3.6-flash:batch","prompt":0.375},{"cache_read":0.03,"cache_write":0.0833333333333333,"completion":2.5,"id":"google/gemini-3.5-flash-lite","prompt":0.3},{"cache_read":0.015,"cache_write":0.0,"completion":1.25,"id":"google/gemini-3.5-flash-lite:batch","prompt":0.15},{"cache_read":0.006,"cache_write":0.0,"completion":1.2,"id":"meituan/longcat-2.0","prompt":0.3},{"cache_read":0.16999999999999998,"cache_write":0.0,"completion":4.05,"id":"thinkingmachines/inkling","prompt":1.0},{"cache_read":0.182,"cache_write":0.0,"completion":16.0,"id":"moonshotai/kimi-k3","prompt":0.192},{"cache_read":0.228,"cache_write":0.0,"completion":11.399999999999999,"id":"moonshotai/kimi-k3:batch","prompt":2.2800000000000002},{"cache_read":0.15,"cache_write":0.0,"completion":4.25,"id":"meta/muse-spark-1.1","prompt":1.25},{"cache_read":0.02,"cache_write":0.25,"completion":1.2,"id":"openai/gpt-5.6-luna-pro","prompt":0.19999999999999998},{"cache_read":0.01,"cache_write":0.0,"completion":0.6,"id":"openai/gpt-5.6-luna-pro:batch","prompt":0.09999999999999999},{"cache_read":0.02,"cache_write":0.25,"completion":1.2,"id":"openai/gpt-5.6-luna","prompt":0.19999999999999998},{"cache_read":0.01,"cache_write":0.0,"completion":0.6,"id":"openai/gpt-5.6-luna:batch","prompt":0.09999999999999999},{"cache_read":0.19999999999999998,"cache_write":2.5,"completion":12.0,"id":"openai/gpt-5.6-terra-pro","prompt":2.0},{"cache_read":0.09999999999999999,"cache_write":0.0,"completion":6.0,"id":"openai/gpt-5.6-terra-pro:batch","prompt":1.0},{"cache_read":0.19999999999999998,"cache_write":2.5,"completion":12.0,"id":"openai/gpt-5.6-terra","prompt":2.0},{"cache_read":0.09999999999999999,"cache_write":0.0,"completion":6.0,"id":"openai/gpt-5.6-terra:batch","prompt":1.0},{"cache_read":0.39999999999999997,"cache_write":5.0,"completion":20.0,"id":"openai/gpt-5.6-sol-pro","prompt":4.0},{"cache_read":0.19999999999999998,"cache_write":2.5,"completion":10.0,"id":"openai/gpt-5.6-sol-pro:batch","prompt":2.0},{"cache_read":0.39999999999999997,"cache_write":5.0,"completion":20.0,"id":"openai/gpt-5.6-sol","prompt":4.0},{"cache_read":0.19999999999999998,"cache_write":2.5,"completion":10.0,"id":"openai/gpt-5.6-sol:batch","prompt":2.0},{"cache_read":0.3,"cache_write":0.0,"completion":6.0,"id":"x-ai/grok-4.5","prompt":2.0},{"cache_read":0.5,"cache_write":0.0,"completion":6.0,"id":"~x-ai/grok-latest","prompt":2.0},{"cache_read":0.18,"cache_write":0.0,"completion":1.4,"id":"aion-labs/aion-3.0-mini","prompt":0.7},{"cache_read":0.75,"cache_write":0.0,"completion":6.0,"id":"aion-labs/aion-3.0","prompt":3.0},{"cache_read":0.032999999999999995,"cache_write":0.0,"completion":0.5279999999999999,"id":"tencent/hy3","prompt":0.13199999999999998},{"cache_read":0.19999999999999998,"cache_write":2.5,"completion":10.0,"id":"anthropic/claude-sonnet-5","prompt":2.0},{"cache_read":0.09999999999999999,"cache_write":1.25,"completion":5.0,"id":"anthropic/claude-sonnet-5:batch","prompt":1.0},{"cache_read":0.0,"cache_write":0.0,"completion":1.5,"id":"google/gemini-3.1-flash-lite-image","prompt":0.25},{"cache_read":0.5,"cache_write":0.0,"completion":30.0,"id":"sakana/fugu-ultra","prompt":5.0},{"cache_read":0.0,"cache_write":0.0,"completion":3.0,"id":"google/gemini-3.1-flash-image","prompt":0.5},{"cache_read":0.19999999999999998,"cache_write":0.375,"completion":12.0,"id":"google/gemini-3-pro-image","prompt":2.0},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"cohere/north-mini-code:free","prompt":0.0},{"cache_read":0.005,"cache_write":0.0,"completion":6.8,"id":"z-ai/glm-5.2","prompt":0.006},{"cache_read":0.19399999999999998,"cache_write":0.0,"completion":1.169,"id":"z-ai/glm-5.2:batch","prompt":0.573},{"cache_read":0.16,"cache_write":0.0,"completion":3.5,"id":"moonshotai/kimi-k2.7-code","prompt":0.6},{"cache_read":0.19999999999999998,"cache_write":10.0,"completion":40.0,"id":"~anthropic/claude-fable-latest","prompt":8.0},{"cache_read":1.0,"cache_write":12.5,"completion":50.0,"id":"anthropic/claude-fable-5","prompt":10.0},{"cache_read":0.5,"cache_write":6.25,"completion":25.0,"id":"anthropic/claude-fable-5:batch","prompt":5.0},{"cache_read":0.0,"cache_write":0.0,"completion":0.19999999999999998,"id":"nvidia/nemotron-3.5-content-safety","prompt":0.19999999999999998},{"cache_read":0.12,"cache_write":0.0,"completion":2.4,"id":"nvidia/nemotron-3-ultra-550b-a55b","prompt":0.6},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"nvidia/nemotron-3-ultra-550b-a55b:free","prompt":0.0},{"cache_read":0.064,"cache_write":0.39999999999999997,"completion":1.28,"id":"qwen/qwen3.7-plus","prompt":0.32},{"cache_read":0.0,"cache_write":0.0,"completion":0.9199999999999999,"id":"qwen/qwen3.7-plus:batch","prompt":0.22999999999999998},{"cache_read":0.06,"cache_write":0.0,"completion":1.2,"id":"minimax/minimax-m3","prompt":0.3},{"cache_read":0.0448,"cache_write":0.0,"completion":0.88,"id":"minimax/minimax-m3:batch","prompt":0.224},{"cache_read":0.04,"cache_write":0.0,"completion":1.15,"id":"stepfun/step-3.7-flash","prompt":0.19999999999999998},{"cache_read":0.5,"cache_write":6.25,"completion":25.0,"id":"anthropic/claude-opus-4.8","prompt":5.0},{"cache_read":0.25,"cache_write":3.125,"completion":12.5,"id":"anthropic/claude-opus-4.8:batch","prompt":2.5},{"cache_read":0.295,"cache_write":1.84375,"completion":4.425,"id":"qwen/qwen3.7-max","prompt":1.475},{"cache_read":0.19999999999999998,"cache_write":0.0,"completion":2.0,"id":"x-ai/grok-build-0.1","prompt":1.0},{"cache_read":0.15,"cache_write":0.0833333333333333,"completion":9.0,"id":"google/gemini-3.5-flash","prompt":1.5},{"cache_read":0.075,"cache_write":0.0,"completion":4.5,"id":"google/gemini-3.5-flash:batch","prompt":0.75},{"cache_read":0.0,"cache_write":0.0,"completion":1.5,"id":"perceptron/perceptron-mk1","prompt":0.15},{"cache_read":0.024999999999999998,"cache_write":0.0833333333333333,"completion":1.5,"id":"google/gemini-3.1-flash-lite","prompt":0.25},{"cache_read":0.012499999999999999,"cache_write":0.0,"completion":0.75,"id":"google/gemini-3.1-flash-lite:batch","prompt":0.125},{"cache_read":0.5,"cache_write":0.0,"completion":30.0,"id":"openai/gpt-chat-latest","prompt":5.0},{"cache_read":0.19999999999999998,"cache_write":0.0,"completion":2.5,"id":"x-ai/grok-4.3","prompt":1.25},{"cache_read":0.16,"cache_write":0.0,"completion":2.0,"id":"x-ai/grok-4.3:batch","prompt":1.0},{"cache_read":0.0,"cache_write":0.0,"completion":7.5,"id":"mistralai/mistral-medium-3-5","prompt":1.5},{"cache_read":0.0,"cache_write":0.0,"completion":3.75,"id":"mistralai/mistral-medium-3-5:batch","prompt":0.75},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free","prompt":0.0},{"cache_read":0.01,"cache_write":0.125,"completion":0.5,"id":"~anthropic/claude-haiku-latest","prompt":0.09999999999999999},{"cache_read":0.075,"cache_write":0.0,"completion":4.5,"id":"~openai/gpt-mini-latest","prompt":0.75},{"cache_read":0.09999999999999999,"cache_write":0.1875,"completion":10.0,"id":"~google/gemini-pro-latest","prompt":2.0},{"cache_read":0.15,"cache_write":0.0,"completion":9.7471,"id":"~moonshotai/kimi-latest","prompt":0.1529},{"cache_read":0.075,"cache_write":0.0416666666666667,"completion":3.75,"id":"~google/gemini-flash-latest","prompt":0.75},{"cache_read":0.09999999999999999,"cache_write":2.5,"completion":10.0,"id":"~anthropic/claude-sonnet-latest","prompt":2.0},{"cache_read":0.0,"cache_write":0.375,"completion":1.7999999999999998,"id":"qwen/qwen3.5-plus-20260420","prompt":0.3},{"cache_read":0.0,"cache_write":0.234375,"completion":1.125,"id":"qwen/qwen3.6-flash","prompt":0.1875},{"cache_read":0.024999999999999998,"cache_write":0.0,"completion":0.8999999999999999,"id":"qwen/qwen3.6-35b-a3b","prompt":0.09999999999999999},{"cache_read":0.0,"cache_write":0.0,"completion":3.1999999999999997,"id":"qwen/qwen3.6-27b","prompt":0.32},{"cache_read":0.0,"cache_write":0.0,"completion":180.0,"id":"openai/gpt-5.5-pro","prompt":30.0},{"cache_read":0.0,"cache_write":0.0,"completion":90.0,"id":"openai/gpt-5.5-pro:batch","prompt":15.0},{"cache_read":0.5,"cache_write":0.0,"completion":30.0,"id":"openai/gpt-5.5","prompt":5.0},{"cache_read":0.25,"cache_write":0.0,"completion":15.0,"id":"openai/gpt-5.5:batch","prompt":2.5},{"cache_read":0.07960500000000001,"cache_write":0.0,"completion":1.9105199999999998,"id":"deepseek/deepseek-v4-pro","prompt":0.9552599999999999},{"cache_read":0.0182,"cache_write":0.0,"completion":0.182,"id":"deepseek/deepseek-v4-flash","prompt":0.091},{"cache_read":0.06,"cache_write":0.0,"completion":0.6,"id":"tencent/hy3-preview","prompt":0.18},{"cache_read":0.096,"cache_write":0.0,"completion":1.7999999999999998,"id":"xiaomi/mimo-v2.5-pro","prompt":0.48},{"cache_read":0.08,"cache_write":0.0,"completion":2.0,"id":"xiaomi/mimo-v2.5","prompt":0.39999999999999997},{"cache_read":2.0,"cache_write":0.0,"completion":15.0,"id":"openai/gpt-5.4-image-2","prompt":8.0},{"cache_read":0.19999999999999998,"cache_write":5.0,"completion":20.0,"id":"~anthropic/claude-opus-latest","prompt":4.0},{"cache_read":0.15,"cache_write":0.0,"completion":3.41,"id":"moonshotai/kimi-k2.6","prompt":0.65},{"cache_read":0.5,"cache_write":6.25,"completion":25.0,"id":"anthropic/claude-opus-4.7","prompt":5.0},{"cache_read":0.25,"cache_write":3.125,"completion":12.5,"id":"anthropic/claude-opus-4.7:batch","prompt":2.5},{"cache_read":0.26,"cache_write":0.0,"completion":4.4,"id":"z-ai/glm-5.1","prompt":1.4},{"cache_read":0.046,"cache_write":0.0,"completion":0.09999999999999999,"id":"google/gemma-4-26b-a4b-it","prompt":0.08},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"google/gemma-4-26b-a4b-it:free","prompt":0.0},{"cache_read":0.0,"cache_write":0.0,"completion":0.39999999999999997,"id":"google/gemma-4-31b-it","prompt":0.19999999999999998},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"google/gemma-4-31b-it:free","prompt":0.0},{"cache_read":0.0,"cache_write":0.40625,"completion":1.95,"id":"qwen/qwen3.6-plus","prompt":0.325},{"cache_read":0.24,"cache_write":0.0,"completion":4.0,"id":"z-ai/glm-5v-turbo","prompt":1.2},{"cache_read":0.19999999999999998,"cache_write":0.0,"completion":2.5,"id":"x-ai/grok-4.20-multi-agent","prompt":1.25},{"cache_read":0.19999999999999998,"cache_write":0.0,"completion":2.5,"id":"x-ai/grok-4.20","prompt":1.25},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"google/lyria-3-pro-preview","prompt":0.0},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"google/lyria-3-clip-preview","prompt":0.0},{"cache_read":0.0,"cache_write":0.0,"completion":0.09999999999999999,"id":"rekaai/reka-edge","prompt":0.09999999999999999},{"cache_read":0.041999999999999996,"cache_write":0.0,"completion":0.84,"id":"minimax/minimax-m2.7","prompt":0.21},{"cache_read":0.02,"cache_write":0.0,"completion":1.25,"id":"openai/gpt-5.4-nano","prompt":0.19999999999999998},{"cache_read":0.01,"cache_write":0.0,"completion":0.625,"id":"openai/gpt-5.4-nano:batch","prompt":0.09999999999999999},{"cache_read":0.075,"cache_write":0.0,"completion":4.5,"id":"openai/gpt-5.4-mini","prompt":0.75},{"cache_read":0.0375,"cache_write":0.0,"completion":2.25,"id":"openai/gpt-5.4-mini:batch","prompt":0.375},{"cache_read":0.015,"cache_write":0.0,"completion":0.6,"id":"mistralai/mistral-small-2603","prompt":0.15},{"cache_read":0.24,"cache_write":0.0,"completion":4.0,"id":"z-ai/glm-5-turbo","prompt":1.2},{"cache_read":0.0,"cache_write":0.0,"completion":0.39999999999999997,"id":"nvidia/nemotron-3-super-120b-a12b","prompt":0.075},{"cache_read":0.0,"cache_write":0.0,"completion":2.0,"id":"bytedance-seed/seed-2.0-lite","prompt":0.25},{"cache_read":0.0,"cache_write":0.0,"completion":0.25,"id":"qwen/qwen3.5-9b","prompt":0.16999999999999998},{"cache_read":0.0,"cache_write":0.0,"completion":180.0,"id":"openai/gpt-5.4-pro","prompt":30.0},{"cache_read":0.0,"cache_write":0.0,"completion":90.0,"id":"openai/gpt-5.4-pro:batch","prompt":15.0},{"cache_read":0.25,"cache_write":0.0,"completion":15.0,"id":"openai/gpt-5.4","prompt":2.5},{"cache_read":0.125,"cache_write":0.0,"completion":7.5,"id":"openai/gpt-5.4:batch","prompt":1.25},{"cache_read":0.024999999999999998,"cache_write":0.0833333333333333,"completion":1.5,"id":"google/gemini-3.1-flash-lite-preview","prompt":0.25},{"cache_read":0.0,"cache_write":0.0,"completion":0.39999999999999997,"id":"bytedance-seed/seed-2.0-mini","prompt":0.09999999999999999},{"cache_read":0.0,"cache_write":0.0,"completion":3.0,"id":"google/gemini-3.1-flash-image-preview","prompt":0.5},{"cache_read":0.049999999999999996,"cache_write":0.0,"completion":1.0,"id":"qwen/qwen3.5-35b-a3b","prompt":0.14},{"cache_read":0.0,"cache_write":0.0,"completion":2.6,"id":"qwen/qwen3.5-27b","prompt":0.26},{"cache_read":0.0,"cache_write":0.0,"completion":2.08,"id":"qwen/qwen3.5-122b-a10b","prompt":0.26},{"cache_read":0.0,"cache_write":0.0,"completion":0.26,"id":"qwen/qwen3.5-flash-02-23","prompt":0.065},{"cache_read":0.19999999999999998,"cache_write":0.375,"completion":12.0,"id":"google/gemini-3.1-pro-preview-customtools","prompt":2.0},{"cache_read":0.175,"cache_write":0.0,"completion":14.0,"id":"openai/gpt-5.3-codex","prompt":1.75},{"cache_read":0.19999999999999998,"cache_write":0.0,"completion":1.5999999999999999,"id":"aion-labs/aion-2.0","prompt":0.7999999999999999},{"cache_read":0.19999999999999998,"cache_write":0.375,"completion":12.0,"id":"google/gemini-3.1-pro-preview","prompt":2.0},{"cache_read":0.0,"cache_write":0.0,"completion":6.0,"id":"google/gemini-3.1-pro-preview:batch","prompt":1.0},{"cache_read":0.3,"cache_write":3.75,"completion":15.0,"id":"anthropic/claude-sonnet-4.6","prompt":3.0},{"cache_read":0.15,"cache_write":1.875,"completion":7.5,"id":"anthropic/claude-sonnet-4.6:batch","prompt":1.5},{"cache_read":0.0,"cache_write":0.0,"completion":1.56,"id":"qwen/qwen3.5-plus-02-15","prompt":0.26},{"cache_read":0.12,"cache_write":0.0,"completion":3.5999999999999996,"id":"qwen/qwen3.5-397b-a17b","prompt":0.6},{"cache_read":0.06,"cache_write":0.0,"completion":1.2,"id":"minimax/minimax-m2.5","prompt":0.3},{"cache_read":0.19999999999999998,"cache_write":0.0,"completion":3.1999999999999997,"id":"z-ai/glm-5","prompt":1.0},{"cache_read":0.5,"cache_write":6.25,"completion":25.0,"id":"anthropic/claude-opus-4.6","prompt":5.0},{"cache_read":0.25,"cache_write":3.125,"completion":12.5,"id":"anthropic/claude-opus-4.6:batch","prompt":2.5},{"cache_read":0.07,"cache_write":0.0,"completion":0.7999999999999999,"id":"qwen/qwen3-coder-next","prompt":0.12},{"cache_read":0.0,"cache_write":0.0,"completion":0.3,"id":"stepfun/step-3.5-flash","prompt":0.09999999999999999},{"cache_read":0.20900000000000002,"cache_write":0.0,"completion":3.3249999999999997,"id":"moonshotai/kimi-k2.5","prompt":0.532},{"cache_read":0.0,"cache_write":0.0,"completion":6.0,"id":"writer/palmyra-x5","prompt":0.6},{"cache_read":0.0,"cache_write":0.0,"completion":10.0,"id":"openai/gpt-audio","prompt":2.5},{"cache_read":0.0,"cache_write":0.0,"completion":2.4,"id":"openai/gpt-audio-mini","prompt":0.6},{"cache_read":0.0,"cache_write":0.0,"completion":0.39999999999999997,"id":"z-ai/glm-4.7-flash","prompt":0.060500000000000005},{"cache_read":0.175,"cache_write":0.0,"completion":14.0,"id":"openai/gpt-5.2-codex","prompt":1.75},{"cache_read":0.0,"cache_write":0.0,"completion":0.3,"id":"bytedance-seed/seed-1.6-flash","prompt":0.075},{"cache_read":0.0,"cache_write":0.0,"completion":2.0,"id":"bytedance-seed/seed-1.6","prompt":0.25},{"cache_read":0.11,"cache_write":0.0,"completion":2.2,"id":"z-ai/glm-4.7","prompt":0.6},{"cache_read":0.049999999999999996,"cache_write":0.0833333333333333,"completion":3.0,"id":"google/gemini-3-flash-preview","prompt":0.5},{"cache_read":0.0,"cache_write":0.0,"completion":1.5,"id":"google/gemini-3-flash-preview:batch","prompt":0.25},{"cache_read":0.012,"cache_write":0.0,"completion":0.24,"id":"nvidia/nemotron-3-nano-30b-a3b","prompt":0.06},{"cache_read":0.175,"cache_write":0.0,"completion":14.0,"id":"openai/gpt-5.2-chat","prompt":1.75},{"cache_read":0.0,"cache_write":0.0,"completion":168.0,"id":"openai/gpt-5.2-pro","prompt":21.0},{"cache_read":0.0,"cache_write":0.0,"completion":84.0,"id":"openai/gpt-5.2-pro:batch","prompt":10.5},{"cache_read":0.175,"cache_write":0.0,"completion":14.0,"id":"openai/gpt-5.2","prompt":1.75},{"cache_read":0.0875,"cache_write":0.0,"completion":7.0,"id":"openai/gpt-5.2:batch","prompt":0.875},{"cache_read":0.04,"cache_write":0.0,"completion":2.0,"id":"mistralai/devstral-2512","prompt":0.39999999999999997},{"cache_read":0.0,"cache_write":0.0,"completion":3.0,"id":"relace/relace-search","prompt":1.0},{"cache_read":0.055,"cache_write":0.0,"completion":0.8999999999999999,"id":"z-ai/glm-4.6v","prompt":0.3},{"cache_read":0.125,"cache_write":0.0,"completion":10.0,"id":"openai/gpt-5.1-codex-max","prompt":1.25},{"cache_read":0.0,"cache_write":0.0,"completion":2.5,"id":"amazon/nova-2-lite-v1","prompt":0.3},{"cache_read":0.02,"cache_write":0.0,"completion":0.19999999999999998,"id":"mistralai/ministral-14b-2512","prompt":0.19999999999999998},{"cache_read":0.015,"cache_write":0.0,"completion":0.15,"id":"mistralai/ministral-8b-2512","prompt":0.15},{"cache_read":0.01,"cache_write":0.0,"completion":0.09999999999999999,"id":"mistralai/ministral-3b-2512","prompt":0.09999999999999999},{"cache_read":0.049999999999999996,"cache_write":0.0,"completion":1.5,"id":"mistralai/mistral-large-2512","prompt":0.5},{"cache_read":0.13,"cache_write":0.0,"completion":0.38,"id":"deepseek/deepseek-v3.2","prompt":0.26},{"cache_read":0.5,"cache_write":6.25,"completion":25.0,"id":"anthropic/claude-opus-4.5","prompt":5.0},{"cache_read":0.25,"cache_write":3.125,"completion":12.5,"id":"anthropic/claude-opus-4.5:batch","prompt":2.5},{"cache_read":0.19999999999999998,"cache_write":0.375,"completion":12.0,"id":"google/gemini-3-pro-image-preview","prompt":2.0},{"cache_read":0.125,"cache_write":0.0,"completion":10.0,"id":"openai/gpt-5.1","prompt":1.25},{"cache_read":0.0625,"cache_write":0.0,"completion":5.0,"id":"openai/gpt-5.1:batch","prompt":0.625},{"cache_read":0.13,"cache_write":0.0,"completion":10.0,"id":"openai/gpt-5.1-codex","prompt":1.25},{"cache_read":0.03,"cache_write":0.0,"completion":2.0,"id":"openai/gpt-5.1-codex-mini","prompt":0.25},{"cache_read":0.15,"cache_write":0.0,"completion":2.5,"id":"moonshotai/kimi-k2-thinking","prompt":0.6},{"cache_read":0.625,"cache_write":0.0,"completion":12.5,"id":"amazon/nova-premier-v1","prompt":2.5},{"cache_read":0.0,"cache_write":0.0,"completion":15.0,"id":"perplexity/sonar-pro-search","prompt":3.0},{"cache_read":0.01,"cache_write":0.0,"completion":0.3,"id":"mistralai/voxtral-small-24b-2507","prompt":0.09999999999999999},{"cache_read":0.0375,"cache_write":0.0,"completion":0.3,"id":"openai/gpt-oss-safeguard-20b","prompt":0.075},{"cache_read":0.25,"cache_write":0.0,"completion":2.0,"id":"openai/gpt-5-image-mini","prompt":2.5},{"cache_read":0.09999999999999999,"cache_write":1.25,"completion":5.0,"id":"anthropic/claude-haiku-4.5","prompt":1.0},{"cache_read":0.049999999999999996,"cache_write":0.625,"completion":2.5,"id":"anthropic/claude-haiku-4.5:batch","prompt":0.5},{"cache_read":0.12,"cache_write":0.0,"completion":0.75,"id":"qwen/qwen3-vl-8b-instruct","prompt":0.25},{"cache_read":1.25,"cache_write":0.0,"completion":10.0,"id":"openai/gpt-5-image","prompt":10.0},{"cache_read":0.03,"cache_write":0.0833333333333333,"completion":2.5,"id":"google/gemini-2.5-flash-image","prompt":0.3},{"cache_read":0.0,"cache_write":0.0,"completion":1.0,"id":"qwen/qwen3-vl-30b-a3b-thinking","prompt":0.29},{"cache_read":0.0,"cache_write":0.0,"completion":0.6,"id":"qwen/qwen3-vl-30b-a3b-instruct","prompt":0.15},{"cache_read":0.0,"cache_write":0.0,"completion":120.0,"id":"openai/gpt-5-pro","prompt":15.0},{"cache_read":0.0,"cache_write":0.0,"completion":60.0,"id":"openai/gpt-5-pro:batch","prompt":7.5},{"cache_read":0.09999999999999999,"cache_write":0.0,"completion":2.0,"id":"z-ai/glm-4.6","prompt":0.5},{"cache_read":0.3,"cache_write":3.75,"completion":15.0,"id":"anthropic/claude-sonnet-4.5","prompt":3.0},{"cache_read":0.15,"cache_write":1.875,"completion":7.5,"id":"anthropic/claude-sonnet-4.5:batch","prompt":1.5},{"cache_read":0.0,"cache_write":0.0,"completion":0.41,"id":"deepseek/deepseek-v3.2-exp","prompt":0.27},{"cache_read":0.15,"cache_write":0.0,"completion":0.5,"id":"thedrummer/cydonia-24b-v4.1","prompt":0.3},{"cache_read":0.0,"cache_write":0.0,"completion":1.25,"id":"relace/relace-apply-3","prompt":0.85},{"cache_read":0.09999999999999999,"cache_write":0.0,"completion":1.9,"id":"qwen/qwen3-vl-235b-a22b-instruct","prompt":0.21},{"cache_read":0.0,"cache_write":0.0,"completion":1.0,"id":"deepseek/deepseek-v3.1-terminus","prompt":0.27},{"cache_read":0.039,"cache_write":0.24375,"completion":0.975,"id":"qwen/qwen3-coder-flash","prompt":0.195},{"cache_read":0.0,"cache_write":0.0,"completion":1.1,"id":"qwen/qwen3-next-80b-a3b-instruct","prompt":0.09},{"cache_read":0.0,"cache_write":0.0,"completion":2.5,"id":"moonshotai/kimi-k2-0905","prompt":0.6},{"cache_read":0.19999999999999998,"cache_write":0.0,"completion":3.0,"id":"nousresearch/hermes-4-405b","prompt":1.0},{"cache_read":0.13,"cache_write":0.0,"completion":0.95,"id":"deepseek/deepseek-chat-v3.1","prompt":0.25},{"cache_read":0.04,"cache_write":0.0,"completion":2.0,"id":"mistralai/mistral-medium-3.1","prompt":0.39999999999999997},{"cache_read":0.11,"cache_write":0.0,"completion":1.7999999999999998,"id":"z-ai/glm-4.5v","prompt":0.6},{"cache_read":0.125,"cache_write":0.0,"completion":10.0,"id":"openai/gpt-5","prompt":1.25},{"cache_read":0.0625,"cache_write":0.0,"completion":5.0,"id":"openai/gpt-5:batch","prompt":0.625},{"cache_read":0.024999999999999998,"cache_write":0.0,"completion":2.0,"id":"openai/gpt-5-mini","prompt":0.25},{"cache_read":0.012499999999999999,"cache_write":0.0,"completion":1.0,"id":"openai/gpt-5-mini:batch","prompt":0.125},{"cache_read":0.005,"cache_write":0.0,"completion":0.39999999999999997,"id":"openai/gpt-5-nano","prompt":0.049999999999999996},{"cache_read":0.0025,"cache_write":0.0,"completion":0.19999999999999998,"id":"openai/gpt-5-nano:batch","prompt":0.024999999999999998},{"cache_read":0.075,"cache_write":0.0,"completion":0.6,"id":"openai/gpt-oss-120b","prompt":0.15},{"cache_read":0.0,"cache_write":0.0,"completion":0.136,"id":"openai/gpt-oss-120b:batch","prompt":0.0296},{"cache_read":0.03,"cache_write":0.0,"completion":0.13,"id":"openai/gpt-oss-20b","prompt":0.03},{"cache_read":0.0,"cache_write":0.0,"completion":0.112,"id":"openai/gpt-oss-20b:batch","prompt":0.024},{"cache_read":1.5,"cache_write":18.75,"completion":75.0,"id":"anthropic/claude-opus-4.1","prompt":15.0},{"cache_read":0.75,"cache_write":9.375,"completion":37.5,"id":"anthropic/claude-opus-4.1:batch","prompt":7.5},{"cache_read":0.03,"cache_write":0.0,"completion":0.8999999999999999,"id":"mistralai/codestral-2508","prompt":0.3},{"cache_read":0.0,"cache_write":0.0,"completion":0.6,"id":"qwen/qwen3-coder-30b-a3b-instruct","prompt":0.15},{"cache_read":0.09999999999999999,"cache_write":0.0,"completion":0.3,"id":"qwen/qwen3-30b-a3b-instruct-2507","prompt":0.09999999999999999},{"cache_read":0.11,"cache_write":0.0,"completion":2.2,"id":"z-ai/glm-4.5","prompt":0.6},{"cache_read":0.03,"cache_write":0.0,"completion":1.1,"id":"z-ai/glm-4.5-air","prompt":0.19999999999999998},{"cache_read":0.0,"cache_write":0.0,"completion":3.5,"id":"qwen/qwen3-235b-a22b-thinking-2507","prompt":0.44999999999999996},{"cache_read":0.09999999999999999,"cache_write":0.0,"completion":1.0,"id":"qwen/qwen3-coder","prompt":0.3},{"cache_read":0.09999999999999999,"cache_write":0.0,"completion":0.19999999999999998,"id":"bytedance/ui-tars-1.5-7b","prompt":0.09999999999999999},{"cache_read":0.01,"cache_write":0.0833333333333333,"completion":0.39999999999999997,"id":"google/gemini-2.5-flash-lite","prompt":0.09999999999999999},{"cache_read":0.049999999999999996,"cache_write":0.0,"completion":0.7999999999999999,"id":"qwen/qwen3-235b-a22b-2507","prompt":0.14},{"cache_read":0.0,"cache_write":0.0,"completion":2.3,"id":"moonshotai/kimi-k2","prompt":0.5700000000000001},{"cache_read":0.0,"cache_write":0.0,"completion":0.8999999999999999,"id":"cognitivecomputations/dolphin-mistral-24b-venice-edition","prompt":0.19999999999999998},{"cache_read":0.0,"cache_write":0.0,"completion":0.5700000000000001,"id":"tencent/hunyuan-a13b-instruct","prompt":0.14},{"cache_read":0.0,"cache_write":0.0,"completion":1.9,"id":"morph/morph-v3-large","prompt":0.8999999999999999},{"cache_read":0.0,"cache_write":0.0,"completion":0.95,"id":"morph/morph-v3-large:batch","prompt":0.44999999999999996},{"cache_read":0.0,"cache_write":0.0,"completion":1.2,"id":"morph/morph-v3-fast","prompt":0.7999999999999999},{"cache_read":0.0,"cache_write":0.0,"completion":0.6,"id":"morph/morph-v3-fast:batch","prompt":0.39999999999999997},{"cache_read":0.01,"cache_write":0.0,"completion":0.3,"id":"mistralai/mistral-small-3.2-24b-instruct","prompt":0.09999999999999999},{"cache_read":0.03,"cache_write":0.0833333333333333,"completion":2.5,"id":"google/gemini-2.5-flash","prompt":0.3},{"cache_read":0.125,"cache_write":0.375,"completion":10.0,"id":"google/gemini-2.5-pro","prompt":1.25},{"cache_read":0.0,"cache_write":0.0,"completion":80.0,"id":"openai/o3-pro","prompt":20.0},{"cache_read":0.125,"cache_write":0.375,"completion":10.0,"id":"google/gemini-2.5-pro-preview","prompt":1.25},{"cache_read":0.35,"cache_write":0.0,"completion":2.1500000000000004,"id":"deepseek/deepseek-r1-0528","prompt":0.5},{"cache_read":0.04,"cache_write":0.0,"completion":2.0,"id":"mistralai/mistral-medium-3","prompt":0.39999999999999997},{"cache_read":0.0,"cache_write":0.0,"completion":0.18,"id":"meta-llama/llama-guard-4-12b","prompt":0.18},{"cache_read":0.0,"cache_write":0.0,"completion":0.5,"id":"qwen/qwen3-30b-a3b","prompt":0.12},{"cache_read":0.0,"cache_write":0.0,"completion":0.22,"id":"qwen/qwen3-14b","prompt":0.09999999999999999},{"cache_read":0.0,"cache_write":0.0,"completion":0.28,"id":"qwen/qwen3-32b","prompt":0.08},{"cache_read":0.5,"cache_write":0.0,"completion":8.0,"id":"openai/o3","prompt":2.0},{"cache_read":0.25,"cache_write":0.0,"completion":4.0,"id":"openai/o3:batch","prompt":1.0},{"cache_read":0.1375,"cache_write":0.0,"completion":2.2,"id":"openai/o4-mini:batch","prompt":0.55},{"cache_read":0.5,"cache_write":0.0,"completion":8.0,"id":"openai/gpt-4.1","prompt":2.0},{"cache_read":0.25,"cache_write":0.0,"completion":4.0,"id":"openai/gpt-4.1:batch","prompt":1.0},{"cache_read":0.09999999999999999,"cache_write":0.0,"completion":1.5999999999999999,"id":"openai/gpt-4.1-mini","prompt":0.39999999999999997},{"cache_read":0.049999999999999996,"cache_write":0.0,"completion":0.7999999999999999,"id":"openai/gpt-4.1-mini:batch","prompt":0.19999999999999998},{"cache_read":0.03,"cache_write":0.0,"completion":0.39999999999999997,"id":"openai/gpt-4.1-nano","prompt":0.09999999999999999},{"cache_read":0.012499999999999999,"cache_write":0.0,"completion":0.19999999999999998,"id":"openai/gpt-4.1-nano:batch","prompt":0.049999999999999996},{"cache_read":0.16999999999999998,"cache_write":0.0,"completion":1.0,"id":"meta-llama/llama-4-maverick","prompt":0.35},{"cache_read":0.0,"cache_write":0.0,"completion":0.3,"id":"meta-llama/llama-4-scout","prompt":0.09999999999999999},{"cache_read":0.11,"cache_write":0.0,"completion":1.1400000000000001,"id":"deepseek/deepseek-chat-v3-0324","prompt":0.29},{"cache_read":0.0,"cache_write":0.0,"completion":0.5549999999999999,"id":"mistralai/mistral-small-3.1-24b-instruct","prompt":0.351},{"cache_read":0.0,"cache_write":0.0,"completion":0.09999999999999999,"id":"google/gemma-3-4b-it","prompt":0.049999999999999996},{"cache_read":0.0,"cache_write":0.0,"completion":0.15,"id":"google/gemma-3-12b-it","prompt":0.049999999999999996},{"cache_read":0.0,"cache_write":0.0,"completion":10.0,"id":"cohere/command-a","prompt":2.5},{"cache_read":0.0,"cache_write":0.0,"completion":0.19999999999999998,"id":"rekaai/reka-flash-3","prompt":0.09999999999999999},{"cache_read":0.04,"cache_write":0.0,"completion":0.44999999999999996,"id":"google/gemma-3-27b-it","prompt":0.08},{"cache_read":0.25,"cache_write":0.0,"completion":0.7999999999999999,"id":"thedrummer/skyfall-36b-v2","prompt":0.55},{"cache_read":0.0,"cache_write":0.0,"completion":8.0,"id":"perplexity/sonar-reasoning-pro","prompt":2.0},{"cache_read":0.0,"cache_write":0.0,"completion":15.0,"id":"perplexity/sonar-pro","prompt":3.0},{"cache_read":0.0,"cache_write":0.0,"completion":8.0,"id":"perplexity/sonar-deep-research","prompt":2.0},{"cache_read":0.02,"cache_write":0.0,"completion":0.6,"id":"mistralai/mistral-saba","prompt":0.19999999999999998},{"cache_read":0.0,"cache_write":0.0,"completion":1.5999999999999999,"id":"aion-labs/aion-rp-llama-3.1-8b","prompt":0.7999999999999999},{"cache_read":0.39999999999999997,"cache_write":0.0,"completion":1.0,"id":"qwen/qwen2.5-vl-72b-instruct","prompt":0.7999999999999999},{"cache_read":0.052000000000000005,"cache_write":0.325,"completion":0.78,"id":"qwen/qwen-plus","prompt":0.26},{"cache_read":0.275,"cache_write":0.0,"completion":2.2,"id":"openai/o3-mini:batch","prompt":0.55},{"cache_read":0.0,"cache_write":0.0,"completion":0.08,"id":"mistralai/mistral-small-24b-instruct-2501","prompt":0.049999999999999996},{"cache_read":0.0,"cache_write":0.0,"completion":1.0,"id":"perplexity/sonar","prompt":1.0},{"cache_read":0.0,"cache_write":0.0,"completion":0.14,"id":"microsoft/phi-4","prompt":0.07},{"cache_read":0.0,"cache_write":0.0,"completion":0.8899999999999999,"id":"deepseek/deepseek-chat","prompt":0.32},{"cache_read":0.0,"cache_write":0.0,"completion":0.15,"id":"cohere/command-r7b-12-2024","prompt":0.0375},{"cache_read":0.71,"cache_write":0.0,"completion":0.71,"id":"meta-llama/llama-3.3-70b-instruct","prompt":0.71},{"cache_read":0.0,"cache_write":0.0,"completion":0.24,"id":"amazon/nova-lite-v1","prompt":0.06},{"cache_read":0.0,"cache_write":0.0,"completion":0.14,"id":"amazon/nova-micro-v1","prompt":0.035},{"cache_read":0.0,"cache_write":0.0,"completion":3.1999999999999997,"id":"amazon/nova-pro-v1","prompt":0.7999999999999999},{"cache_read":1.25,"cache_write":0.0,"completion":10.0,"id":"openai/gpt-4o-2024-11-20","prompt":2.5},{"cache_read":0.19999999999999998,"cache_write":0.0,"completion":6.0,"id":"mistralai/mistral-large-2407","prompt":2.0},{"cache_read":0.0,"cache_write":0.0,"completion":1.0,"id":"qwen/qwen-2.5-coder-32b-instruct","prompt":0.66},{"cache_read":0.0,"cache_write":0.0,"completion":0.39999999999999997,"id":"thedrummer/unslopnemo-12b","prompt":0.39999999999999997},{"cache_read":2.5,"cache_write":0.0,"completion":5.0,"id":"anthracite-org/magnum-v4-72b","prompt":2.5},{"cache_read":0.0,"cache_write":0.0,"completion":0.19999999999999998,"id":"qwen/qwen-2.5-7b-instruct","prompt":0.09999999999999999},{"cache_read":0.0,"cache_write":0.0,"completion":0.201,"id":"meta-llama/llama-3.2-1b-instruct","prompt":0.027},{"cache_read":0.0,"cache_write":0.0,"completion":0.33,"id":"meta-llama/llama-3.2-3b-instruct","prompt":0.049999999999999996},{"cache_read":0.0,"cache_write":0.0,"completion":0.39999999999999997,"id":"qwen/qwen-2.5-72b-instruct","prompt":0.36},{"cache_read":0.0,"cache_write":0.0,"completion":0.6,"id":"cohere/command-r-08-2024","prompt":0.15},{"cache_read":0.0,"cache_write":0.0,"completion":10.0,"id":"cohere/command-r-plus-08-2024","prompt":2.5},{"cache_read":0.0,"cache_write":0.0,"completion":0.85,"id":"sao10k/l3.1-euryale-70b","prompt":0.85},{"cache_read":0.0,"cache_write":0.0,"completion":0.049999999999999996,"id":"sao10k/l3-lunaris-8b","prompt":0.04},{"cache_read":1.25,"cache_write":0.0,"completion":10.0,"id":"openai/gpt-4o-2024-08-06","prompt":2.5},{"cache_read":0.0,"cache_write":0.0,"completion":0.72,"id":"meta-llama/llama-3.1-70b-instruct","prompt":0.72},{"cache_read":0.0,"cache_write":0.0,"completion":0.04,"id":"meta-llama/llama-3.1-8b-instruct","prompt":0.02},{"cache_read":0.0,"cache_write":0.0,"completion":0.03,"id":"mistralai/mistral-nemo","prompt":0.029},{"cache_read":0.075,"cache_write":0.0,"completion":0.6,"id":"openai/gpt-4o-mini","prompt":0.15},{"cache_read":0.075,"cache_write":0.0,"completion":0.6,"id":"openai/gpt-4o-mini-2024-07-18","prompt":0.15},{"cache_read":0.0375,"cache_write":0.0,"completion":0.3,"id":"openai/gpt-4o-mini:batch","prompt":0.075},{"cache_read":0.0,"cache_write":0.0,"completion":0.65,"id":"google/gemma-2-27b-it","prompt":0.65},{"cache_read":1.25,"cache_write":0.0,"completion":10.0,"id":"openai/gpt-4o","prompt":2.5},{"cache_read":0.0,"cache_write":0.0,"completion":15.0,"id":"openai/gpt-4o-2024-05-13","prompt":5.0},{"cache_read":0.625,"cache_write":0.0,"completion":5.0,"id":"openai/gpt-4o:batch","prompt":1.25},{"cache_read":0.19999999999999998,"cache_write":0.0,"completion":6.0,"id":"mistralai/mixtral-8x22b-instruct","prompt":2.0},{"cache_read":0.0,"cache_write":0.0,"completion":15.0,"id":"openai/gpt-4-turbo:batch","prompt":5.0},{"cache_read":0.19999999999999998,"cache_write":0.0,"completion":6.0,"id":"mistralai/mistral-large","prompt":2.0},{"cache_read":0.0,"cache_write":0.0,"completion":2.0,"id":"openai/gpt-3.5-turbo-0613","prompt":1.0},{"cache_read":0.0,"cache_write":0.0,"completion":4.0,"id":"openai/gpt-3.5-turbo-16k","prompt":3.0},{"cache_read":0.39999999999999997,"cache_write":0.0,"completion":0.75,"id":"mancer/weaver","prompt":0.39999999999999997},{"cache_read":0.35,"cache_write":0.0,"completion":0.65,"id":"undi95/remm-slerp-l2-13b","prompt":0.35},{"cache_read":0.0,"cache_write":0.0,"completion":0.11,"id":"gryphe/mythomax-l2-13b","prompt":0.08},{"cache_read":0.0,"cache_write":0.0,"completion":60.0,"id":"openai/gpt-4","prompt":30.0},{"cache_read":0.0,"cache_write":0.0,"completion":-1000000.0,"id":"openrouter/auto","prompt":-1000000.0},{"cache_read":0.0,"cache_write":0.0,"completion":-1000000.0,"id":"openrouter/auto-code","prompt":-1000000.0},{"cache_read":0.0,"cache_write":0.0,"completion":-1000000.0,"id":"typesafe/jev-router","prompt":-1000000.0},{"cache_read":0.0,"cache_write":0.0,"completion":-1000000.0,"id":"nvidia/switchyard","prompt":-1000000.0},{"cache_read":0.0,"cache_write":0.0,"completion":-1000000.0,"id":"openrouter/auto-beta","prompt":-1000000.0},{"cache_read":0.0,"cache_write":0.0,"completion":-1000000.0,"id":"openrouter/fusion","prompt":-1000000.0},{"cache_read":0.0,"cache_write":0.0,"completion":-1000000.0,"id":"openrouter/pareto-code","prompt":-1000000.0},{"cache_read":0.0,"cache_write":0.0,"completion":0.0,"id":"openrouter/free","prompt":0.0},{"cache_read":0.0,"cache_write":0.0,"completion":-1000000.0,"id":"openrouter/bodybuilder","prompt":-1000000.0}],"version":1}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/install.ps1
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# costcrew installer for Windows
|
|
2
|
+
# powershell -c "irm https://raw.githubusercontent.com/Arch087146/costcrew/main/install.ps1 | iex"
|
|
3
|
+
$ErrorActionPreference = "Stop"
|
|
4
|
+
|
|
5
|
+
$Repo = "Arch087146/costcrew"
|
|
6
|
+
$Asset = "costcrew-windows-x86_64.zip"
|
|
7
|
+
$Url = "https://github.com/$Repo/releases/latest/download/$Asset"
|
|
8
|
+
|
|
9
|
+
$Dest = if ($env:COSTCREW_INSTALL_DIR) {
|
|
10
|
+
$env:COSTCREW_INSTALL_DIR
|
|
11
|
+
} else {
|
|
12
|
+
Join-Path $env:LOCALAPPDATA "Programs\costcrew"
|
|
13
|
+
}
|
|
14
|
+
New-Item -ItemType Directory -Force -Path $Dest | Out-Null
|
|
15
|
+
|
|
16
|
+
$tmp = New-Item -ItemType Directory -Force -Path (Join-Path $env:TEMP "costcrew-install")
|
|
17
|
+
$zip = Join-Path $tmp $Asset
|
|
18
|
+
|
|
19
|
+
Write-Host "fetching $Asset ..."
|
|
20
|
+
Invoke-WebRequest -Uri $Url -OutFile $zip -UseBasicParsing
|
|
21
|
+
Expand-Archive -Path $zip -DestinationPath $tmp -Force
|
|
22
|
+
|
|
23
|
+
Move-Item (Join-Path $tmp "costcrew.exe") (Join-Path $Dest "costcrew.exe") -Force
|
|
24
|
+
|
|
25
|
+
# make sure it's on PATH for future sessions
|
|
26
|
+
$dirOnPath = [Environment]::GetEnvironmentVariable("Path", "User") -split ";" -contains $Dest
|
|
27
|
+
if (-not $dirOnPath) {
|
|
28
|
+
[Environment]::SetEnvironmentVariable(
|
|
29
|
+
"Path",
|
|
30
|
+
[Environment]::GetEnvironmentVariable("Path", "User") + ";$Dest",
|
|
31
|
+
"User"
|
|
32
|
+
)
|
|
33
|
+
Write-Host "added $Dest to your user PATH (new shells will see it)"
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
& (Join-Path $Dest "costcrew.exe") --version
|
|
37
|
+
Write-Host ""
|
|
38
|
+
Write-Host "run costcrew in a NEW shell to open the app"
|