@polderlabs/bizar 3.8.0 → 3.9.0
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/README.md +8 -10
- package/cli/audit.mjs +2 -2
- package/cli/install.mjs +111 -20
- package/config/AGENTS.md +6 -6
- package/config/agents/baldr.md +1 -1
- package/config/agents/forseti.md +1 -1
- package/config/agents/hermod.md +1 -1
- package/config/agents/odin.md +8 -8
- package/config/agents/quick.md +1 -1
- package/config/agents/thor.md +2 -2
- package/config/agents/tyr.md +2 -2
- package/config/opencode.json.template +26 -13
- package/config/skills/bizar/SKILL.md +13 -13
- package/package.json +1 -1
- package/config/opencode.json +0 -338
package/README.md
CHANGED
|
@@ -65,18 +65,18 @@
|
|
|
65
65
|
### Agents
|
|
66
66
|
|
|
67
67
|
| Agent | Rune | Model | Cost | Role |
|
|
68
|
-
|
|
69
|
-
| **Odin** | ᛟ |
|
|
68
|
+
|---|---|---|---|---|
|
|
69
|
+
| **Odin** | ᛟ | OpenRouter minimax-m3 | $0.30/M · $1.20/M out | Primary router — never executes, only delegates |
|
|
70
70
|
| **Frigg** | ᚠ | DeepSeek V4 Flash | **Free** | Read-only Q&A — ask questions, get answers, never modifies |
|
|
71
71
|
| **Vör** | ᛢ | DeepSeek V4 Flash | **Free** | Clarifies ambiguous requests — asks questions until task is well-defined |
|
|
72
72
|
| **Mimir** | ᛗ | DeepSeek V4 Flash | **Free** | Research & codebase exploration (Semble-first) |
|
|
73
73
|
| **Heimdall** | ᚹ | DeepSeek V4 Flash | **Free** | Simple tasks, quick edits, file operations |
|
|
74
|
-
| **Hermod** | ᚱ |
|
|
75
|
-
| **Thor** | ᚦ |
|
|
76
|
-
| **Baldr** | ᛒ |
|
|
77
|
-
| **Tyr** | ᛏ |
|
|
74
|
+
| **Hermod** | ᚱ | OpenRouter minimax-m2.7 | $0.30/M · $1.20/M out | Git & GitHub operations (commit, PR, merge, rebase) |
|
|
75
|
+
| **Thor** | ᚦ | OpenRouter minimax-m2.7 | $0.30/M · $1.20/M out | Moderate implementation, debugging, refactoring |
|
|
76
|
+
| **Baldr** | ᛒ | OpenRouter minimax-m2.7 | $0.30/M · $1.20/M out | UI/UX design system (DESIGN.md plans, visual audits) |
|
|
77
|
+
| **Tyr** | ᛏ | OpenRouter minimax-m3 | $0.30/M · $1.20/M out | Complex implementation, architecture, deep debugging |
|
|
78
78
|
| **Vidarr** | ᛉ | GPT-5.5 | Subscription | Last resort — GPT-5.5 |
|
|
79
|
-
| **Forseti** | ᚨ |
|
|
79
|
+
| **Forseti** | ᚨ | OpenRouter minimax-m3 | $0.30/M · $1.20/M out | Adversarial plan reviewer (edit: deny, audit-only) |
|
|
80
80
|
|
|
81
81
|
---
|
|
82
82
|
|
|
@@ -257,13 +257,11 @@ After installation, run `/connect` in opencode to add API keys:
|
|
|
257
257
|
| Provider | Models | Auth |
|
|
258
258
|
|---|---|---|
|
|
259
259
|
| **OpenCode Zen** | `opencode/deepseek-v4-flash-free` | Free API key from [opencode.ai](https://opencode.ai) — create account, get key, no charges |
|
|
260
|
-
| **
|
|
260
|
+
| **OpenRouter** | `openrouter/minimax-m2.7`, `openrouter/minimax-m3` | API key from [openrouter.ai](https://openrouter.ai) |
|
|
261
261
|
| **OpenAI** | `openai/gpt-5.5` | ChatGPT subscription (OAuth) |
|
|
262
262
|
|
|
263
263
|
Then run `/models` to verify connectivity.
|
|
264
264
|
|
|
265
|
-
> **Note:** Do not set `baseURL` on the minimax provider. The ai-sdk minimax provider uses its own default URL internally. Setting one causes 404 errors.
|
|
266
|
-
|
|
267
265
|
---
|
|
268
266
|
|
|
269
267
|
## 🧭 Routing
|
package/cli/audit.mjs
CHANGED
|
@@ -78,8 +78,8 @@ export async function runAudit() {
|
|
|
78
78
|
const model = modelMatch[1].trim();
|
|
79
79
|
const validModels = [
|
|
80
80
|
'opencode/deepseek-v4-flash-free',
|
|
81
|
-
'minimax
|
|
82
|
-
'minimax
|
|
81
|
+
'openrouter/minimax-m2.7',
|
|
82
|
+
'openrouter/minimax-m3',
|
|
83
83
|
'openai/gpt-5.5',
|
|
84
84
|
];
|
|
85
85
|
if (!validModels.includes(model)) {
|
package/cli/install.mjs
CHANGED
|
@@ -390,11 +390,12 @@ async function promptAndInstallOptional() {
|
|
|
390
390
|
}
|
|
391
391
|
|
|
392
392
|
async function promptGraphifyInstall() {
|
|
393
|
-
const { spawnSync } = await import('node:child_process');
|
|
393
|
+
const { spawnSync, execSync } = await import('node:child_process');
|
|
394
394
|
|
|
395
395
|
console.log();
|
|
396
396
|
sectionHeading('Knowledge Graph (graphify)');
|
|
397
397
|
|
|
398
|
+
// 1. Detect graphify already installed
|
|
398
399
|
const detect = spawnSync('python3', ['-c', 'import graphify; print(graphify.__version__)'], {
|
|
399
400
|
cwd: process.cwd(),
|
|
400
401
|
encoding: 'utf8',
|
|
@@ -407,40 +408,130 @@ async function promptGraphifyInstall() {
|
|
|
407
408
|
return;
|
|
408
409
|
}
|
|
409
410
|
|
|
410
|
-
// Non-interactive:
|
|
411
|
+
// 2. Non-interactive: print hint and exit
|
|
411
412
|
if (!stdin.isTTY || !stdout.isTTY) {
|
|
412
413
|
console.log(chalk.dim(' graphify not detected. Install later with:'));
|
|
414
|
+
console.log(chalk.dim(' uv tool install graphifyy # recommended'));
|
|
413
415
|
console.log(chalk.dim(' pip install graphifyy'));
|
|
414
416
|
console.log(chalk.dim(' pipx install graphifyy'));
|
|
415
|
-
console.log(chalk.dim(' uv tool install graphifyy'));
|
|
416
417
|
console.log(chalk.dim(' Then run `bizar graph build` to populate .bizar/graph/.'));
|
|
417
418
|
return;
|
|
418
419
|
}
|
|
419
420
|
|
|
421
|
+
// 3. Interactive: show options with uv first
|
|
420
422
|
console.log(chalk.dim(' graphify not detected. graphify powers per-project knowledge graphs (bizar graph build).'));
|
|
421
423
|
console.log(chalk.dim(' Install with one of:'));
|
|
422
|
-
console.log(chalk.dim('
|
|
423
|
-
console.log(chalk.dim('
|
|
424
|
-
console.log(chalk.dim('
|
|
424
|
+
console.log(chalk.dim(' uv tool install graphifyy # recommended'));
|
|
425
|
+
console.log(chalk.dim(' pip install graphifyy'));
|
|
426
|
+
console.log(chalk.dim(' pipx install graphifyy'));
|
|
425
427
|
|
|
426
|
-
const
|
|
427
|
-
try {
|
|
428
|
-
const answer = (await rl.question(' Install graphify now via pip? [Y/n]: ')).trim().toLowerCase();
|
|
429
|
-
rl.close();
|
|
428
|
+
const hasUv = await detectUv();
|
|
430
429
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
430
|
+
if (hasUv) {
|
|
431
|
+
// 3a. uv is available — ask to install via uv directly
|
|
432
|
+
const rl = createInterface({ input: stdin, output: stdout });
|
|
433
|
+
try {
|
|
434
|
+
const answer = (await rl.question(' Install graphify now via uv? [Y/n]: ')).trim().toLowerCase();
|
|
435
|
+
rl.close();
|
|
436
|
+
|
|
437
|
+
if (answer === '' || answer.startsWith('y')) {
|
|
438
|
+
console.log(' Installing graphify via uv...');
|
|
439
|
+
try {
|
|
440
|
+
execSync('uv tool install graphifyy', { stdio: 'inherit', timeout: 120000 });
|
|
441
|
+
console.log(chalk.green(' graphify installed. Run `bizar graph build` to populate .bizar/graph/.'));
|
|
442
|
+
} catch (err) {
|
|
443
|
+
console.log(chalk.red(` uv tool install failed: ${err.message}`));
|
|
444
|
+
console.log(chalk.dim(' Install manually: uv tool install graphifyy'));
|
|
445
|
+
}
|
|
435
446
|
} else {
|
|
436
|
-
console.log(chalk.
|
|
447
|
+
console.log(chalk.dim(' Skipped. Install manually with one of the commands above when ready.'));
|
|
437
448
|
}
|
|
438
|
-
}
|
|
439
|
-
|
|
449
|
+
} catch {
|
|
450
|
+
rl.close();
|
|
451
|
+
console.log(chalk.dim(' Skipped.'));
|
|
452
|
+
}
|
|
453
|
+
} else {
|
|
454
|
+
// 3b. uv not available — ask if we should install uv first
|
|
455
|
+
console.log();
|
|
456
|
+
console.log(chalk.dim(' uv not detected. uv is recommended on Arch/Fedora/macOS (avoids PEP 668).'));
|
|
457
|
+
|
|
458
|
+
const rl = createInterface({ input: stdin, output: stdout });
|
|
459
|
+
try {
|
|
460
|
+
const answer = (await rl.question(' Install uv first, then graphify? [Y/n]: ')).trim().toLowerCase();
|
|
461
|
+
rl.close();
|
|
462
|
+
|
|
463
|
+
if (answer === '' || answer.startsWith('y')) {
|
|
464
|
+
if (process.platform === 'win32') {
|
|
465
|
+
console.log(chalk.yellow(' Automatic uv install not supported on Windows.'));
|
|
466
|
+
console.log(chalk.dim(' Install from https://docs.astral.sh/uv then run: uv tool install graphifyy'));
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
console.log(' Installing uv...');
|
|
471
|
+
try {
|
|
472
|
+
execSync('curl -LsSf https://astral.sh/uv/install.sh | sh', { stdio: 'inherit', timeout: 60000 });
|
|
473
|
+
} catch (err) {
|
|
474
|
+
console.log(chalk.red(` uv install failed: ${err.message}`));
|
|
475
|
+
console.log(chalk.dim(' Install manually from https://docs.astral.sh/uv'));
|
|
476
|
+
// Fall back to pip
|
|
477
|
+
const rl2 = createInterface({ input: stdin, output: stdout });
|
|
478
|
+
try {
|
|
479
|
+
const pipAnswer = (await rl2.question(' Install graphify via pip instead? [Y/n]: ')).trim().toLowerCase();
|
|
480
|
+
rl2.close();
|
|
481
|
+
if (pipAnswer === '' || pipAnswer.startsWith('y')) {
|
|
482
|
+
console.log(' Installing graphify via pip...');
|
|
483
|
+
const result = spawnSync('pip', ['install', 'graphifyy'], { stdio: 'inherit', timeout: 120000 });
|
|
484
|
+
if (result.status === 0) {
|
|
485
|
+
console.log(chalk.green(' graphify installed. Run `bizar graph build` to populate .bizar/graph/.'));
|
|
486
|
+
} else {
|
|
487
|
+
console.log(chalk.red(` pip install failed (exit ${result.status}).`));
|
|
488
|
+
console.log(chalk.dim(' Install manually: pip install graphifyy'));
|
|
489
|
+
}
|
|
490
|
+
} else {
|
|
491
|
+
console.log(chalk.dim(' Skipped.'));
|
|
492
|
+
}
|
|
493
|
+
} catch {
|
|
494
|
+
rl2.close();
|
|
495
|
+
console.log(chalk.dim(' Skipped.'));
|
|
496
|
+
}
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
console.log(' Installing graphify via uv...');
|
|
501
|
+
try {
|
|
502
|
+
execSync('uv tool install graphifyy', { stdio: 'inherit', timeout: 120000 });
|
|
503
|
+
console.log(chalk.green(' graphify installed. Run `bizar graph build` to populate .bizar/graph/.'));
|
|
504
|
+
} catch (err) {
|
|
505
|
+
console.log(chalk.red(` uv tool install failed: ${err.message}`));
|
|
506
|
+
console.log(chalk.dim(' Install manually: uv tool install graphifyy'));
|
|
507
|
+
}
|
|
508
|
+
} else {
|
|
509
|
+
// User declined uv — fall back to pip
|
|
510
|
+
const rl2 = createInterface({ input: stdin, output: stdout });
|
|
511
|
+
try {
|
|
512
|
+
const pipAnswer = (await rl2.question(' Install graphify via pip instead? [Y/n]: ')).trim().toLowerCase();
|
|
513
|
+
rl2.close();
|
|
514
|
+
if (pipAnswer === '' || pipAnswer.startsWith('y')) {
|
|
515
|
+
console.log(' Installing graphify via pip...');
|
|
516
|
+
const result = spawnSync('pip', ['install', 'graphifyy'], { stdio: 'inherit', timeout: 120000 });
|
|
517
|
+
if (result.status === 0) {
|
|
518
|
+
console.log(chalk.green(' graphify installed. Run `bizar graph build` to populate .bizar/graph/.'));
|
|
519
|
+
} else {
|
|
520
|
+
console.log(chalk.red(` pip install failed (exit ${result.status}).`));
|
|
521
|
+
console.log(chalk.dim(' Install manually: pip install graphifyy'));
|
|
522
|
+
}
|
|
523
|
+
} else {
|
|
524
|
+
console.log(chalk.dim(' Skipped.'));
|
|
525
|
+
}
|
|
526
|
+
} catch {
|
|
527
|
+
rl2.close();
|
|
528
|
+
console.log(chalk.dim(' Skipped.'));
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
} catch {
|
|
532
|
+
rl.close();
|
|
533
|
+
console.log(chalk.dim(' Skipped.'));
|
|
440
534
|
}
|
|
441
|
-
} catch {
|
|
442
|
-
rl.close();
|
|
443
|
-
console.log(chalk.dim(' Skipped.'));
|
|
444
535
|
}
|
|
445
536
|
}
|
|
446
537
|
|
package/config/AGENTS.md
CHANGED
|
@@ -116,7 +116,7 @@ BizarHarness ships always-on coding rules organized by language and concern. All
|
|
|
116
116
|
|
|
117
117
|
This system uses a 5-tier model architecture with a verification gate:
|
|
118
118
|
|
|
119
|
-
### Odin (default agent,
|
|
119
|
+
### Odin (default agent, OpenRouter minimax-m3)
|
|
120
120
|
|
|
121
121
|
Odin (`@odin`) is the All-Father and primary/default agent. He analyzes each request and **decomposes it into independent work streams** — **he never executes work himself**:
|
|
122
122
|
- **Identifies parallelizable work** and launches multiple subagent `task` calls in a **single message** (always 2+)
|
|
@@ -161,25 +161,25 @@ Odin (`@odin`) is the All-Father and primary/default agent. He analyzes each req
|
|
|
161
161
|
|
|
162
162
|
### Hermod
|
|
163
163
|
|
|
164
|
-
- **Model**: `minimax
|
|
164
|
+
- **Model**: `openrouter/minimax-m2.7` (via OpenRouter)
|
|
165
165
|
- **Use for**: Git and GitHub operations — commit, push, merge, PRs, branches, conflict resolution. The swift messenger.
|
|
166
166
|
- **Cost**: $0.30/M input, $1.20/M output
|
|
167
167
|
|
|
168
168
|
### Thor
|
|
169
169
|
|
|
170
|
-
- **Model**: `minimax
|
|
170
|
+
- **Model**: `openrouter/minimax-m2.7` (via OpenRouter)
|
|
171
171
|
- **Use for**: Moderate complexity features, debugging, code review, refactoring
|
|
172
172
|
- **Cost**: $0.30/M input, $1.20/M output — cheaper than Tyr, more capable than Heimdall
|
|
173
173
|
|
|
174
174
|
### Baldr
|
|
175
175
|
|
|
176
|
-
- **Model**: `minimax
|
|
176
|
+
- **Model**: `openrouter/minimax-m2.7` (via OpenRouter)
|
|
177
177
|
- **Use for**: Design system creation, DESIGN.md, visual audit, usability planning. Creates design plans — does not implement.
|
|
178
178
|
- **Cost**: $0.30/M input, $1.20/M output
|
|
179
179
|
|
|
180
180
|
### Tyr
|
|
181
181
|
|
|
182
|
-
- **Model**: `minimax
|
|
182
|
+
- **Model**: `openrouter/minimax-m3` (via OpenRouter)
|
|
183
183
|
- **Use for**: Highest complexity implementation, debugging, architecture, multi-step engineering
|
|
184
184
|
- **Cost**: Higher — reserved for the hardest problems
|
|
185
185
|
|
|
@@ -191,7 +191,7 @@ Odin (`@odin`) is the All-Father and primary/default agent. He analyzes each req
|
|
|
191
191
|
|
|
192
192
|
### Forseti
|
|
193
193
|
|
|
194
|
-
- **Model**: `minimax
|
|
194
|
+
- **Model**: `openrouter/minimax-m3` (via OpenRouter, audit-only, no edit permissions)
|
|
195
195
|
- **Use for**: Adversarial plan review — audits completeness, correctness, consistency, feasibility, security
|
|
196
196
|
- **Always runs before any Tier 4 or Tier 5 implementation begins**
|
|
197
197
|
|
package/config/agents/baldr.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Baldr — UI/UX design system specialist. Creates DESIGN.md files using Google's design.md standard (alpha). Focuses on visual consistency, usability, accessibility, and design tokens.
|
|
3
3
|
mode: subagent
|
|
4
|
-
model: minimax
|
|
4
|
+
model: openrouter/minimax-m2.7
|
|
5
5
|
color: "#ec4899"
|
|
6
6
|
permission:
|
|
7
7
|
read: allow
|
package/config/agents/forseti.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Forseti — Audits, criticizes, and corrects implementation plans before execution using MiniMax M3. No write permissions — review only.
|
|
3
3
|
mode: subagent
|
|
4
|
-
model: minimax
|
|
4
|
+
model: openrouter/minimax-m3
|
|
5
5
|
color: "#ef4444"
|
|
6
6
|
permission:
|
|
7
7
|
read: allow
|
package/config/agents/hermod.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Hermod — Git and GitHub operations specialist using MiniMax M2.7. Branching, commits, PRs, merge/rebase, conflict resolution, CI/CD, releases, gh CLI.
|
|
3
3
|
mode: subagent
|
|
4
|
-
model: minimax
|
|
4
|
+
model: openrouter/minimax-m2.7
|
|
5
5
|
color: "#06b6d4"
|
|
6
6
|
permission:
|
|
7
7
|
read: allow
|
package/config/agents/odin.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Odin — Pure router that delegates all work to subagents. Routes across Frigg (DeepSeek/Q&A), Vör (DeepSeek/clarify), Mimir (DeepSeek/research), Heimdall (DeepSeek/simple), Hermod (M2.7/git), Thor (M2.7/mid), Baldr (M2.7/design), Tyr (M3/top), Vidarr (GPT-5.5/ultra), Forseti (verifier/M3).
|
|
3
3
|
mode: primary
|
|
4
|
-
model: minimax
|
|
4
|
+
model: openrouter/minimax-m3
|
|
5
5
|
color: "#6366f1"
|
|
6
6
|
permission:
|
|
7
7
|
task: allow
|
|
@@ -53,8 +53,8 @@ When you get ANY request:
|
|
|
53
53
|
4. After all return, synthesize the results
|
|
54
54
|
|
|
55
55
|
For implementation work, you have two parallel implementation agents:
|
|
56
|
-
- **@thor** (
|
|
57
|
-
- **@tyr** (
|
|
56
|
+
- **@thor** (OpenRouter minimax-m2.7) — moderate complexity, cheaper
|
|
57
|
+
- **@tyr** (OpenRouter minimax-m3) — complex work, more expensive
|
|
58
58
|
|
|
59
59
|
**ALWAYS use both.** Split each implementation task across them. For example:
|
|
60
60
|
- Frontend parts → @thor, Backend parts → @tyr
|
|
@@ -100,7 +100,7 @@ For deep codebase research, pattern discovery, documentation analysis:
|
|
|
100
100
|
### Simple Tasks & Quick Edits — Route to @heimdall (DeepSeek V4 Flash Free, free)
|
|
101
101
|
For any simple, mechanical, or deterministic work:
|
|
102
102
|
|
|
103
|
-
### Git Operations — Route to @hermod (MiniMax M2.7 via
|
|
103
|
+
### Git Operations — Route to @hermod (MiniMax M2.7 via OpenRouter)
|
|
104
104
|
For any git or GitHub workflow:
|
|
105
105
|
- Committing, pushing, pulling, branching, merging, rebasing
|
|
106
106
|
- Pull request creation, review, and management
|
|
@@ -117,7 +117,7 @@ When the user asks for `@hermod /pr-review` or a PR review:
|
|
|
117
117
|
2. @hermod waits for both, synthesizes the review, and posts as a PR comment
|
|
118
118
|
3. @hermod has write access to post PR comments via `gh pr comment`
|
|
119
119
|
|
|
120
|
-
### Design System & Visual Planning — Route to @baldr (MiniMax M2.7 via
|
|
120
|
+
### Design System & Visual Planning — Route to @baldr (MiniMax M2.7 via OpenRouter)
|
|
121
121
|
For any task that touches visuals, usability, or design systems:
|
|
122
122
|
- Creating DESIGN.md files (Google design.md standard — YAML tokens + prose sections)
|
|
123
123
|
- Auditing visual consistency across a codebase (10-dimension scoring)
|
|
@@ -129,7 +129,7 @@ For any task that touches visuals, usability, or design systems:
|
|
|
129
129
|
|
|
130
130
|
Baldr creates design plans. Baldr does NOT implement code — that goes to @thor or @tyr after the plan is approved.
|
|
131
131
|
|
|
132
|
-
### Moderate Complexity — Route to @thor (MiniMax M2.7 via
|
|
132
|
+
### Moderate Complexity — Route to @thor (MiniMax M2.7 via OpenRouter)
|
|
133
133
|
For tasks that need more reasoning than DeepSeek but aren't the hardest problems:
|
|
134
134
|
- Implementing new features of moderate complexity
|
|
135
135
|
- Debugging non-trivial issues
|
|
@@ -137,7 +137,7 @@ For tasks that need more reasoning than DeepSeek but aren't the hardest problems
|
|
|
137
137
|
- Writing tests for non-trivial logic
|
|
138
138
|
- Multi-step tasks that are well-scoped and understood
|
|
139
139
|
|
|
140
|
-
### Complex Work — Route to @tyr (MiniMax M3 via
|
|
140
|
+
### Complex Work — Route to @tyr (MiniMax M3 via OpenRouter)
|
|
141
141
|
For the most demanding engineering work:
|
|
142
142
|
- Complex new feature implementation from scratch
|
|
143
143
|
- Deep debugging of subtle or intermittent bugs
|
|
@@ -306,7 +306,7 @@ Call `bizar_spawn_background` with:
|
|
|
306
306
|
|
|
307
307
|
- `agent`: the agent name (e.g., "mimir", "thor", "tyr")
|
|
308
308
|
- `prompt`: what to do (specific, with context)
|
|
309
|
-
- `model`: optional, `"<providerID>/<modelID>"` format (e.g., `"minimax
|
|
309
|
+
- `model`: optional, `"<providerID>/<modelID>"` format (e.g., `"openrouter/minimax-m3"`)
|
|
310
310
|
- `timeoutMs`: optional, default 5 min, max 30 min, min 1s
|
|
311
311
|
|
|
312
312
|
You get an `instanceId` back immediately.
|
package/config/agents/quick.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Quick (quick) — fast single-shot tasks. No delegation, no parallel streams. Use for small edits, mechanical changes, one-shot questions. Routes to no one.
|
|
3
3
|
mode: primary
|
|
4
|
-
model: minimax
|
|
4
|
+
model: openrouter/minimax-m2.7
|
|
5
5
|
color: "#22d3ee"
|
|
6
6
|
permission:
|
|
7
7
|
read: allow
|
package/config/agents/thor.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Thor — Handles medium-complexity tasks using MiniMax M2.7 from
|
|
2
|
+
description: Thor — Handles medium-complexity tasks using MiniMax M2.7 from OpenRouter. Strong and reliable, cheaper than Tyr but more capable than Heimdall.
|
|
3
3
|
mode: subagent
|
|
4
|
-
model: minimax
|
|
4
|
+
model: openrouter/minimax-m2.7
|
|
5
5
|
color: "#a855f7"
|
|
6
6
|
permission:
|
|
7
7
|
read: allow
|
package/config/agents/tyr.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Tyr — Handles the most complex implementation, debugging, and architectural work using MiniMax M3 via
|
|
2
|
+
description: Tyr — Handles the most complex implementation, debugging, and architectural work using MiniMax M3 via OpenRouter. Unmatched wisdom for the hardest problems.
|
|
3
3
|
mode: subagent
|
|
4
|
-
model: minimax
|
|
4
|
+
model: openrouter/minimax-m3
|
|
5
5
|
color: "#f59e0b"
|
|
6
6
|
permission:
|
|
7
7
|
read: allow
|
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://opencode.ai/config.json",
|
|
3
|
-
"model": "minimax
|
|
4
|
-
"small_model": "minimax
|
|
3
|
+
"model": "openrouter/minimax-m3",
|
|
4
|
+
"small_model": "openrouter/minimax-m2.7",
|
|
5
5
|
"default_agent": "odin",
|
|
6
6
|
"permission": "allow",
|
|
7
7
|
"snapshot": false,
|
|
8
|
+
"provider": {
|
|
9
|
+
"openrouter": {
|
|
10
|
+
"npm": "@openrouter/ai-sdk-provider",
|
|
11
|
+
"name": "OpenRouter",
|
|
12
|
+
"options": {
|
|
13
|
+
"apiKey": "{env:OPENROUTER_API_KEY}"
|
|
14
|
+
},
|
|
15
|
+
"models": {
|
|
16
|
+
"minimax-m2.7": {},
|
|
17
|
+
"minimax-m3": {}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
8
21
|
"mcp": {
|
|
9
22
|
"supabase": {
|
|
10
23
|
"type": "remote",
|
|
@@ -53,7 +66,7 @@
|
|
|
53
66
|
"odin": {
|
|
54
67
|
"description": "Odin — Pure router that delegates all work to subagents.",
|
|
55
68
|
"mode": "primary",
|
|
56
|
-
"model": "minimax
|
|
69
|
+
"model": "openrouter/minimax-m3",
|
|
57
70
|
"color": "#6366f1",
|
|
58
71
|
"permission": {
|
|
59
72
|
"task": "allow",
|
|
@@ -67,7 +80,7 @@
|
|
|
67
80
|
"vor": {
|
|
68
81
|
"description": "Vör — The Questioning One.",
|
|
69
82
|
"mode": "subagent",
|
|
70
|
-
"model": "minimax
|
|
83
|
+
"model": "openrouter/minimax-m2.7",
|
|
71
84
|
"color": "#8b5cf6",
|
|
72
85
|
"permission": {
|
|
73
86
|
"read": "allow",
|
|
@@ -80,7 +93,7 @@
|
|
|
80
93
|
"frigg": {
|
|
81
94
|
"description": "Frigg — All-knowing Q&A agent.",
|
|
82
95
|
"mode": "primary",
|
|
83
|
-
"model": "minimax
|
|
96
|
+
"model": "openrouter/minimax-m2.7",
|
|
84
97
|
"color": "#06b6d4",
|
|
85
98
|
"permission": {
|
|
86
99
|
"read": "allow",
|
|
@@ -98,7 +111,7 @@
|
|
|
98
111
|
"quick": {
|
|
99
112
|
"description": "Quick — Fast single-shot tasks.",
|
|
100
113
|
"mode": "primary",
|
|
101
|
-
"model": "minimax
|
|
114
|
+
"model": "openrouter/minimax-m2.7",
|
|
102
115
|
"color": "#22d3ee",
|
|
103
116
|
"permission": {
|
|
104
117
|
"read": "allow",
|
|
@@ -117,7 +130,7 @@
|
|
|
117
130
|
"mimir": {
|
|
118
131
|
"description": "Mimir — Research and codebase exploration agent.",
|
|
119
132
|
"mode": "subagent",
|
|
120
|
-
"model": "minimax
|
|
133
|
+
"model": "openrouter/minimax-m2.7",
|
|
121
134
|
"color": "#0ea5e9",
|
|
122
135
|
"permission": {
|
|
123
136
|
"read": "allow",
|
|
@@ -135,7 +148,7 @@
|
|
|
135
148
|
"heimdall": {
|
|
136
149
|
"description": "Heimdall — Simple, routine, deterministic tasks.",
|
|
137
150
|
"mode": "subagent",
|
|
138
|
-
"model": "minimax
|
|
151
|
+
"model": "openrouter/minimax-m2.7",
|
|
139
152
|
"color": "#10b981",
|
|
140
153
|
"permission": {
|
|
141
154
|
"read": "allow",
|
|
@@ -152,7 +165,7 @@
|
|
|
152
165
|
"hermod": {
|
|
153
166
|
"description": "Hermod — Git and GitHub operations specialist.",
|
|
154
167
|
"mode": "subagent",
|
|
155
|
-
"model": "minimax
|
|
168
|
+
"model": "openrouter/minimax-m2.7",
|
|
156
169
|
"color": "#06b6d4",
|
|
157
170
|
"permission": {
|
|
158
171
|
"read": "allow",
|
|
@@ -168,7 +181,7 @@
|
|
|
168
181
|
"thor": {
|
|
169
182
|
"description": "Thor — Medium-complexity tasks, strong and reliable.",
|
|
170
183
|
"mode": "subagent",
|
|
171
|
-
"model": "minimax
|
|
184
|
+
"model": "openrouter/minimax-m2.7",
|
|
172
185
|
"color": "#a855f7",
|
|
173
186
|
"permission": {
|
|
174
187
|
"read": "allow",
|
|
@@ -185,7 +198,7 @@
|
|
|
185
198
|
"baldr": {
|
|
186
199
|
"description": "Baldr — UI/UX design system specialist.",
|
|
187
200
|
"mode": "subagent",
|
|
188
|
-
"model": "minimax
|
|
201
|
+
"model": "openrouter/minimax-m2.7",
|
|
189
202
|
"color": "#ec4899",
|
|
190
203
|
"permission": {
|
|
191
204
|
"read": "allow",
|
|
@@ -202,7 +215,7 @@
|
|
|
202
215
|
"tyr": {
|
|
203
216
|
"description": "Tyr — Complex implementation, debugging, architecture.",
|
|
204
217
|
"mode": "subagent",
|
|
205
|
-
"model": "minimax
|
|
218
|
+
"model": "openrouter/minimax-m3",
|
|
206
219
|
"color": "#f59e0b",
|
|
207
220
|
"permission": {
|
|
208
221
|
"read": "allow",
|
|
@@ -236,7 +249,7 @@
|
|
|
236
249
|
"forseti": {
|
|
237
250
|
"description": "Forseti — Audits and corrects plans before execution.",
|
|
238
251
|
"mode": "subagent",
|
|
239
|
-
"model": "minimax
|
|
252
|
+
"model": "openrouter/minimax-m3",
|
|
240
253
|
"color": "#ef4444",
|
|
241
254
|
"permission": {
|
|
242
255
|
"read": "allow",
|
|
@@ -26,14 +26,14 @@ All subagents use Hindsight memory with **per-project banks**. Call `hindsight_l
|
|
|
26
26
|
|
|
27
27
|
| Agent | Model | Tier | Cost | When to Route |
|
|
28
28
|
|---|---|---|---|---|
|
|
29
|
-
| **Odin** ᛟ |
|
|
29
|
+
| **Odin** ᛟ | OpenRouter minimax-m3 | Router | $0.30/M · $1.20/M out | Primary entry point. Decomposes and dispatches. |
|
|
30
30
|
| **Mimir** ᛗ | DeepSeek V4 Flash | Free | **$0** | Deep codebase research, Semble-first exploration, docs analysis |
|
|
31
31
|
| **Heimdall** ᚹ | DeepSeek V4 Flash | Free | **$0** | Simple edits, file ops, mechanical CRUD, quick answers |
|
|
32
|
-
| **Hermod** ᚱ |
|
|
33
|
-
| **Thor** ᚦ |
|
|
34
|
-
| **Tyr** ᛏ |
|
|
32
|
+
| **Hermod** ᚱ | OpenRouter minimax-m2.7 | Mid | $0.30/M · $1.20/M out | Git ops: commit, push, PR, merge, rebase, branches, `gh` CLI |
|
|
33
|
+
| **Thor** ᚦ | OpenRouter minimax-m2.7 | Mid | $0.30/M · $1.20/M out | Moderate implementation, tests, debugging, refactoring |
|
|
34
|
+
| **Tyr** ᛏ | OpenRouter minimax-m3 | High | $0.30/M · $1.20/M out | Complex features, architecture, deep debugging, cross-cutting refactor |
|
|
35
35
|
| **Vidarr** ᛉ | GPT-5.5 | Ultra | ChatGPT sub | Last resort when Tyr fails or debugging is stuck |
|
|
36
|
-
| **Forseti** ᚨ |
|
|
36
|
+
| **Forseti** ᚨ | OpenRouter minimax-m3 | Gate | $0.30/M · $1.20/M out | Plan auditor — reviews Tyr/Vidarr plans before execution. `edit: deny`. |
|
|
37
37
|
| **Semble** | — | — | **$0** | MCP search tool, not an agent. Semble-first code search. |
|
|
38
38
|
|
|
39
39
|
## Odin Routing Rules
|
|
@@ -98,19 +98,19 @@ permission:
|
|
|
98
98
|
|
|
99
99
|
**Fix:** Check `~/.config/opencode/agents/<name>.md` for the `model:` field. Valid models:
|
|
100
100
|
- `opencode/deepseek-v4-flash-free` — free
|
|
101
|
-
- `minimax
|
|
102
|
-
- `minimax
|
|
101
|
+
- `openrouter/minimax-m2.7` — M2.7
|
|
102
|
+
- `openrouter/minimax-m3` — M3
|
|
103
103
|
- `openai/gpt-5.5` — GPT-5.5
|
|
104
104
|
|
|
105
|
-
###
|
|
105
|
+
### OpenRouter 404 Errors
|
|
106
106
|
|
|
107
|
-
**Symptoms:** 404 errors when calling
|
|
107
|
+
**Symptoms:** 404 errors when calling the OpenRouter-hosted MiniMax models.
|
|
108
108
|
|
|
109
|
-
**Cause:** A `baseURL
|
|
109
|
+
**Cause:** A `baseURL` was set on the `openrouter` provider in `opencode.json`, which conflicts with the `@openrouter/ai-sdk-provider`'s built-in URL construction.
|
|
110
110
|
|
|
111
|
-
**Fix:** Remove any `baseURL` from the
|
|
111
|
+
**Fix:** Remove any `baseURL` from the openrouter provider section. OpenRouter's URL is built into the SDK. Example fix:
|
|
112
112
|
```diff
|
|
113
|
-
- "baseURL": "https://
|
|
113
|
+
- "baseURL": "https://openrouter.ai/api/v1"
|
|
114
114
|
```
|
|
115
115
|
The provider uses the correct default URL internally.
|
|
116
116
|
|
|
@@ -132,7 +132,7 @@ The provider uses the correct default URL internally.
|
|
|
132
132
|
|
|
133
133
|
| File | Purpose |
|
|
134
134
|
|---|---|
|
|
135
|
-
| `~/.config/opencode/opencode.json` | Main config (no
|
|
135
|
+
| `~/.config/opencode/opencode.json` | Main config (no openrouter baseURL) |
|
|
136
136
|
| `~/.config/opencode/AGENTS.md` | Routing table and conventions |
|
|
137
137
|
| `~/.config/opencode/agents/odin.md` | Primary router agent |
|
|
138
138
|
| `~/.config/opencode/agents/mimir.md` | Research agent |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polderlabs/bizar",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.9.0",
|
|
4
4
|
"description": "Norse-pantheon multi-agent system for opencode — 13 agents across 4 cost tiers with cost-aware routing, plans, and a configurable agent harness.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/config/opencode.json
DELETED
|
@@ -1,338 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://opencode.ai/config.json",
|
|
3
|
-
"model": "minimax/MiniMax-M3",
|
|
4
|
-
"small_model": "minimax/MiniMax-M2.7",
|
|
5
|
-
"default_agent": "odin",
|
|
6
|
-
"permission": "allow",
|
|
7
|
-
"snapshot": false,
|
|
8
|
-
"mcp": {
|
|
9
|
-
"supabase": {
|
|
10
|
-
"type": "remote",
|
|
11
|
-
"url": "https://mcp.supabase.com/mcp",
|
|
12
|
-
"enabled": false
|
|
13
|
-
},
|
|
14
|
-
"hindsight": {
|
|
15
|
-
"type": "remote",
|
|
16
|
-
"url": "https://memory-api.polderlabs.io/mcp",
|
|
17
|
-
"enabled": false,
|
|
18
|
-
"oauth": false,
|
|
19
|
-
"headers": {
|
|
20
|
-
"Authorization": "Bearer __HINDSIGHT_BEARER_TOKEN__",
|
|
21
|
-
"Content-Type": "application/json"
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
"semble": {
|
|
25
|
-
"type": "local",
|
|
26
|
-
"command": [
|
|
27
|
-
"uvx",
|
|
28
|
-
"--from",
|
|
29
|
-
"semble[mcp]",
|
|
30
|
-
"semble"
|
|
31
|
-
],
|
|
32
|
-
"enabled": true
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
"plugin": [
|
|
36
|
-
["./plugins/bizar/index.ts", {
|
|
37
|
-
"loopThresholdWarn": 5,
|
|
38
|
-
"loopThresholdEscalate": 8,
|
|
39
|
-
"loopThresholdBlock": 12,
|
|
40
|
-
"loopWindowSize": 10
|
|
41
|
-
}]
|
|
42
|
-
],
|
|
43
|
-
"tools": {
|
|
44
|
-
"bizar_plan_action": true,
|
|
45
|
-
"bizar_get_plan_comments": true,
|
|
46
|
-
"bizar_wait_for_feedback": true,
|
|
47
|
-
"bizar_spawn_background": true,
|
|
48
|
-
"bizar_status": true,
|
|
49
|
-
"bizar_collect": true,
|
|
50
|
-
"bizar_kill": true
|
|
51
|
-
},
|
|
52
|
-
"agent": {
|
|
53
|
-
"odin": {
|
|
54
|
-
"description": "Odin — Pure router that delegates all work to subagents. Routes across Frigg (DeepSeek/Q&A), Vör (DeepSeek/clarify), Mimir (DeepSeek/research), Heimdall (DeepSeek/simple), Hermod (M2.7/git), Thor (M2.7/mid), Baldr (M2.7/design), Tyr (M3/top), Vidarr (GPT-5.5/ultra), Forseti (verifier/M3).",
|
|
55
|
-
"mode": "primary",
|
|
56
|
-
"model": "minimax/MiniMax-M3",
|
|
57
|
-
"color": "#6366f1",
|
|
58
|
-
"permission": {
|
|
59
|
-
"task": "allow",
|
|
60
|
-
"read": "allow",
|
|
61
|
-
"list": "allow",
|
|
62
|
-
"todowrite": "allow",
|
|
63
|
-
"webfetch": "allow",
|
|
64
|
-
"websearch": "allow",
|
|
65
|
-
"hindsight_recall": "allow",
|
|
66
|
-
"hindsight_retain": "allow",
|
|
67
|
-
"hindsight_list_banks": "allow",
|
|
68
|
-
"hindsight_create_bank": "allow"
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
"vor": {
|
|
72
|
-
"description": "Vör — The Questioning One. When a task is ambiguous, incomplete, or unclear, Vör asks the right clarifying questions before any work begins.",
|
|
73
|
-
"mode": "subagent",
|
|
74
|
-
"model": "opencode/deepseek-v4-flash-free",
|
|
75
|
-
"color": "#8b5cf6",
|
|
76
|
-
"permission": {
|
|
77
|
-
"read": "allow",
|
|
78
|
-
"list": "allow",
|
|
79
|
-
"question": "allow",
|
|
80
|
-
"hindsight_recall": "allow",
|
|
81
|
-
"hindsight_retain": "allow"
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
"frigg": {
|
|
85
|
-
"description": "Frigg — All-knowing Q&A agent. Read-only codebase questions and answers. Never edits, never writes, only answers.",
|
|
86
|
-
"mode": "primary",
|
|
87
|
-
"model": "opencode/deepseek-v4-flash-free",
|
|
88
|
-
"color": "#06b6d4",
|
|
89
|
-
"permission": {
|
|
90
|
-
"read": "allow",
|
|
91
|
-
"list": "allow",
|
|
92
|
-
"glob": "allow",
|
|
93
|
-
"grep": "allow",
|
|
94
|
-
"bash": "allow",
|
|
95
|
-
"webfetch": "allow",
|
|
96
|
-
"websearch": "allow",
|
|
97
|
-
"hindsight_recall": "allow",
|
|
98
|
-
"hindsight_retain": "allow",
|
|
99
|
-
"question": "allow"
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
"quick": {
|
|
103
|
-
"description": "Quick — Fast single-shot tasks. No delegation, no parallel streams. Use for small edits, mechanical changes, one-shot questions. Routes to no one.",
|
|
104
|
-
"mode": "primary",
|
|
105
|
-
"model": "minimax/MiniMax-M2.7",
|
|
106
|
-
"color": "#22d3ee",
|
|
107
|
-
"permission": {
|
|
108
|
-
"read": "allow",
|
|
109
|
-
"edit": "allow",
|
|
110
|
-
"write": "allow",
|
|
111
|
-
"bash": "allow",
|
|
112
|
-
"glob": "allow",
|
|
113
|
-
"grep": "allow",
|
|
114
|
-
"list": "allow",
|
|
115
|
-
"todowrite": "allow",
|
|
116
|
-
"webfetch": "allow",
|
|
117
|
-
"websearch": "allow",
|
|
118
|
-
"task": "deny",
|
|
119
|
-
"hindsight_recall": "allow",
|
|
120
|
-
"hindsight_retain": "allow"
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
"mimir": {
|
|
124
|
-
"description": "Mimir — Dedicated research and codebase exploration agent. Uses Semble as primary search tool. Deep codebase analysis, pattern discovery, and documentation research.",
|
|
125
|
-
"mode": "subagent",
|
|
126
|
-
"model": "opencode/deepseek-v4-flash-free",
|
|
127
|
-
"color": "#0ea5e9",
|
|
128
|
-
"permission": {
|
|
129
|
-
"read": "allow",
|
|
130
|
-
"write": "allow",
|
|
131
|
-
"edit": "allow",
|
|
132
|
-
"bash": "allow",
|
|
133
|
-
"glob": "allow",
|
|
134
|
-
"grep": "allow",
|
|
135
|
-
"list": "allow",
|
|
136
|
-
"webfetch": "allow",
|
|
137
|
-
"websearch": "allow",
|
|
138
|
-
"todowrite": "allow",
|
|
139
|
-
"hindsight_recall": "allow",
|
|
140
|
-
"hindsight_retain": "allow"
|
|
141
|
-
}
|
|
142
|
-
},
|
|
143
|
-
"heimdall": {
|
|
144
|
-
"description": "Heimdall — Simple, routine, and deterministic tasks using DeepSeek. Quick edits, mechanical work, file operations. The ever-watchful guardian.",
|
|
145
|
-
"mode": "subagent",
|
|
146
|
-
"model": "opencode/deepseek-v4-flash-free",
|
|
147
|
-
"color": "#10b981",
|
|
148
|
-
"permission": {
|
|
149
|
-
"read": "allow",
|
|
150
|
-
"edit": "allow",
|
|
151
|
-
"bash": "allow",
|
|
152
|
-
"glob": "allow",
|
|
153
|
-
"grep": "allow",
|
|
154
|
-
"list": "allow",
|
|
155
|
-
"todowrite": "allow",
|
|
156
|
-
"webfetch": "allow",
|
|
157
|
-
"websearch": "allow",
|
|
158
|
-
"hindsight_recall": "allow",
|
|
159
|
-
"hindsight_retain": "allow"
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
"hermod": {
|
|
163
|
-
"description": "Hermod — Git and GitHub operations specialist using MiniMax M2.7. Branching, commits, PRs, merge/rebase, conflict resolution, CI/CD, releases, gh CLI.",
|
|
164
|
-
"mode": "subagent",
|
|
165
|
-
"model": "minimax/MiniMax-M2.7",
|
|
166
|
-
"color": "#06b6d4",
|
|
167
|
-
"permission": {
|
|
168
|
-
"read": "allow",
|
|
169
|
-
"edit": "allow",
|
|
170
|
-
"bash": "allow",
|
|
171
|
-
"glob": "allow",
|
|
172
|
-
"grep": "allow",
|
|
173
|
-
"list": "allow",
|
|
174
|
-
"webfetch": "allow",
|
|
175
|
-
"websearch": "allow",
|
|
176
|
-
"hindsight_recall": "allow",
|
|
177
|
-
"hindsight_retain": "allow"
|
|
178
|
-
}
|
|
179
|
-
},
|
|
180
|
-
"thor": {
|
|
181
|
-
"description": "Thor — Handles medium-complexity tasks using MiniMax M2.7 from minimax.io. Strong and reliable, cheaper than Tyr but more capable than Heimdall.",
|
|
182
|
-
"mode": "subagent",
|
|
183
|
-
"model": "minimax/MiniMax-M2.7",
|
|
184
|
-
"color": "#a855f7",
|
|
185
|
-
"permission": {
|
|
186
|
-
"read": "allow",
|
|
187
|
-
"edit": "allow",
|
|
188
|
-
"bash": "allow",
|
|
189
|
-
"glob": "allow",
|
|
190
|
-
"grep": "allow",
|
|
191
|
-
"list": "allow",
|
|
192
|
-
"todowrite": "allow",
|
|
193
|
-
"webfetch": "allow",
|
|
194
|
-
"websearch": "allow",
|
|
195
|
-
"hindsight_recall": "allow",
|
|
196
|
-
"hindsight_retain": "allow"
|
|
197
|
-
}
|
|
198
|
-
},
|
|
199
|
-
"baldr": {
|
|
200
|
-
"description": "Baldr — UI/UX design system specialist. Creates DESIGN.md files using Google's design.md standard. Focuses on visual consistency, usability, accessibility, and design tokens.",
|
|
201
|
-
"mode": "subagent",
|
|
202
|
-
"model": "minimax/MiniMax-M2.7",
|
|
203
|
-
"color": "#ec4899",
|
|
204
|
-
"permission": {
|
|
205
|
-
"read": "allow",
|
|
206
|
-
"edit": "allow",
|
|
207
|
-
"bash": "allow",
|
|
208
|
-
"glob": "allow",
|
|
209
|
-
"grep": "allow",
|
|
210
|
-
"list": "allow",
|
|
211
|
-
"todowrite": "allow",
|
|
212
|
-
"webfetch": "allow",
|
|
213
|
-
"websearch": "allow",
|
|
214
|
-
"hindsight_recall": "allow",
|
|
215
|
-
"hindsight_retain": "allow"
|
|
216
|
-
}
|
|
217
|
-
},
|
|
218
|
-
"tyr": {
|
|
219
|
-
"description": "Tyr — Handles the most complex implementation, debugging, and architectural work using MiniMax M3 via minimax.io. Unmatched wisdom for the hardest problems.",
|
|
220
|
-
"mode": "subagent",
|
|
221
|
-
"model": "minimax/MiniMax-M3",
|
|
222
|
-
"color": "#f59e0b",
|
|
223
|
-
"permission": {
|
|
224
|
-
"read": "allow",
|
|
225
|
-
"edit": "allow",
|
|
226
|
-
"bash": "allow",
|
|
227
|
-
"glob": "allow",
|
|
228
|
-
"grep": "allow",
|
|
229
|
-
"list": "allow",
|
|
230
|
-
"todowrite": "allow",
|
|
231
|
-
"webfetch": "allow",
|
|
232
|
-
"websearch": "allow",
|
|
233
|
-
"hindsight_recall": "allow",
|
|
234
|
-
"hindsight_retain": "allow"
|
|
235
|
-
}
|
|
236
|
-
},
|
|
237
|
-
"vidarr": {
|
|
238
|
-
"description": "Vidarr — The ultimate fallback using GPT-5.5 via OpenAI ChatGPT subscription. For the hardest problems when debugging stalls or nothing else works. Use sparingly — highest cost.",
|
|
239
|
-
"mode": "subagent",
|
|
240
|
-
"model": "openai/gpt-5.5",
|
|
241
|
-
"color": "#dc2626",
|
|
242
|
-
"permission": {
|
|
243
|
-
"read": "allow",
|
|
244
|
-
"edit": "allow",
|
|
245
|
-
"bash": "allow",
|
|
246
|
-
"glob": "allow",
|
|
247
|
-
"grep": "allow",
|
|
248
|
-
"list": "allow",
|
|
249
|
-
"todowrite": "allow",
|
|
250
|
-
"webfetch": "allow",
|
|
251
|
-
"websearch": "allow",
|
|
252
|
-
"hindsight_recall": "allow",
|
|
253
|
-
"hindsight_retain": "allow"
|
|
254
|
-
}
|
|
255
|
-
},
|
|
256
|
-
"forseti": {
|
|
257
|
-
"description": "Forseti — Audits, criticizes, and corrects implementation plans before execution using MiniMax M3. No write permissions — review only.",
|
|
258
|
-
"mode": "subagent",
|
|
259
|
-
"model": "minimax/MiniMax-M3",
|
|
260
|
-
"color": "#ef4444",
|
|
261
|
-
"permission": {
|
|
262
|
-
"read": "allow",
|
|
263
|
-
"edit": "deny",
|
|
264
|
-
"bash": "allow",
|
|
265
|
-
"glob": "allow",
|
|
266
|
-
"grep": "allow",
|
|
267
|
-
"list": "allow",
|
|
268
|
-
"todowrite": "allow",
|
|
269
|
-
"question": "allow",
|
|
270
|
-
"webfetch": "allow",
|
|
271
|
-
"websearch": "allow",
|
|
272
|
-
"hindsight_recall": "allow",
|
|
273
|
-
"hindsight_retain": "allow"
|
|
274
|
-
}
|
|
275
|
-
},
|
|
276
|
-
"semble-search": {
|
|
277
|
-
"description": "Code search agent for exploring any codebase. Use for finding code by intent, locating implementations, understanding how something works.",
|
|
278
|
-
"mode": "subagent",
|
|
279
|
-
"model": "opencode/deepseek-v4-flash-free",
|
|
280
|
-
"color": "#0ea5e9",
|
|
281
|
-
"permission": {
|
|
282
|
-
"bash": "allow",
|
|
283
|
-
"read": "allow",
|
|
284
|
-
"glob": "allow",
|
|
285
|
-
"grep": "allow",
|
|
286
|
-
"list": "allow"
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
},
|
|
290
|
-
"command": {
|
|
291
|
-
"audit": {
|
|
292
|
-
"description": "Run bizar audit to scan agent configuration for security issues.",
|
|
293
|
-
"agent": "forseti",
|
|
294
|
-
"template": "commands/audit.md"
|
|
295
|
-
},
|
|
296
|
-
"explain": {
|
|
297
|
-
"description": "Route to @frigg for read-only codebase Q&A. She will explore the code and answer without making any changes.",
|
|
298
|
-
"agent": "frigg",
|
|
299
|
-
"template": "commands/explain.md"
|
|
300
|
-
},
|
|
301
|
-
"init": {
|
|
302
|
-
"description": "Run bizar init to detect project stack, install relevant skills, and create .bizar/PROJECT.md.",
|
|
303
|
-
"agent": "heimdall",
|
|
304
|
-
"template": "commands/init.md"
|
|
305
|
-
},
|
|
306
|
-
"learn": {
|
|
307
|
-
"description": "Route to @heimdall. Extract patterns from the current session and append to .bizar/AGENTS_SELF_IMPROVEMENT.md.",
|
|
308
|
-
"agent": "heimdall",
|
|
309
|
-
"template": "commands/learn.md"
|
|
310
|
-
},
|
|
311
|
-
"plan": {
|
|
312
|
-
"description": "Open the Bizar visual plan canvas or manage existing plans.",
|
|
313
|
-
"agent": "odin",
|
|
314
|
-
"template": "commands/plan.md"
|
|
315
|
-
},
|
|
316
|
-
"pr-review": {
|
|
317
|
-
"description": "Route to @hermod for PR review mode. Launches @mimir (research) and @forseti (audit) in parallel, then posts the combined review as a PR comment.",
|
|
318
|
-
"agent": "hermod",
|
|
319
|
-
"template": "commands/pr-review.md"
|
|
320
|
-
},
|
|
321
|
-
"tailscale-serve": {
|
|
322
|
-
"description": "Authenticate Tailscale Serve and expose a local port on your tailnet.",
|
|
323
|
-
"agent": "heimdall",
|
|
324
|
-
"template": "commands/tailscale-serve.md"
|
|
325
|
-
},
|
|
326
|
-
"visual-plan": {
|
|
327
|
-
"description": "Toggle the Bizar visual plan canvas on or off, or check its current status.",
|
|
328
|
-
"agent": "odin",
|
|
329
|
-
"template": "commands/visual-plan.md"
|
|
330
|
-
},
|
|
331
|
-
"bizar": {
|
|
332
|
-
"description": "Bizar Plugin Menu — route to the right Bizar action based on the user's request.",
|
|
333
|
-
"agent": "odin",
|
|
334
|
-
"template": "commands/bizar.md",
|
|
335
|
-
"arguments": "$ARGUMENTS"
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
}
|