-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathcredentials.yaml
More file actions
314 lines (286 loc) · 12.1 KB
/
Copy pathcredentials.yaml
File metadata and controls
314 lines (286 loc) · 12.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
# credentials.yaml — top-level credential registry for the quorum eval harness.
# Names must match ^[a-z0-9_]+$.
# Each entry is parsed by src/contracts/credential.ts (CredentialSchema).
# harnesses: lists the runtime-family name(s) this credential serves.
opus:
# Direct-API opt-out. Pinned to claude-opus-4-8 (not the floating `opus` alias)
# so the direct-vs-Bedrock comparison partner can't drift when Anthropic
# repoints the alias, matching the sonnet5/sonnet46 pinning convention.
model: claude-opus-4-8
api: anthropic
api_key_env: ANTHROPIC_API_KEY
harnesses: [claude]
opus_bedrock:
# Default Claude coding-agent path: Opus 4.8 via the Bedrock Mantle endpoint
# (native Anthropic shape, bearer key, no SigV4). Region us-east-1 (Mantle is
# In-Region-only; only us-east-1 serves opus-4-8/sonnet-5 in the US). Bare id
# `anthropic.claude-opus-4-8` is the canonical Mantle model id.
# max_concurrency 6: quota probed 2026-07-16 (20M in / 4M out TPM, no RPM row; PRI-2650).
model: anthropic.claude-opus-4-8
api: mantle
auth: bedrock-bearer
api_key_env: AWS_BEARER_TOKEN_BEDROCK
region: us-east-1
harnesses: [claude]
max_concurrency: 6
opus5:
# Direct-API Opus 5: the Claude Code partner column for copilot_opus5 —
# same model, each harness on its vendor-native routing (Anthropic API vs
# GitHub). Bare id: the Claude 5 family ships undated ids.
model: claude-opus-5
api: anthropic
api_key_env: ANTHROPIC_API_KEY
harnesses: [claude]
opus5_bedrock:
# Opus 5 via the Bedrock Mantle endpoint, mirroring opus_bedrock's shape.
# Model id probed live 2026-08-06: HTTP 200 in us-east-1, response.model
# claude-opus-5; near-miss ids 404. max_concurrency 4 (not opus_bedrock's
# 6): Service Quotas gives 20M in / 2M out TPM — output is HALF of
# opus-4-8's 4M — and observed appliance concurrency has never exceeded 4.
model: anthropic.claude-opus-5
api: mantle
auth: bedrock-bearer
api_key_env: AWS_BEARER_TOKEN_BEDROCK
region: us-east-1
harnesses: [claude]
max_concurrency: 4
sonnet:
model: sonnet
api: anthropic
api_key_env: ANTHROPIC_API_KEY
harnesses: [claude]
haiku:
model: claude-haiku-4-5-20251001
api: anthropic
api_key_env: ANTHROPIC_API_KEY
harnesses: [claude]
sonnet5:
# Claude Sonnet 5. Pinned to the stable generation id `claude-sonnet-5` (the
# bare id is canonical; Anthropic publishes no dated snapshot for it) rather
# than the floating `sonnet` alias, so the benchmarked model can't silently
# repoint to a later Sonnet and break longitudinal comparability.
# COST NOTE: priced by obol ≥0.7.0 at litellm's INTRO rate ($2/$10 per MTok,
# window through 2026-08-31; standard is $3/$15). obol has no time-windowed
# rates, so dollar figures for runs captured after the window closes will be
# understated until a post-window prices refresh picks up the standard rate.
# Runs captured on obol 0.6.0 remain est_cost_usd: null (frozen at capture).
model: claude-sonnet-5
api: anthropic
api_key_env: ANTHROPIC_API_KEY
harnesses: [claude]
sonnet46:
# Claude Sonnet 4.6 — the previous-generation Sonnet, pinned as the control for
# `sonnet5` (Sonnet 5) comparisons so the benchmarked model can't drift with the
# floating `sonnet` alias. Unlike sonnet5, obol's bundled rate table includes
# claude-sonnet-4-6, so this column reports real coding cost.
model: claude-sonnet-4-6
api: anthropic
api_key_env: ANTHROPIC_API_KEY
harnesses: [claude]
opencode_gpt5:
# OpenAI gpt-5.5. base_url is OpenAI's first-party host (api.openai.com), which
# the opencode translator routes to opencode's BUILT-IN `openai` provider (by
# name, no custom npm) instead of a custom 'quorum' block: the built-in provider
# uses @ai-sdk/openai, which sends `max_completion_tokens` for gpt-5.x reasoning
# models (they reject `max_tokens`) and self-reports cost. A non-OpenAI
# openai-chat endpoint (GLM, ollama) keeps the custom 'quorum' + compatible shim.
model: gpt-5.5
api: openai-chat
base_url: https://api.openai.com/v1
api_key_env: OPENAI_API_KEY
harnesses: [opencode]
# max_concurrency 5: first-party OpenAI (api.openai.com), same endpoint and
# quota pool as openai_responses; parallelize the opencode column to match.
max_concurrency: 5
serf_default:
# serf.yaml model: anthropic/claude-sonnet-4-6
model: claude-sonnet-4-6
api: anthropic
api_key_env: ANTHROPIC_API_KEY
harnesses: [serf]
max_concurrency: 1
kimi_default:
# src/agents/kimi.ts:45 — DEFAULT_KIMI_MODEL_ENV.KIMI_MODEL_NAME = 'kimi-for-coding'
# Auth: OAuth-or-env. Primary path is OAuth (seeded from ~/.kimi-code);
# KIMI_MODEL_API_KEY enables the api-key path. Default here is oauth.
model: kimi-for-coding
auth: oauth
harnesses: [kimi]
openrouter_kimi_k27_code:
# OpenRouter-hosted Kimi coding flagship via OpenAI-compatible chat; added
# 2026-08-06 after the Moonshot direct-API credits exhausted mid-battery.
# NOT poolable with kimi-CLI (kimi-for-coding) cells -- different serve.
model: moonshotai/kimi-k2.7-code
api: openai-chat
base_url: https://openrouter.ai/api/v1
api_key_env: OPENROUTER_API_KEY
harnesses: [pi, opencode]
max_concurrency: 5
openrouter_glm_5_2:
# Default Pi path: OpenRouter-hosted GLM 5.2 via OpenAI-compatible chat.
# The provider/model choice lives in checked-in config; only the key belongs in
# the local/appliance credential bundle as OPENROUTER_API_KEY.
model: z-ai/glm-5.2
api: openai-chat
base_url: https://openrouter.ai/api/v1
api_key_env: OPENROUTER_API_KEY
harnesses: [pi, opencode, hermes]
# max_concurrency 5: pi's api-key path reaches GLM 5.2 through OpenRouter.
# Dial back if 429s surface as indeterminates.
max_concurrency: 5
compat:
thinking_format: zai
pi_default:
# Native pi OAuth (host login seeded from ~/.pi/agent). Provider PINNED to
# openai-codex (OpenAI gpt-5.5 via the ChatGPT subscription) so eval runs use a
# reproducible provider instead of inheriting the mutable host settings.json
# defaultProvider. Requires an openai-codex login in the host auth.json. This is
# pi's checked-in DEFAULT (see coding-agents/pi.yaml); openrouter_glm_5_2 remains
# an opt-in alternative.
provider: openai-codex
model: gpt-5.5
auth: oauth
harnesses: [pi]
max_concurrency: 1
codex_sub:
# Codex uses ChatGPT subscription auth (auth_mode: chatgpt, no OPENAI_API_KEY).
# The adapter does not pass a --model flag; model selection is subscription-driven.
# CONCERN: model field is a placeholder (no model baked into adapter).
model: gpt-4o
auth: subscription
api: openai-responses
harnesses: [codex]
gemini_default:
# Gemini CLI defaults its own model; the adapter does not pin one.
# CONCERN: model field is a placeholder (no default model baked into adapter).
model: gemini-2.5-pro
api: gemini
api_key_env: GEMINI_API_KEY
harnesses: [gemini]
max_concurrency: 1
# GLM dev endpoint is dual-protocol (chat-completions AND /v1/responses), but a
# credential carries ONE wire protocol (limiterKey = base_url|api). Split per
# protocol: pi/opencode used chat-completions; codex 0.141 only speaks responses.
# Both are opt-in benchmark credentials (no agent defaults to them).
openrouter_hermes4:
# KNOWN-BROKEN as of 2026-07-23: no OpenRouter hermes-4 endpoint (405b or
# 70b) supports the `tools` parameter, and the hermes CLI is tool-driven —
# every API call 404s with "No endpoints found that support tool use"
# (experiments/2026-07-23-hermes-target-bringup.md). Kept as a documented
# disproof; Hermes-4 validation needs the Nous Portal API + key instead.
model: nousresearch/hermes-4-405b
api: openai-chat
base_url: https://openrouter.ai/api/v1
api_key_env: OPENROUTER_API_KEY
harnesses: [hermes]
max_concurrency: 5
glm_5_2_chat:
model: glm-5.2-fp8
api: openai-chat
base_url: https://oak-receiver-hear-homework.trycloudflare.com/v1
api_key_env: GLM_API_KEY
harnesses: [pi, opencode]
max_concurrency: 2
compat:
thinking_format: zai
glm_5_2_responses:
model: glm-5.2-fp8
api: openai-responses
base_url: https://oak-receiver-hear-homework.trycloudflare.com/v1
api_key_env: GLM_API_KEY
harnesses: [codex]
max_concurrency: 2
compat:
thinking_format: zai
# Local ollama (OpenAI chat-completions at localhost:11434/v1) — live validation
# target for the pi/opencode translators. ollama ignores the API key; OLLAMA_API_KEY
# is a dummy placeholder in .env. Opt-in (no agent defaults to it).
ollama_local:
model: gemma4:e4b
api: openai-chat
base_url: http://localhost:11434/v1
api_key_env: OLLAMA_API_KEY
harnesses: [pi, opencode]
# OpenAI's real Responses API — exercises codex's api-key/responses translator
# path (wire_api=responses) against a live endpoint, standing in for the dead GLM
# endpoint. Opt-in (no agent defaults to it).
# max_concurrency 5: the earlier no-response hangs (first seen at 4) were OpenAI
# quota exhaustion (billing), not concurrency throttling — resolved by topping up
# the account. Dial back if genuine 429s surface as indeterminates.
openai_responses:
model: gpt-5.5
api: openai-responses
base_url: https://api.openai.com/v1
api_key_env: OPENAI_API_KEY
harnesses: [codex]
max_concurrency: 5
openai_responses_56sol:
# GPT-5.6 Sol comparison partner for openai_responses (gpt-5.5), following the
# sonnet5/sonnet46 pinning convention. Pinned to the explicit gpt-5.6-sol id —
# bare `gpt-5.6` is a floating alias that routes to Sol (no dated snapshot
# published as of 2026-07-13). Sol prices identically to gpt-5.5 ($5/$0.50/$30
# per MTok, 272k long-context tier at $10/$45); priced by obol ≥0.8.0
# (as_of 2026-07-14). Runs captured on obol 0.7.0 remain est_cost_usd: null —
# cost is frozen at capture time.
# Shares openai_responses's limiterKey (same base_url|api), so both columns
# draw from ONE 5-slot pool and one 429 latch; keep max_concurrency equal —
# on a limiterKey collision the alphabetically-first credential's cap wins.
model: gpt-5.6-sol
api: openai-responses
base_url: https://api.openai.com/v1
api_key_env: OPENAI_API_KEY
harnesses: [codex]
max_concurrency: 5
antigravity_default:
# DORMANT: no antigravity translator consumes this; it carries the scheduler cap
# (PRI-2203: Code Assist 429 protection) + satisfies quorum check. model is a
# placeholder (antigravity is Code Assist / Gemini-based; confirm exact model
# if needed — the adapter does not bake one in).
# Auth sourced from src/agents/antigravity.ts:67-101 — AGY_OAUTH_CREDENTIAL_FILES
# (oauth_creds.json, google_accounts.json) seeded from ~/.gemini; OAuth path.
model: gemini-code-assist
auth: oauth
harnesses: [antigravity]
max_concurrency: 1
launch_spacing_seconds: 30
# Copilot credentials: model reaches the launcher's --model flag via the
# $COPILOT_MODEL_SH substitution. Auth sourced from
# src/agents/copilot.ts — resolveCopilotAuthEnv() resolves
# COPILOT_GITHUB_TOKEN / GH_TOKEN / GITHUB_TOKEN / gh auth token; GitHub
# token auth path (fine-grained PAT with the Copilot Requests permission).
# All copilot credentials share one base_url so the scheduler folds them
# into a single limiter pool: one GitHub Copilot subscription serves them.
copilot_default:
# claude-opus-5 is the Copilot CLI's own default model; pinned explicitly
# so casual runs are labeled with the model they actually exercised.
model: claude-opus-5
auth: oauth
base_url: https://api.githubcopilot.com
harnesses: [copilot]
max_concurrency: 1
copilot_gpt56_sol:
model: gpt-5.6-sol
auth: oauth
base_url: https://api.githubcopilot.com
harnesses: [copilot]
max_concurrency: 1
copilot_gpt56_luna:
model: gpt-5.6-luna
auth: oauth
base_url: https://api.githubcopilot.com
harnesses: [copilot]
max_concurrency: 1
copilot_opus5:
model: claude-opus-5
auth: oauth
base_url: https://api.githubcopilot.com
harnesses: [copilot]
max_concurrency: 1
copilot_mai_flash:
# The CLI's embedded id carries the -picker suffix; verified live 2026-08-05
# (session events report currentModel mai-code-1-flash-picker verbatim).
model: mai-code-1-flash-picker
auth: oauth
base_url: https://api.githubcopilot.com
harnesses: [copilot]
max_concurrency: 1