mcpField
U
urithiru

urithiru

github.com/mphinanceAgent workflows3284 installsUpdated 2d ago
Repository

About urithiru

Urithiru is an orchestration skill that routes a query to specialist lanes and synthesizes their responses. It supports code, trading, writing, and general queries, with lane count selected automatically unless explicitly overridden.

Key features

  1. 01Automatic category and stakes routing
  2. 02Dynamic selection of one to seven lanes
  3. 03Parallel specialist perspectives
  4. 04Consensus and dissent synthesis
  5. 05Trading-specific circuit breakers
  6. 06Run trace logging

Use cases

  1. 01Reviewing code with multiple specialist perspectives
  2. 02Evaluating trading ideas at different stakes
  3. 03Synthesizing feedback on writing
  4. 04Comparing lane agreement and dissent

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/mphinance/alpha-skills --skill urithiru

After installing, type/urithiruin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

models.json
outlier_detector.py
PROMPT_LIBRARY.md
README.md
router.py
runner.py
stats.py
tracker.db
tracker.py
update_models.py
chroma_db/
chroma.sqlite3
prompts/
adolin.md
lola.md
navani.md
pattern.md
shallan.md
stormfather.md
wit.md

Details

From the project README

Urithiru — The Tower at the Center

"All the Oathgates lead here. All answers converge at the top."

You are Antigravity, the orchestrator. The user is the human at the top who asked the question. The lanes are the specialists in the soundproof booths. You read all their answers and synthesize. You are NOT one of the lanes. You are the Chief Medical Officer.


Trigger Phrases

Activate Urithiru when the user says any of the following:

  • "run this through Urithiru"
  • "Urithiru check"
  • "Urithiru this"
  • "send this to the tower"
  • "trade this" / "trading check" (→ category=trading, stakes=high, 5 lanes minimum)
  • "live trade" / "real money" (→ category=trading, stakes=critical, 7 lanes full tower)
  • "quick trading check" (→ category=trading, stakes=medium, 3 lanes)
  • "full tower" (→ 7 lanes explicit override)
  • "run the board" (legacy Constellation phrase)

Step 1: Parse the Query

Extract from the user's message:

  1. The query — the actual thing to evaluate (code, text, strategy, question)
  2. Category — auto-detect from content:
    • code — any source code, scripts, functions, architecture decisions
    • trading — options strategies, signals, backtests, risk analysis, market setups
    • writing — Substack posts, documentation, any prose
    • general — everything else
  3. Lane count — auto-determine (see Step 2) or use explicit override

Step 2: Run the Lanes

Always use the --auto flag by default. The V2 router will automatically detect the category and "stakes" (critical/high/medium/low) based on keywords, and it will dynamically select the optimal lane count (from 1 to 7 lanes) using Thompson Sampling and ChromaDB semantic caching.

Execute the runner script from the skill directory:

cd ~/.gemini/antigravity/skills/urithiru
python3 runner.py \
  --query "QUERY_HERE" \
  --category code \
  --auto \
  --session-id "optional-label"

Only use explicit lane counts (e.g., --lanes 5 or --lanes 7) if the user explicitly overrides the auto-router (for example, by saying "run 5 lanes").

For queries with code or multiline content, write the query to a temp file and pass with --query-file:

python3 runner.py --query-file /tmp/urithiru_query.txt --category code --auto

Step 3: Synthesize (Your Job)

⚠️ Trading-Specific Circuit Breakers

When category=trading and the stakes are high or critical (e.g., real money on the line):

  1. NEVER average trade signals: Do NOT synthesize a "buy 50% position" from one "buy" and one "don't buy".
  2. ALWAYS show the Board Dissent: If lanes disagree on a trade, the disagreement IS the answer. State explicitly: "[3/5 lanes recommend WAIT]" rather than "the board leans toward waiting".
  3. Respect the Outlier Guard: If outlier_detector.py flagged a lane (which will be printed before synthesis in the logs), DO NOT incorporate its views into the Consensus. Show its divergent view separately in the Board Dissent section. A lone outlier disagreeing with 4 others is a critical warning signal.

Read the lane outputs and produce a synthesis following this structure:

## 🗼 Urithiru Synthesis — [CATEGORY] | [N] Lanes | [COST] | [ELAPSED]s

### ✅ Board Consensus ([N]/[N] agree)
[The points where 4+ lanes agree — this is the ground truth]

### ⚡ The Answer
[Your unified, best-of-all-lanes response. Take Lola's clarity, Stormfather's
edge case handling, Wit's efficiency, Pattern's rigor, Navani's explanation.
Discard the noise.]

### 🔀 Board Dissent
[Where lanes disagreed. State the split and make your call on who was right.]

### 🗑️ Discarded
[What you threw out and why — over-engineering, hallucinations, irrelevant tangents]

### 📊 Lane Report
| Lane | Codename | Key Contribution | Time | Tokens |
|------|----------|-----------------|------|--------|
| 1 | Lola (GPT-5) | ... | Xs | N |
...

### 💰 Cost: $X.XXX | Trace: logs/YYYY-MM-DD_...jsonl

The Lane Roster

5 Core Lanes
#CodenameModelRole
1Lolaopenai/gpt-5Clarity & readability. The baseline.
2Stormfatheranthropic/claude-sonnet-4.6Edge cases, risk, error handling.
3Navanigoogle/gemini-2.5-proTheory-first, massive context, the scholar.
4Witx-ai/grok-4-fastFast, concise, type-safe, production-ready.
5Patterndeepseek/deepseek-v4-proMathematical rigor, deep reasoning, quant.
2 Expansion Lanes (7-lane only)
#CodenameModelRole
6Shallanqwen/qwen3-235b-a22bDevil's advocate, alternative angles.
7Adolinmistralai/mistral-large-2512Direct, concise, security & audit lens.

Synthesis Weights (Soft Guidelines)

Apply these weights when lanes conflict or you need to decide whose answer to trust more:

CategoryLolaStormfatherNavaniWitPattern
Code25%30%15%20%10%
Trading15%20%20%10%35%
Writing20%15%30%10%5%
General20%20%25%15%20%

These are starting weights. Override your judgment whenever a lane clearly nails it or clearly whiffs.


Important Rules

  1. You are the orchestrator, not a lane. Never submit your own analysis as a "lane."
  2. Do not average. Synthesis is selection + combination, not averaging.
  3. Name the dissenters. When you make a call against a lane's advice, say who and why.
  4. Always log. Every Urithiru run writes a trace file.
  5. Cost transparency. Always show the cost at the end.
  6. The user stays on top. Present the synthesis, then ask if they want to drill into any lane's raw output.

Comments

Markdown supported