@polderlabs/bizar
v3.9.0
Published
Norse-pantheon multi-agent system for opencode — 13 agents across 4 cost tiers with cost-aware routing, plans, and a configurable agent harness.
Maintainers
Readme
BizarHarness ᛟ
Norse-pantheon multi-agent system for opencode
12 agents across 4 cost tiers. Odin routes, subagents execute, Forseti audits.
npm install @polderlabs/bizar · npx bizar
Table of Contents
- The Pantheon
- Architecture
- Installation
- Provider Setup
- Skill Discovery
- Routing
- Self-Improvement
- Contributing
- License
ᛉ The Pantheon
┌─────────────┐
│ᛟ ODIN │
├─────────────┤
│Router (M3) │
└─────────────┘
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐
│ᛢ VÖR │ │ᛗ MIMIR │ │ᚹ HEIMDALL│ │ᚱ HERMOD │ │ᚦ THOR │ │ᛒ BALDR │ │ᛏ TYR │ │ᛉ VIDARR │
├─────────┤ ├─────────┤ ├─────────┤ ├─────────┤ ├─────────┤ ├─────────┤ ├─────────┤ ├──────────┤
│Clarify │ │Research │ │Simple │ │GitOps │ │Medium │ │Design │ │Complex │ │Last │
│DeepSeek │ │DeepSeek │ │DeepSeek │ │M2.7 │ │M2.7 │ │M2.7 │ │M3 │ │GPT-5.5 │
│FREE │ │FREE │ │FREE │ │$ │ │$ │ │$ │ │$$ │ │$$$ │
└─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └──────────┘
┌─────────────┐
│ᚨ FORSETI │
├─────────────┤
│Auditor (M3) │
│edit: deny │
└─────────────┘Generated by PlantUML ASCII art (
plantuml -utxt)
Agents
| Agent | Rune | Model | Cost | Role | |---|---|---|---|---| | Odin | ᛟ | OpenRouter minimax-m3 | $0.30/M · $1.20/M out | Primary router — never executes, only delegates | | Frigg | ᚠ | DeepSeek V4 Flash | Free | Read-only Q&A — ask questions, get answers, never modifies | | Vör | ᛢ | DeepSeek V4 Flash | Free | Clarifies ambiguous requests — asks questions until task is well-defined | | Mimir | ᛗ | DeepSeek V4 Flash | Free | Research & codebase exploration (Semble-first) | | Heimdall | ᚹ | DeepSeek V4 Flash | Free | Simple tasks, quick edits, file operations | | Hermod | ᚱ | OpenRouter minimax-m2.7 | $0.30/M · $1.20/M out | Git & GitHub operations (commit, PR, merge, rebase) | | Thor | ᚦ | OpenRouter minimax-m2.7 | $0.30/M · $1.20/M out | Moderate implementation, debugging, refactoring | | Baldr | ᛒ | OpenRouter minimax-m2.7 | $0.30/M · $1.20/M out | UI/UX design system (DESIGN.md plans, visual audits) | | Tyr | ᛏ | OpenRouter minimax-m3 | $0.30/M · $1.20/M out | Complex implementation, architecture, deep debugging | | Vidarr | ᛉ | GPT-5.5 | Subscription | Last resort — GPT-5.5 | | Forseti | ᚨ | OpenRouter minimax-m3 | $0.30/M · $1.20/M out | Adversarial plan reviewer (edit: deny, audit-only) |
⚙ Architecture
Request Flow
User Odin ᛟ Subagent Forseti ᚨ
│ │ │ │
│─Request─>│ │ │
│ │ │ │
│ │─ Decompose ────│ │
│ │ into parallel │ │
│ │ streams │ │
│ │ │ │
│ │─ task ────────>│ │
│ │─ task ────────>│ │
│ │ │ │
│ │ plan review (when complex)│
│ │──────────────────────────────>│
│ │ approve / changes required │
│ │<──────────────────────────────│
│ │ │ │
│ │<─── results ───│ │
│<─ synth ─│ │ │Key behaviors:
- Odin never executes work — stripped of
bash,glob,grep,edit,write,question - Vör handles ambiguity — Odin cannot ask questions; routes unclear requests to Vör
- Always parallel — every request splits into 2+ simultaneous
taskcalls - Implementation splits across Thor + Tyr frontend/backend, file split, impl+tests
- Forseti gates all Tier 4/5 work — Tyr and Vidarr plans audited before execution
- Hindsight memory — per-project banks with
bank_id: "<project-name>"; default bank for general knowledge only
🚀 Installation
Quick — npm (recommended)
Published on npmjs.com/package/bizar.
Run without installing:
npx bizarOr install globally:
npm install -g @polderlabs/bizar
bizarOr add to a project:
npm install @polderlabs/bizar
npx bizarThe interactive installer walks you through component selection, agent choice, install mode, API key setup, and auto-restarts opencode.
Source — git clone (contributors)
git clone [email protected]:DrB0rk/BizarHarness.git
cd BizarHarness
chmod +x install.sh
./install.shCopies agent definitions and config to ~/.config/opencode/, merges opencode.json, and prints next steps. Use this if you want to hack on BizarHarness itself.
Prerequisites
- opencode CLI installed and on
$PATH - A Hindsight API key for persistent memory
- Provider connections (via
/connectin opencode TUI) - RTK (recommended) — CLI proxy that reduces LLM token consumption by 60-90%
- Semble (recommended) — AI-powered code search (used by Mimir agent)
- Skills CLI (recommended) — Agent skill package manager (
npx skills add <owner/repo>)
RTK Setup
RTK (Rust Token Killer) filters and compresses command output before it reaches the LLM context. It saves ~80% on common operations like ls, git status, cargo test, and git diff.
Install:
# Homebrew (macOS)
brew install rtk
# Linux/macOS quick install
curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh
# Cargo
cargo install --git https://github.com/rtk-ai/rtkEnable for opencode:
rtk init -g --opencodeAfter setup, all Bash commands are transparently rewritten to their rtk equivalents — git status → rtk git status, cargo test → rtk cargo test. The LLM receives compact output, saving 60-90% on token costs.
Semble Setup
Semble provides AI-powered code search. It indexes your codebase and enables natural-language queries like "where is authentication handled" without relying on grep. The Mimir research agent uses Semble as its primary search tool.
The BizarHarness installer handles this automatically. To install manually:
# Install uv if not present
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install Semble with MCP support
uv tool install "semble[mcp]"Skills CLI Setup
Skills CLI is a package manager for AI agent skills — like npm for agent capabilities. Install skills from any public GitHub repo with npx skills add <owner/repo>.
The BizarHarness installer handles this automatically. To install manually:
npm install -g skillsThen discover and install skills:
npx skills find # Browse the skills directory
npx skills add <owner/repo> # Install a skill from GitHubAvailable for all major AI coding agents including OpenCode, Claude Code, Cursor, Copilot, Gemini, and more.
ᛉ Skill Discovery
BizarHarness agents proactively discover and install skills during execution using the Skills CLI. When Heimdall, Thor, Tyr, or Vidarr receives a task, they:
- Assess whether a skill might exist for the task (framework-specific work, domain tasks, tool usage)
- Check installed with
skills list --jsonto see what's already available - Install from known repos based on the task domain — e.g.,
skills add supabase/agent-skills --all -yfor database work,skills add vercel-labs/agent-skills --all -yfor frontend - Use the skill's instructions at
~/.opencode/skills/<name>/SKILL.mdvia theskilltool
This happens automatically and on-demand — agents self-discover capabilities without manual configuration.
Known Skill Repositories by Domain
| Domain | Repos |
|--------|-------|
| General (find-skills, skill-creator) | vercel-labs/skills |
| Frontend (React, a11y, web-design) | vercel-labs/agent-skills, shadcn/ui |
| Backend (Supabase, Postgres, auth) | supabase/agent-skills |
| Testing (TDD, E2E, Playwright) | mattpocock/skills, microsoft/playwright-cli |
| Design (frontend-design, UI/UX) | anthropics/skills, leonxlnx/taste-skill |
🔑 Provider Setup
After installation, run /connect in opencode to add API keys:
| Provider | Models | Auth |
|---|---|---|
| OpenCode Zen | opencode/deepseek-v4-flash-free | Free API key from opencode.ai — create account, get key, no charges |
| OpenRouter | openrouter/minimax-m2.7, openrouter/minimax-m3 | API key from openrouter.ai |
| OpenAI | openai/gpt-5.5 | ChatGPT subscription (OAuth) |
Then run /models to verify connectivity.
🧭 Routing
| Task Type | Agent | |---|---| | Ambiguous or incomplete requests | @vör (free, asks clarifying questions) | | File lookup, quick edits, boilerplate | @heimdall (free) | | Codebase research, documentation analysis | @mimir (free, Semble-first) | | Git commit, PR, merge, rebase, conflict resolution | @hermod (M2.7) | | Moderate implementation, debugging, code review | @thor (M2.7) | | Design systems, DESIGN.md, visual audits | @baldr (M2.7, plans only) | | Complex features, architecture, deep debugging | @tyr (M3, audited by @forseti) | | Stuck debugging, novel problems, postmortems | @vidarr (GPT-5.5, last resort) | | Plan audit, adversarial review | @forseti (M3, edit: deny) |
Cost escalation: Free → $Mid (M2.7) → $$High (M3) → $$$Ultra (GPT-5.5)
📝 Self-Improvement
Every task records what was learned to .bizar/AGENTS_SELF_IMPROVEMENT.md at the project root. Odin reads it at session start and applies past patterns to current routing.
### 2026-06-16: Fixed routing issue
- **Context**: Odin was self-handling instead of routing
- **Lesson**: Stripped bash/glob/grep/edit from Odin — forces delegation
- **Pattern**: Primary agents should never have executable tools
- **Agent**: heimdall📋 Plans
BizarHarness includes a built-in visual plan editor for drafting architectural decisions, feature designs, and project plans. Plans are stored as MDX source files with an auto-generated HTML viewer/editor.
# Create a new plan
bizar plan new my-feature
# Open an existing plan
bizar plan open my-feature
# List all plans
bizar plan list
# Export plan to standalone file
bizar plan export my-feature > my-feature.mdx
# Delete a plan (with confirmation)
bizar plan delete my-featurePlans are stored in plans/<slug>/ with four files:
| File | Purpose | In git? |
|---|---|---|
| plan.mdx | Source content (the plan) | ✓ Yes |
| plan.html | Viewer/editor (auto-generated) | ✗ No |
| comments.json | Section comments | ✗ No |
| meta.json | Title, status, author, timestamps | ✓ Yes |
The HTML viewer runs a tiny local HTTP server (localhost:4321) — no network, no sharing. Edit mode toggles all sections to textareas; comments appear in a side panel per section.
🤝 Contributing
PRs welcome. Please read CONTRIBUTING.md first.
Development
Development of BizarHarness uses a separate sandbox repo for Docker/dev tooling. See DrB0rk/BizarHarness-dev (private) for the local dev environment, including the Docker-based opencode sandbox used to test config and plugin changes without touching the system opencode install.
Note: When you push BizarHarness-dev to GitHub, update the URL above to match the actual repo location.
📄 License
MIT — see LICENSE.
